Cuprins:

Drona Arduino cu GPS: 16 pași
Drona Arduino cu GPS: 16 pași

Video: Drona Arduino cu GPS: 16 pași

Video: Drona Arduino cu GPS: 16 pași
Video: Arduino Drone Flight Controller - Multiwii | With Smartphone Control 2024, Iulie
Anonim
Drona Arduino cu GPS
Drona Arduino cu GPS

Ne-am propus să construim o dronă quadcopter cu vizualizare la prima persoană (FPV), controlată și stabilizată de Arduino, cu revenire la casă, să mergem la coordonare și să menținem funcțiile GPS. Am presupus naiv că combinarea programelor Arduino existente și cablarea pentru un quadcopter fără GPS cu cele ale unui sistem de transmisie GPS ar fi relativ simplă și că am putea trece rapid la sarcini de programare mai complexe. Cu toate acestea, a trebuit să se schimbe o sumă surprinzătoare pentru a realiza aceste două proiecte și, astfel, am ajuns să facem un quadcopter FPV cu GPS, fără funcționalități adăugate.

Am inclus instrucțiuni despre cum să replicăm produsul nostru dacă sunteți mulțumit de quadcopterul mai limitat.

De asemenea, am inclus toți pașii pe care i-am făcut în drumul către un quadcopter mai autonom. Dacă vă simțiți confortabil săpând adânc în Arduino sau aveți deja o mulțime de experiență Arduino și doriți să luați punctul nostru de oprire ca punct de salt pentru propria dvs. explorare, atunci acest instructiv este și pentru dvs.

Acesta este un proiect minunat pentru a învăța ceva despre construirea și codificarea pentru Arduino, indiferent de câtă experiență ai. De asemenea, sperăm că veți pleca cu o dronă.

Configurarea este după cum urmează:

În lista materialelor, piesele fără asterisc sunt necesare pentru ambele obiective.

Părțile cu un singur asterisc sunt necesare numai pentru proiectul neterminat al unui quadcopter mai autonom.

Părțile cu două asteriscuri sunt necesare numai pentru quadcopterul mai limitat.

Pașii comuni pentru ambele proiecte nu au marcaj după titlu

Pașii necesari doar pentru quadcopterul non-autonom mai limitat au „(Uno)” după titlu.

Pașii necesari numai pentru quadcopterul autonom în curs au „(Mega)” după titlu.

Pentru a construi un quad bazat pe Uno, urmați pașii în ordine, sărind orice pași cu „(Mega)” după titlu.

Pentru a lucra pe quad-ul bazat pe Mega, urmați pașii în ordine, sărind orice pași cu „(Uno)” după titlu.

Pasul 1: Strângeți materiale

Componente:

1) Un cadru quadcopter (cadrul exact probabil nu contează) (15 USD)

2) Patru motoare 2830, 900kV fără perii (sau similare) și patru pachete de accesorii de montare (4x 6 USD + 4x 4 USD = 40 USD în total)

3) Patru ESC UBEC 20A (4x 10 USD = 40 USD în total)

4) O placă de distribuție a energiei electrice (cu conexiune XT-60) (20 USD)

5) O baterie LiPo de 3s, 3000-5000mAh cu conexiune XT-60 (3000mAh corespunde cu aproximativ 20 de minute de zbor) (25 USD)

6) O mulțime de elice (acestea se rup foarte mult) (10 USD)

7) Un Arduino Mega 2560 * (40 USD)

8) Un Arduino Uno R3 (20 USD)

9) Un al doilea Arduino Uno R3 ** (20 USD)

10) Un Arduino Ultimate GPS Shield (nu aveți nevoie de scut, dar utilizarea unui alt GPS va necesita cabluri diferite) (45 USD)

11) Două transmițătoare wireless HC-12 (2x 5 USD = 10 USD)

12) Un giroscop / accelerometru MPU- 6050, 6DOF (grad de libertate) (5 dolari)

13) O pereche de transmițător / receptor 9 canale 2.4 x 2.4 GHz, 9 canale (70 USD)

14) Anteturi feminine (stivuibile) Arduino (20 USD)

15) Încărcător LiPo Battery Balance (și adaptor de 12V DC, nu este inclus) (20 USD)

17) Cablu adaptor USB A la B de la tată la tată (5 USD)

17) Bandă adezivă

18) Tuburi termocontractabile

Echipament:

1) Un fier de lipit

2) lipit

3) Epoxidice din plastic

4) Brichetă

5) Dispozitiv de decupare a firelor

6) Un set de chei Allen

Componente opționale pentru transmisia video FPV în timp real (vizualizare la prima persoană):

1) O cameră FPV mică (aceasta se leagă de cea destul de ieftină și de proastă calitate pe care am folosit-o, puteți înlocui una mai bună) (20 USD)

2) Pereche transmițător / receptor de 5,6 GHz (832 modele utilizate) (30 USD)

3) Baterie LiPo de 500mAh, 3s (11,1V) (7 USD) (am folosit-o cu o priză pentru banane, dar vă recomandăm retrospectiv să utilizați bateria conectată, deoarece are un conector compatibil cu transmițătorul TS832 și, prin urmare, nu ' nu necesită lipire).

4) 2 baterie LiPo de 1000 mAh 2s (7.4V) sau similară (5 USD). Numărul de mAh nu este critic atâta timp cât depășește aproximativ 1000mAh. Aceeași afirmație ca mai sus se aplică tipului de fișă pentru una dintre cele două baterii. Celălalt va fi utilizat pentru alimentarea monitorului, deci va trebui să lipiți indiferent de ce. Probabil cel mai bine este să obțineți unul cu o mufă XT-60 pentru asta (asta am făcut). Un link pentru acest tip este aici: 1000mAh 2s (7.4V) LiPo cu mufă XT-60

5) Monitor LCD (opțional) (15 USD). De asemenea, puteți utiliza un adaptor AV-USB și un software de copiere DVD pentru a vizualiza direct pe un laptop. Acest lucru oferă, de asemenea, opțiunea de a înregistra videoclipuri și fotografii, mai degrabă decât să le vizualizați în timp real.

6) Dacă ați cumpărat baterii cu prize diferite de cele conectate, este posibil să aveți nevoie de adaptoare adecvate. Indiferent, obțineți un adaptor corespunzător fișei pentru bateria care alimentează monitorul. Iată de unde să obțineți adaptoare XT-60

* = numai pentru un proiect mai avansat

** = numai pentru un proiect mai de bază

Cheltuieli:

Dacă începeți de la zero (dar cu un fier de lipit etc.), nu există un sistem FPV: ~ 370 USD

Dacă aveți deja un transmițător / receptor RC, încărcător de baterie LiPo și baterie LiPo: ~ 260 USD

Costul sistemului FPV: 80 USD

Pasul 2: Asamblați cadrul

Asamblați cadrul
Asamblați cadrul
Asamblați cadrul
Asamblați cadrul
Asamblați cadrul
Asamblați cadrul

Acest pas este destul de simplu, mai ales dacă se utilizează același cadru prefabricat pe care l-am folosit. Pur și simplu utilizați șuruburile incluse și puneți cadrul împreună așa cum se arată, folosind o cheie Allen sau o șurubelniță adecvată pentru cadrul dvs. Asigurați-vă că brațele de aceeași culoare sunt adiacente unele cu altele (ca în această imagine), astfel încât drona să aibă fața și spatele clare. Mai mult, asigurați-vă că partea lungă a plăcii inferioare iese în afară între brațele de culoare opusă. Acest lucru devine important mai târziu.

Pasul 3: Montați motoarele și conectați Escs

Montați motoare și conectați Escs
Montați motoare și conectați Escs
Montați motoarele și conectați Escs
Montați motoarele și conectați Escs
Montați motoare și conectați Escs
Montați motoare și conectați Escs
Montați motoarele și conectați Escs
Montați motoarele și conectați Escs

Acum că cadrul este asamblat, scoateți cele patru motoare și cele patru accesorii de montare. Puteți utiliza fie șuruburi incluse în seturile de montare, fie șuruburi rămase de pe cadrul quadcopter pentru a înșuruba motoarele și suporturile în poziție. Dacă cumpărați suporturile pe care le-am legat, veți primi două componente suplimentare, ilustrate mai sus. Am avut performanțe motorii bune fără aceste piese, așa că le-am lăsat pentru a reduce greutatea.

Odată ce motoarele sunt înșurubate în poziție, epoxidizați placa de distribuție a energiei (PDB) în poziția superioară a plăcii superioare a cadrului quadcopter. Asigurați-vă că îl orientați astfel încât conectorul bateriei să fie orientat între brațele de culori diferite (paralel cu una dintre porțiunile lungi ale plăcii inferioare), ca în imaginea de mai sus.

De asemenea, ar trebui să aveți patru conuri de elice cu filete de sex feminin. Lasă-le deoparte pentru moment.

Acum scoateți ESC-urile. O parte va avea două fire care ies din ea, una roșie și una neagră. Pentru fiecare dintre cele patru ESC-uri, introduceți firul roșu în conectorul pozitiv de pe PDB și negrul în negativ. Rețineți că, dacă utilizați un PDB diferit, acest pas poate necesita lipire. Acum conectați fiecare dintre cele trei fire care ies din fiecare motor. În acest moment, nu contează ce fir ESC conectați cu ce fir motor (atâta timp cât conectați toate firele unui ESC cu același motor!) Veți corecta orice polaritate inversă mai târziu. Nu este periculos dacă firele sunt inversate; are ca rezultat doar rotirea motorului înapoi.

Pasul 4: Pregătiți Arduino și Shield

Pregătește Arduino și Shield
Pregătește Arduino și Shield
Pregătește Arduino și Shield
Pregătește Arduino și Shield

O notă înainte de a începe

În primul rând, puteți alege să lipiți direct toate firele împreună. Cu toate acestea, am considerat că este neprețuit să folosim anteturile pin, deoarece oferă o mulțime de flexibilitate pentru depanarea și adaptarea proiectului. Ceea ce urmează este o descriere a ceea ce am făcut (și recomandăm să facă alții).

Pregătește Arduino și scut

Scoateți-vă Arduino Mega (sau un Uno dacă faceți un quad non-autonom), scutul GPS și antetele stivuibile. Lipiți capătul tată al antetelor stivuibile pe locul scutului GPS, în rândurile de știfturi paralele cu știfturile pre-lipite, așa cum se arată în imaginea de mai sus. De asemenea, lipiți în anteturi stivuibile pe rândul de pini etichetat 3V, CD, … RX. Utilizați un tăietor de sârmă pentru a tăia excesul de lungime pe știfturile care ies în jos. Plasați anteturi masculine cu vârfuri îndoite în toate aceste anteturi stivuibile. Acestea sunt cele la care veți lipi firele pentru restul componentelor.

Atașați scutul GPS în partea de sus, asigurându-vă că pinii se potrivesc cu cei de pe Arduino (Mega sau Uno). Rețineți că, dacă utilizați Mega, o mulțime de Arduino va fi în continuare expusă după ce ați pus scutul în poziție.

Așezați bandă electrică pe partea de jos a Arduino, acoperind toate lipiturile expuse, pentru a preveni orice scurtcircuit pe măsură ce Arduino se sprijină pe PDB.

Pasul 5: conectați componentele împreună și plasați bateria (Uno)

Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)
Conectați componentele împreună și plasați bateria (Uno)

Schema de mai sus este aproape identică cu cea realizată de Joop Brooking, deoarece ne-am bazat puternic designul pe al său.

* Rețineți că această schemă presupune un ecran GPS montat corespunzător și, prin urmare, GPS-ul nu apare în această schemă.

Schema de mai sus a fost pregătită folosind software-ul Fritzing, care este foarte recomandat în special pentru schemele care implică Arduino. În cea mai mare parte am folosit părți generice care pot fi editate flexibil, deoarece piesele noastre nu erau în general în biblioteca de piese inclusă de Fritzing.

-Asigurați-vă că comutatorul de pe ecranul GPS este comutat pe „Scriere directă”.

-Conectați acum toate componentele conform schemei de mai sus (cu excepția bateriei!) (Notă importantă despre firele de date GPS de mai jos).

-Rețineți că ați conectat deja ESC-urile la motoare și PDB, astfel încât această parte a schemei este terminată.

-În plus, rețineți că datele GPS (fire galbene) ies din pinii 0 și 1 de pe Arduino (nu pinii Tx și Rx separați de pe GPS). Acest lucru se datorează faptului că configurat la „Scriere directă” (vezi mai jos), GPS-ul iese direct la porturile seriale hardware ale unu (pinii 0 și 1). Acest lucru este prezentat cel mai clar în a doua imagine de mai sus a cablajului complet.

-Când conectați receptorul RC, consultați imaginea de mai sus. Observați că firele de date intră în rândul de sus, în timp ce Vin și Gnd se află pe al doilea și al treilea rând, respectiv (și pe coloana de pini de la a doua la cea mai îndepărtată).

-Pentru a face cablajul pentru transmițătorul HC-12, receptorul RC și 5Vout de la PDB la Vinul Arduino am folosit anteturi stivuibile, în timp ce pentru giroscop am lipit firele direct pe placă și folosind tuburi termocontractabile în jurul lipit. Puteți alege să faceți oricare dintre componente, cu toate acestea este recomandată lipirea directă la giroscop, deoarece economisește spațiu, ceea ce face ca partea mică să fie mai ușor de montat. Folosirea anteturilor este o cantitate mai mică de lucru înainte, dar oferă mai multă flexibilitate. Lipirea directă a firelor este o conexiune mai sigură pe termen lung, totuși înseamnă că utilizarea acelei componente pe un alt proiect este mai dificilă. Rețineți că, dacă ați folosit anteturi pe ecranul GPS, aveți în continuare o cantitate decentă de flexibilitate, indiferent de ceea ce faceți. În mod crucial, asigurați-vă că firele de date GPS de la pinii 0 și 1 de pe GPS sunt ușor de îndepărtat și înlocuit.

La sfârșitul proiectului nostru, nu am reușit să proiectăm o metodă bună pentru atașarea tuturor componentelor noastre la cadru. Datorită presiunii de timp din clasa noastră, soluțiile noastre se învârteau, în general, în jurul benzii de spumă pe două fețe, a benzii pentru conducte, a benzii electrice și a fermoarelor. Vă recomandăm cu tărie să petreceți mai mult timp proiectând structuri de montare stabile dacă intenționați să fie un proiect pe termen lung. Cu toate acestea, dacă doriți doar să creați un prototip rapid, atunci nu ezitați să urmați procesul nostru. Cu toate acestea, asigurați-vă că giroscopul este montat în siguranță. Acesta este singurul mod în care Arduino știe ce face quadcopterul, deci dacă se deplasează în zbor, veți avea probleme.

Cu totul conectat și în poziție, luați bateria LiPo și glisați-o între plăcile superioare și inferioare ale cadrului. Asigurați-vă că conectorul său indică aceeași direcție ca și conectorul PDB și că se pot conecta de fapt. Am folosit bandă adezivă pentru a menține bateria în poziție (banda de velcro funcționează și ea, dar este mai enervantă decât banda adezivă). Banda adezivă funcționează bine, deoarece se poate înlocui cu ușurință bateria sau o poate scoate pentru încărcare. Cu toate acestea, trebuie să fiți sigur că lipiți bateria strâns, ca și cum bateria se deplasează în timpul zborului, acest lucru ar putea afecta serios echilibrul dronei. NU conectați încă bateria la PDB.

Pasul 6: conectați componentele împreună și plasați bateria (Mega)

Conectați componentele împreună și plasați bateria (Mega)
Conectați componentele împreună și plasați bateria (Mega)
Conectați componentele și puneți bateria (Mega)
Conectați componentele și puneți bateria (Mega)
Conectați componentele împreună și plasați bateria (Mega)
Conectați componentele împreună și plasați bateria (Mega)

Schema de mai sus a fost pregătită folosind software-ul Fritzing, care este foarte recomandat în special pentru schemele care implică arduino. În cea mai mare parte am folosit părți generice, deoarece piesele noastre nu erau în general în biblioteca de piese inclusă de Fritzing.

- Rețineți că această schemă presupune un ecran GPS montat corespunzător și, prin urmare, GPS-ul nu apare în această schemă.

-Fixați comutatorul de pe Mega 2560 pe „Soft Serial”.

-Conectați acum toate componentele conform schemei de mai sus (cu excepția bateriei!)

-Rețineți că ați conectat deja ESC-urile la motoare și PDB, astfel încât această parte a schemei este terminată.

-Cablurile jumper de la pinul 8 la Rx și pinul 7 la Tx sunt acolo deoarece (spre deosebire de Uno, pentru care a fost realizat acest scut), mega nu are un receptor-transmițător asincron universal (UART) pe pinii 7 și 8, și astfel trebuie să folosim pinii seriali hardware. Există mai multe motive pentru care avem nevoie de pin-uri hardware, discutate mai târziu.

-Când conectați receptorul RC, consultați imaginea de mai sus. Observați că firele de date intră în rândul de sus, în timp ce Vin și Gnd se află pe al doilea și al treilea rând, respectiv (și pe coloana de pini de la a doua la cea mai îndepărtată).

-Pentru a face cablajul pentru transmițătorul HC-12, receptorul RC și 5Vout de la PDB la Vinul Arduino am folosit anteturi stivuibile, în timp ce pentru giroscop am lipit firele direct și folosind tuburi termocontractabile în jurul lipirii. Puteți alege să faceți oricare dintre componente. Utilizarea anteturilor este o cantitate mică de lucru mai mare în față, dar oferă mai multă flexibilitate. Lipirea directă a firelor este o conexiune mai sigură pe termen lung, dar înseamnă că utilizarea acelei componente pe un alt proiect este mai dificilă. Rețineți că, dacă ați folosit anteturi pe ecranul GPS, aveți în continuare o cantitate decentă de flexibilitate, indiferent de ceea ce faceți.

La sfârșitul proiectului nostru, nu am reușit să proiectăm o metodă bună pentru atașarea tuturor componentelor noastre la cadru. Datorită presiunii de timp din clasa noastră, soluțiile noastre se învârteau, în general, în jurul benzii de spumă pe două fețe, a benzii pentru conducte, a benzii electrice și a fermoarelor. Vă recomandăm cu tărie să petreceți mai mult timp proiectând structuri de montare stabile dacă intenționați să fie un proiect pe termen lung. Cu toate acestea, dacă doriți doar să realizați un prototip rapid, nu ezitați să urmați procesul nostru. Cu toate acestea, asigurați-vă că giroscopul este montat în siguranță. Acesta este singurul mod în care Arduino știe ce face quadcopterul, deci dacă se deplasează în zbor, veți avea probleme.

Cu totul conectat și în poziție, luați bateria LiPo și glisați-o între plăcile superioare și inferioare ale cadrului. Asigurați-vă că conectorul său indică aceeași direcție ca și conectorul PDB și că se pot conecta de fapt. Am folosit bandă adezivă pentru a menține bateria în poziție (banda de velcro funcționează și ea, dar este mai enervantă decât banda adezivă). Banda adezivă funcționează bine, deoarece se poate înlocui cu ușurință bateria sau o poate scoate pentru încărcare. Cu toate acestea, trebuie să fiți sigur că lipiți bateria strâns, ca și cum bateria se deplasează în timpul zborului, acest lucru ar putea afecta serios echilibrul dronei. NU conectați încă bateria la PDB.

Pasul 7: legați receptorul

Legați receptorul
Legați receptorul
Legați receptorul
Legați receptorul

Luați receptorul RC și conectați-l temporar la o sursă de alimentare de 5V (fie pornind Arduino cu alimentare USB sau 9V, fie cu o sursă de alimentare separată. Nu conectați încă LiPo la Arduino). Luați știftul de legare furnizat împreună cu receptorul RC și plasați-l pe știfturile BIND de pe receptor. Alternativ, scurtați pinii de sus și de jos din coloana BIND așa cum se arată în fotografia de mai sus. O lumină roșie ar trebui să clipească rapid pe receptor. Acum luați controlerul și apăsați butonul din spate cât este oprit, așa cum se arată mai sus. Cu butonul apăsat, porniți controlerul. Acum, lumina intermitentă a receptorului ar trebui să devină solidă. Receptorul este legat. Scoateți cablul de legare. Dacă utilizați o altă sursă de alimentare, reconectați receptorul la 5V din Arduino.

Pasul 8: (Opțional) Conectați și montați sistemul de cameră FPV

(Opțional) Conectați și montați sistemul de cameră FPV
(Opțional) Conectați și montați sistemul de cameră FPV
(Opțional) Conectați și montați sistemul de cameră FPV
(Opțional) Conectați și montați sistemul de cameră FPV

Mai întâi, lipiți împreună adaptorul XT-60 cu firele de alimentare și de împământare de pe monitor. Acestea pot varia de la un monitor la altul, dar puterea va fi aproape întotdeauna roșie, solul aproape întotdeauna negru. Acum introduceți adaptorul cu fire lipite în 1000mAh LiPo cu mufa XT-60. Monitorul ar trebui să pornească cu fundal (de obicei) albastru. Acesta este cel mai greu pas!

Acum înșurubați antenele de pe receptor și transmițător.

Conectați-vă micul Lipo de 500 mAh la transmițător. Pinul din dreapta (chiar sub antenă) este împământat (V_) al bateriei, următorul pin din stânga este V +. Vin cele trei fire care merg la cameră. Camera dvs. ar trebui să vină cu o mufă trei în unul care se potrivește în transmițător. Asigurați-vă că aveți firul de date galben în mijloc. Dacă ați utilizat bateriile la care am conectat cu prize destinate acestui lucru, acest pas nu ar trebui să necesite lipire.

În cele din urmă, conectați-vă cealaltă baterie de 1000 mAh cu firul de ieșire CC care a venit cu receptorul și, la rândul său, conectați-l la portul DC de pe receptor. În cele din urmă, conectați capătul negru al cablului AVin care a venit împreună cu receptorul la portul AVin al receptorului, iar celălalt capăt (galben, feminin) la capătul galben tată al cablului AVin al monitorului.

În acest moment, ar trebui să puteți vedea o vedere a camerei pe monitor. Dacă nu puteți, asigurați-vă că receptorul și emițătorul sunt ambele pornite (ar trebui să vedeți numerele pe micile lor ecrane) și că sunt pe același canal (am folosit canalul 11 pentru ambele și am avut un succes bun). Mai mult, poate fi necesar să schimbați canalul de pe monitor.

Montați componentele pe cadru.

Odată ce configurația funcționează, deconectați bateriile până când sunteți gata de zbor.

Pasul 9: Configurați recepția datelor GPS

Configurați recepția datelor GPS
Configurați recepția datelor GPS
Configurați recepția datelor GPS
Configurați recepția datelor GPS

Conectați-vă al doilea Arduino cu al doilea transceptor HC-12 așa cum se arată în schema de mai sus, ținând cont de faptul că configurarea va fi alimentată doar așa cum este afișat dacă este conectat la un computer. Descărcați codul de emisie-recepție furnizat, deschideți monitorul serial la 9600 baud.

Dacă utilizați configurarea mai de bază, ar trebui să începeți să primiți propoziții GPS dacă ecranul GPS este alimentat și conectat corespunzător la celălalt transceiver HC-12 (și dacă comutatorul de pe ecran este pe „Direct Write”).

Cu Mega, asigurați-vă că comutatorul este pe „Soft Serial”.

Pasul 10: Efectuați codul de configurare (Uno)

Acest cod este identic cu cel folosit de Joop Brokking în tutorialul său Arduino quadcopter și merită tot meritul pentru scrierea acestuia.

Cu bateria deconectată, utilizați cablul USB pentru a vă conecta computerul la Arduino și încărcați codul de configurare atașat. Porniți transmițătorul RC. Deschideți monitorul serial la 57600 baud și urmați instrucțiunile.

Erori frecvente:

Dacă codul nu reușește să se încarce, asigurați-vă că pinii 0 și 1 sunt deconectați de pe ecranul UNO / GPS. Acesta este același port hardware pe care dispozitivul îl folosește pentru a comunica cu computerul, deci trebuie să fie gratuit.

Dacă codul trece printr-o grămadă de pași dintr-o dată, verificați dacă comutatorul GPS este pe „Scriere directă”.

Dacă nu este detectat niciun receptor, asigurați-vă că există o lumină roșie solidă (dar slabă) pe receptor atunci când emițătorul este pornit. Dacă da, verificați cablajul.

Dacă nu este detectat nici un giroscop, acest lucru se poate datora faptului că giroscopul este deteriorat sau dacă aveți un tip diferit de giroscop de la care codul este conceput să scrie.

Pasul 11: Efectuați codul de configurare (Mega)

Acest cod este identic cu cel folosit de Joop Brokking în tutorialul său Arduino quadcopter și merită tot meritul pentru scrierea acestuia. Pur și simplu am adaptat cablajul pentru Mega astfel încât intrările receptorului să corespundă pinilor de întrerupere a schimbării pinului corecte.

Cu bateria deconectată, utilizați cablul USB pentru a vă conecta computerul la Arduino și încărcați codul de configurare atașat. Deschideți monitorul serial la 57600 baud și urmați instrucțiunile.

Pasul 12: Calibrați ESC-urile (Uno)

Încă o dată, acest cod este identic cu codul lui Joop Brokking. Toate modificările au fost făcute într-un efort de a integra GPS și Arduino și pot fi găsite mai târziu, în descrierea construcției quadcopterului mai avansat.

Încărcați codul de calibrare ESC atașat. Pe monitorul serial, scrieți litera „r” și apăsați return. Ar trebui să începeți să vedeți valorile controlerului RC în timp real listate. Verificați dacă acestea variază de la 1000 la 2000 la extremitățile clapetei de accelerație, rulare, pas și gălăgie. Apoi scrieți „a” și apăsați return. Lăsați calibrarea giroscopului, apoi verificați dacă giroscopul înregistrează mișcarea quad-ului. Acum scoateți arduino-ul de la computer, împingeți clapeta de accelerație până la capăt pe controler și conectați bateria. ESC-urile ar trebui să cicleze diferite tonuri sonore (dar acest lucru poate fi diferit în funcție de ESC și de firmware-ul acestuia). Împingeți clapeta de accelerație până la capăt. ESC-urile ar trebui să emită bipuri mai mici, apoi să tacă. Deconectați bateria.

Opțional, puteți utiliza în acest moment conurile furnizate împreună cu pachetele de accesorii de montare a motorului pentru a înșuruba strâns elice. Apoi introduceți numerele 1 - 4 pe monitorul serial pentru a porni motoarele 1 - 4 respectiv, la cea mai mică putere. Programul va înregistra cantitatea de agitare din cauza dezechilibrului elementelor de recuzită. Puteți încerca să remediați acest lucru adăugând cantități mici de bandă scotch pe o parte sau pe alta a elementelor de recuzită. Am constatat că putem obține zboruri bune fără acest pas, dar poate puțin mai puțin eficient și mai tare decât am echilibrat recuzita.

Pasul 13: Calibrați ESC-urile (Mega)

Acest cod este foarte similar cu codul lui Brokking, totuși l-am adaptat (și cablajul corespunzător) pentru a funcționa cu Mega.

Încărcați codul de calibrare ESC atașat. Pe monitorul serial, scrieți litera „r” și apăsați return. Ar trebui să începeți să vedeți valorile controlerului RC în timp real listate. Verificați dacă acestea variază de la 1000 la 2000 la extremitățile clapetei de accelerație, rulare, pas și gălăgie.

Apoi scrieți „a” și apăsați return. Lăsați calibrarea giroscopului, apoi verificați dacă giroscopul înregistrează mișcarea quad-ului.

Acum scoateți arduino-ul de la computer, împingeți clapeta de accelerație până la capăt pe controler și conectați bateria. ESC-urile ar trebui să emită trei bipuri mici urmate de un bip înalt (dar acest lucru poate fi diferit în funcție de ESC și de firmware-ul acestuia). Împingeți clapeta de accelerație până la capăt. Deconectați bateria.

Modificările pe care le-am făcut acestui cod au fost să trecem de la utilizarea PORTD pentru pinii ESC la utilizarea PORTA și apoi schimbarea octeților scrise în aceste porturi, astfel încât să activăm pinii corespunzători, așa cum se arată în schema de cablare. Această modificare se datorează faptului că pinii de registru PORTD nu sunt în aceeași locație pe Mega ca și în Uno. Nu am reușit să testăm complet acest cod, deoarece lucram cu un vechi Mega off-brand pe care îl avea magazinul școlii noastre. Aceasta a însemnat că, dintr-un anumit motiv, nu toți pinii de registru PORTA au fost capabili să activeze corect ESC-urile. De asemenea, am avut probleme cu utilizarea operatorului sau egal (| =) în unele dintre codurile noastre de testare. Nu suntem siguri de ce acest lucru a cauzat probleme la scrierea octeților pentru a seta tensiunile pin ESC, așa că am modificat codul Brooking cât mai puțin posibil. Credem că acest cod este foarte aproape de funcțional, dar kilometrajul dvs. poate varia.

Pasul 14: Luați-vă în aer !! (O. N. U)

Și din nou, acest al treilea bit de cod de geniu este opera lui Joop Brokking. Modificările la toate aceste trei bucăți de cod sunt prezente numai în încercarea noastră de integrare a datelor GPS în Arduino.

Cu elicele montate ferm pe cadru și toate componentele legate, lipite sau montate în alt mod, încărcați codul controlerului de zbor pe Arduino, apoi deconectați Arduino de pe computer.

Scoateți quadcopterul afară, conectați bateria și porniți transmițătorul. Opțional, aduceți un laptop conectat la configurarea de recepție GPS, precum și configurarea și monitorul de recepție video. Încărcați codul transceiverului pe Arduino terestru, deschideți monitorul serial la 9600 baud și urmăriți cum rulează datele GPS.

Acum ești gata să zbori. Apăsați clapeta de accelerație în jos și lăsați-o la stânga pentru a înarma quadcopterul, apoi ridicați ușor clapeta de accelerație pentru a vă deplasa. Începeți prin a zbura jos la pământ și peste suprafețe moi, cum ar fi iarba, până când vă veți simți confortabil.

Vedeți videoclipul încorporat care zboară emoționat drona prima dată când am reușit să punem drona și GPS-ul să funcționeze simultan.

Pasul 15: Luați-vă în aer !! (Mega)

Datorită blocării noastre cu codul de calibrare ESC pentru Mega, nu am reușit niciodată să creăm codul controlerului de zbor pentru această placă. Dacă ați ajuns la acest punct, atunci îmi imaginez că ați jucat cel puțin codul de calibrare ESC pentru a-l face să funcționeze pentru Mega. Prin urmare, va trebui probabil să faceți modificări similare codului controlorului de zbor ca și în ultimul pas. Dacă codul nostru de calibrare ESC pentru Mega funcționează magic fără alte modificări, atunci trebuie să faceți doar câteva lucruri cu codul stoc pentru a-l face să funcționeze pentru acest pas. Mai întâi va trebui să parcurgeți și să înlocuiți toate instanțele PORTD cu PORTA. De asemenea, nu uitați să schimbați DDRD în DDRA. Apoi, va trebui să modificați toți octeții înregistrați în registrul PORTA, astfel încât să activeze pinii corespunzători. Pentru a face acest lucru, utilizați octetul B11000011 pentru a seta pinii la înaltă și B00111100 pentru a seta pinii la minim. Noroc și vă rugăm să ne anunțați dacă zburați cu succes folosind un Mega!

Pasul 16: Cum am ajuns unde suntem în prezent cu Mega Design

Acest proiect a reprezentat o experiență de învățare imensă pentru noi, începători ai hobby-urilor Arduino și electronice. Prin urmare, deși am include saga a tot ceea ce am întâlnit în timp ce încercam să GPS activăm codul lui Joop Brokking. Deoarece codul lui Brokking este atât de detaliat și mult mai complicat decât orice scriem, am decis să îl modificăm cât mai puțin posibil. Am încercat să obținem ecranul GPS pentru a trimite date către Arduino și apoi Arduino să ne trimită aceste informații prin transceiverul HC12 fără a modifica codul de zbor sau cablarea în niciun fel. După ce ne-am uitat la schemele și cablajul Arduino Uno pentru a afla ce pini erau disponibili, am schimbat codul transceptor GPS pe care îl foloseam pentru a rezolva designul existent. Apoi l-am testat pentru a ne asigura că totul funcționează. În acest moment, lucrurile păreau promițătoare.

Următorul pas a fost integrarea codului pe care tocmai îl modificasem și l-am testat cu controlerul de zbor Brokking. Acest lucru nu a fost prea dificil, dar am întâmpinat rapid o eroare. Controlerul de zbor al lui Brokking se bazează pe bibliotecile Arduino Wire și EEPROM, în timp ce codul nostru GPS folosea atât biblioteca software Serial, cât și biblioteca GPS Arduino. Deoarece Wire Library face referire la biblioteca Software Serial, am întâmpinat o eroare în care codul nu ar fi compilat deoarece existau „mai multe definiții pentru _vector 3_”, orice ar însemna asta. După ce am căutat pe Google și am căutat în biblioteci, am realizat în cele din urmă că acest conflict de bibliotecă a făcut imposibilă utilizarea acestor bucăți de cod împreună. Deci, am căutat alternative.

Ceea ce ne-am dat seama este că singura combinație de biblioteci care nu ne-a aruncat erori a fost trecerea bibliotecii GPS standard la neoGPS și apoi utilizarea AltSoftSerial în loc de Software Serial. Această combinație a funcționat, cu toate acestea, AltSoftSerial poate funcționa numai cu pini specifici, care nu erau disponibili în proiectarea noastră. Iată ce ne-a condus la utilizarea Mega. Arduino Megas are mai multe porturi seriale hardware, ceea ce a însemnat că am putea ocoli acest conflict de bibliotecă fără a fi nevoie să deschidem deloc porturi seriale de software.

Cu toate acestea, când am început să folosim Mega, ne-am dat seama rapid că configurația pinului era diferită. Pinii de pe Uno care au întreruperi sunt diferite pe Mega. În mod similar, pinii SDA și SCL se aflau în locații diferite. După ce am studiat diagramele pin pentru fiecare tip de Arduino și am referit la registrele apelate în cod, am reușit să rulăm codul de configurare a zborului doar cu o recablare minimă și fără modificări de software.

Codul de calibrare ESC este locul în care am început să avem probleme. Am mai atins acest lucru pe scurt înainte, dar practic codul folosește registre de pin pentru a regla pinii utilizați pentru a controla ESC-urile. Acest lucru face codul mai greu de citit decât utilizarea funcției standard pinMode (); cu toate acestea, face ca codul să ruleze mai rapid și să activeze pinii simultan. Acest lucru este important deoarece codul de zbor rulează într-o buclă atent temporizată. Din cauza diferențelor de pin între Arduinos, am decis să folosim registrul de port A pe Mega. Cu toate acestea, în testele noastre, nu toți pinii ne-au dat aceeași tensiune de ieșire atunci când li s-a spus să funcționeze ridicat. Unele dintre pini au avut o putere de aproximativ 4,90 V, iar altele ne-au oferit mai aproape de 4,95 V. Aparent, ESC-urile pe care le avem sunt oarecum finicky, și astfel ar funcționa corect numai atunci când am folosit pinii cu tensiunea mai mare. Acest lucru ne-a forțat apoi să schimbăm octeții pe care i-am scris pentru a înregistra A astfel încât să vorbim cu pinii corecți. Există mai multe informații despre acest lucru în secțiunea de calibrare ESC.

Aceasta este cam cât am ajuns în această parte a proiectului. Când am mers să testăm acest cod de calibrare ESC modificat, ceva s-a scurtat și am pierdut comunicarea cu Arduino. Am fost extrem de nedumeriți de acest lucru, deoarece nu am schimbat niciunul dintre cabluri. Acest lucru ne-a forțat să facem un pas înapoi și să ne dăm seama că am avut doar câteva zile să obținem o dronă zburătoare după săptămâni în care am încercat să ne potrivim piesele incompatibile. Acesta este motivul pentru care am dat înapoi și am creat proiectul mai simplu cu Uno. Cu toate acestea, credem în continuare că abordarea noastră este aproape de a lucra cu Mega cu puțin mai mult timp.

Scopul nostru este ca această explicație a obstacolelor pe care le-am întâmpinat să vă fie de ajutor dacă lucrați la modificarea codului Brokking. De asemenea, nu am avut niciodată șansa de a încerca să codificăm funcții de control autonome bazate pe GPS. Acest lucru va trebui să vă dați seama după crearea unei drone funcționale cu un Mega. Cu toate acestea, din unele cercetări preliminare efectuate de Google, se pare că implementarea unui filtru Kalman poate fi cel mai stabil și mai precis mod de a determina poziția în zbor. Vă sugerăm să cercetați puțin despre modul în care acest algoritm optimizează estimările de stare. În afară de asta, noroc și spuneți-ne dacă ajungeți mai departe decât am putut!

Recomandat: