Mundarija:

2 Arduino: 5 qadam bilan RC samolyotini yaratish
2 Arduino: 5 qadam bilan RC samolyotini yaratish

Video: 2 Arduino: 5 qadam bilan RC samolyotini yaratish

Video: 2 Arduino: 5 qadam bilan RC samolyotini yaratish
Video: Controlling 2 DC Motors using ESP32 and L298N Motor driver 2024, Iyul
Anonim
2 Arduino bilan RC samolyotini yaratish
2 Arduino bilan RC samolyotini yaratish

Samolyot yasash - qiziqarli masala. Arduino -ni oldindan o'rnatilgan boshqaruv va qabul qilgichdan foydalansangiz, bu ayniqsa qiyin bo'ladi.

Bu darslikda men sizga qanday qilib ikkita arduino bilan radio boshqariladigan samolyot yasaganimni ko'rsataman.

1 -qadam: Sizga nima kerak

Sizga kerak bo'ladi:

- cho'tkasi bo'lmagan motor

- Dvigatel uchun eskiz

- 2 ta servo

- 1 dona arduino

- 1 arduino nano

- pervanel

- 2 nrf24l01 moduli

- 2 10uf kondansatör

- Ko'pik taxtasi

- Potansiyometr

- Joystik moduli

- 3 amperli 7,2 voltli niMH batareya

2 -qadam: Radio boshqaruv elementlari

Radio boshqaruvlari
Radio boshqaruvlari
Radio boshqaruvlari
Radio boshqaruvlari

Men samolyotni boshqarish uchun nrf24l01 dan foydalandim. Ushbu modul 1 km masofaga ega. Siz nrf24l01 ni qanday ulashni yuqorida ko'rsatilgan sxemada ko'rishingiz mumkin. Bundan tashqari, potentsial kuchlanish pasayishi uchun kondansatkichni er bilan 3,3 volt orasidagi lehim bilan ulashingiz kerak.

Keyingi qadam - tekshirgichdan ma'lumot olish. Men rulni va liftni boshqarish uchun joystikdan va motorni boshqarish uchun potentsiometrdan foydalandim. Siz potentsiometrni A0 piniga ulashingiz kerak, men joystikni A1 va A2 piniga uladim.

Endi biz qabul qilgichni yasashimiz kerak. Qabul qilgich uchun arduino nanosidan foydalandim, chunki u kichikroq. Siz nrf24l01 -ni ushbu adruino -ga ulashingiz kerak. Shundan so'ng siz servo va escni (dvigatel uchun elektron tezlikni boshqaruvchi) arduino -ga ulashingiz kerak. Men servolarni D4 va D5 piniga uladim, esc D9 piniga ulandi.

Bu men uzatuvchi uchun ishlatgan kod:

#qo'shish #qo'shish #qo'shish

RF24 radiosi (7, 8);

const bayt manzili [6] = "00001";

bo'sh o'rnatish () {

radio.begin (); radio.openWritingPipe (manzil); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); Serial.begin (9600); }

void loop () {

int s = analogRead (0); int x = analogRead (1); int y = analogRead (2); String str = String (lar); str += '|' + String (x) + '|' + Satr (y); Serial.println (str); const char matn [20]; str.toCharArray (matn, 20); Serial.println (matn); radio.write (& text, sizeof (text)); kechikish (10);

}

va bu erda qabul qiluvchining kodi:

#qo'shish #qo'shish #qo'shish #qo'shish

Servo qochish;

Xizmat ko'rsatish sxemasi; Xizmat ko'rsatish tizimi; RF24 radiosi (7, 8);

const bayt manzili [6] = "00001";

bo'sh o'rnatish () {

// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: radio.begin (); radio.openReadingPipe (0, manzil); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); esc.attach (9); sx.attach (4); sy.attach (5); esc.writeMicroseconds (1000); // signalni 1000 radiosiga ishga tushirish.startListening (); Serial.begin (9600); }

void loop () {

char matni [32] = ""; if (radio.available ()) {radio.read (& text, sizeof (text)); StrD transData = String (matn); //Serial.println(getValue(transData, '|', 1));

int s = getValue (transData, '|', 0).toInt ();

s = xarita (s, 0, 1023, 1000, 2000); // valni minimal va maksimal darajaga solish (agar kerak bo'lsa o'zgartirish) Serial.println (transData); esc.writeMikrosaniyalar (lar); // valdan foydalanish uchun signal sifatida int intVxVal = getValue (transData, '|', 1).toInt (); int syVal = getValue (transData, '|', 2).toInt ();

sx.write (xarita (sxVal, 0, 1023, 0, 180));

sy.write (xarita (syVal, 0, 1023, 0, 180));

}

}

String getValue (String ma'lumotlari, char ajratuvchi, int indeksi)

{int topildi = 0; int strIndex = {0, -1}; int maxIndex = data.length ()-1;

for (int i = 0; i <= maxIndex && found <= index; i ++) {if (data.charAt (i) == ajratuvchi || i == maxIndex) {topilgan ++; strIndex [0] = strIndex [1] +1; strIndex [1] = (i == maxIndex)? i+1: i; }}

qaytish topildi> indeks? data.substring (strIndex [0], strIndex [1]): "";

}

3 -qadam: Fusualage va stabalizatorlar

Fusualage va Stabalizatorlar
Fusualage va Stabalizatorlar

Endi siz elektron qurilmangizni o'rnatdingiz, sizga elektronikani qo'yish uchun samolyot kerak. Men ko'pikli taxtadan foydalandim, chunki u engil va nisbatan kuchli. Fusualge - bu dumga qarab ingichka bo'ladigan to'rtburchak. Aerodinamika uchun fusualge unchalik muhim emas. Eng muhimi shundaki, hamma narsa unga mos keladi, shu bilan birga uni iloji boricha kichikroq va engil qiladi.

Gorizontal va vertikal stabilizatorni yasash oson. Yagona muhim narsa shundaki, sizning stabalizatorlaringiz juda to'g'ri. Stabalizatorlar samolyotni barqaror saqlash uchun javobgardir. Stabalizatorlaringiz tekis bo'lmaganda, sizning samolyotingiz beqaror bo'ladi.

4 -qadam: Qanotlar

Qanotlar
Qanotlar

Qanotlar, ehtimol, eng muhim narsa, siz liftni yaratish uchun plyonka yaratishingiz kerak. Yuqoridagi rasmda siz qanday qilib men o'z qanotimni yasaganimni ko'rishingiz mumkin.

Eng muhimi shundaki, samolyotning tortishish markazi plyonkaning eng baland nuqtasi atrofida joylashgan. Shunday qilib, samolyot barqaror bo'ladi.

5 -qadam: Hammasini bir joyga to'plash

Hamma narsani birlashtirish
Hamma narsani birlashtirish
Hamma narsani birlashtirish
Hamma narsani birlashtirish
Hamma narsani birlashtirish
Hamma narsani birlashtirish

Endi biz barcha qismlarni tayyorlaganimiz uchun, biz hammasini birlashtirishimiz kerak.

Servo stablayzerlarga ulangan bo'lishi kerak. Buni boshqaruv tayoqchalari yordamida amalga oshirish mumkin (yuqoridagi rasmga qarang)

Dvigatelni ko'pik bo'lagiga solib, samolyot oldiga yopishtirish kerak (yoki elastik tasmalardan foydalaning, shunda kerak bo'lganda olib tashlashingiz mumkin).

dvigatelni qo'yish uchun sizga pervanel kerak, bu pervanelning o'lchami dvigatelga bog'liq. Optimal o'lchamni hisoblash juda murakkab. Ammo umumiy qoida shundaki, dvigatel qanchalik kuchli bo'lsa, pervanesi shunchalik katta bo'ladi.

Batareya uchun lipo batareyasini ishlatish tavsiya etiladi. Biroq, agar siz portlashni xohlamasangiz, bu batareyalarga maxsus zaryadlovchi kerak bo'ladi. Shuning uchun men nimh batareyasini ishlatardim, bu og'irroq, lekin ulardan foydalanish osonroq va arzonroq.

Tavsiya: