Cuprins:

Crearea unui plan Rc cu 2 Arduino: 5 pași
Crearea unui plan Rc cu 2 Arduino: 5 pași

Video: Crearea unui plan Rc cu 2 Arduino: 5 pași

Video: Crearea unui plan Rc cu 2 Arduino: 5 pași
Video: How to use 2 channel relay to control AC and DC loads in Arduino 2024, Noiembrie
Anonim
Crearea unui plan Rc cu 2 Arduino
Crearea unui plan Rc cu 2 Arduino

A face un avion este o provocare distractivă. Devine deosebit de dificil când folosești arduino în loc de un controler și un receptor pre-construiți.

În acest tutorial vă voi arăta cum am făcut un avion controlat radio cu două arduino.

Pasul 1: De ce veți avea nevoie

Vei avea nevoie:

- Un motor fără perii

- Un esc pentru motor

- 2 servome

- 1 arduino uno

- 1 arduino nano

- O elice

- 2 module nrf24l01

- 2 condensatori 10uf

- Placa de spuma

- Un potențiometru

- Un modul joystick

- O baterie NiMH de 3 amp 7,2 volți

Pasul 2: comenzile radio

Comenzile radio
Comenzile radio
Comenzile radio
Comenzile radio

Am folosit un nrf24l01 pentru a controla avionul. Acest modul are o autonomie de 1 km. Puteți vedea cum să conectați nrf24l01 în schema de mai sus. De asemenea, trebuie să lipiți condensatorul între pământ și 3,3 volți pentru a acumula potențiale căderi de tensiune.

Următorul pas este să obțineți intrări de la controler. Am folosit un joystick pentru comenzile cârmei și liftului și un potențiometru pentru controlul motorului. Trebuie să conectați potențiometrul la pinul A0, eu am conectat joystick-ul la pinul A1 și A2.

Acum trebuie să facem receptorul. Am folosit un nano arduino pentru receptor, deoarece este mai mic. Trebuie să conectați nrf24l01 și la acest adruino. După aceea, trebuie să conectați servo-urile și esc (regulatorul electronic de viteză pentru motor) la arduino. M-am conectat la servo la pinul D4 și D5, esc a fost conectat la pinul D9.

Acesta este codul pe care l-am folosit pentru transmițător:

#include #include #include

Radio RF24 (7, 8);

adresa de octet const [6] = "00001";

configurare nulă () {

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

bucla nulă () {

int s = analogRead (0); int x = analogRead (1); int y = analogRead (2); String str = String (s); str + = '|' + Șir (x) + '|' + Șir (y); Serial.println (str); text const char [20]; str.toCharArray (text, 20); Serial.println (text); radio.write (& text, sizeof (text)); întârziere (10);

}

și iată codul receptorului:

#include #include #include #include

Servo esc;

Servo sx; Servo sy; Radio RF24 (7, 8);

adresa de octet const [6] = "00001";

configurare nulă () {

// puneți codul de configurare aici, pentru a rula o dată: radio.begin (); radio.openReadingPipe (0, adresa); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); esc.attach (9); sx.attach (4); sy.attach (5); esc.writeMicroseconds (1000); // inițializați semnalul la 1000 radio.startListening (); Serial.begin (9600); }

bucla nulă () {

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

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

s = hartă (s, 0, 1023, 1000, 2000); // mapare val la minim și maxim (Schimbați dacă este necesar) Serial.println (transData); esc.writeMicroseconds (s); // folosind val ca semnal pentru esc int sxVal = getValue (transData, '|', 1).toInt (); int syVal = getValue (transData, '|', 2).toInt ();

sx.write (hartă (sxVal, 0, 1023, 0, 180));

sy.write (hartă (syVal, 0, 1023, 0, 180));

}

}

String getValue (Date șir, separator de caractere, index int)

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

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

returnare găsită> index? data.substring (strIndex [0], strIndex [1]): "";

}

Pasul 3: Obișnuitul și Stabalizerele

The Fusualage and Stabalizers
The Fusualage and Stabalizers

Acum că ați configurat electronica, aveți nevoie de un avion pentru a pune electronica. Am folosit foamboard, deoarece este ușor și relativ puternic. Fuzualul este doar un dreptunghi care se subțiază spre coadă. Fuzualul nu este atât de important pentru aerodinamică. Cel mai important lucru este că totul se va potrivi în el, păstrându-l, de asemenea, cât mai mic și mai ușor posibil.

Stabalizorul orizontal și vertical sunt ușor de realizat. Singurul lucru important este că balansierele dvs. sunt perfect drepte. Stabalizatorii sunt responsabili pentru menținerea avionului stabil. Când balansierele dvs. nu sunt drepte, avionul dvs. va fi instabil.

Pasul 4: Aripile

Aripile
Aripile

Aripile sunt probabil cel mai important lucru, trebuie să creați un profil aerian pentru a genera ridicarea. În imaginea de mai sus puteți vedea cum mi-am făcut volanul.

Cel mai important lucru este că centrul de greutate al avionului este în jurul celui mai înalt punct al planului aerian. în acest fel avionul va fi stabil.

Pasul 5: Puneți totul laolaltă

Punând totul laolaltă
Punând totul laolaltă
Punând totul laolaltă
Punând totul laolaltă
Punând totul laolaltă
Punând totul laolaltă

Acum că am făcut toate părțile, trebuie să le punem pe toate.

Servo-ul trebuie conectat la stablaizer. acest lucru se poate face cu tije de control (a se vedea imaginea de mai sus)

Motorul trebuie pus pe o bucată de spumă și lipit în fața avionului (sau folosiți benzi elastice, astfel încât să îl puteți scoate atunci când este necesar).

aveți nevoie de o elice pentru a pune motorul, dimensiunea acestei elice depinde de motor. Este foarte complicat pentru a calcula dimensiunea optimă. Dar o regulă generală este că cu cât motorul este mai puternic, cu atât elicea poate fi mai mare.

Pentru baterie se recomandă utilizarea bateriilor lipo. cu toate acestea, aceste baterii au nevoie de un încărcător special dacă nu doriți să explodeze. De aceea am folosit bateriile nimh, acestea sunt mai grele, dar mai ușor și mai ieftine de utilizat.

Recomandat: