Indholdsfortegnelse:

Arduino Drone Med GPS: 16 trin
Arduino Drone Med GPS: 16 trin

Video: Arduino Drone Med GPS: 16 trin

Video: Arduino Drone Med GPS: 16 trin
Video: Amazing arduino project 2024, Juli
Anonim
Arduino drone med GPS
Arduino drone med GPS

Vi satte os for at bygge en Arduino-kontrolleret og stabiliseret, GPS-aktiveret first-person-view (FPV) quadcopter drone med hjemkomst, gå til koordinering og GPS hold-funktioner. Vi antog naivt, at det ville være relativt ligetil at kombinere eksisterende Arduino -programmer og ledninger til en quadcopter uden GPS med et GPS -transmissionssystem, og at vi hurtigt kunne gå videre til mere komplekse programmeringsopgaver. Imidlertid måtte en overraskende mængde ændre sig for at indpasse disse to projekter, og dermed endte vi med at lave en GPS-aktiveret FPV quadcopter uden nogen af de ekstra funktioner.

Vi har inkluderet instruktioner om, hvordan vi replikerer vores produkt, hvis du er tilfreds med den mere begrænsede quadcopter.

Vi har også inkluderet alle de trin, vi tog på vejen til en mere autonom quadcopter. Hvis du føler dig tryg ved at grave dybt ned i Arduino eller allerede har en masse Arduino-oplevelse og gerne vil tage vores stoppunkt som et springpunkt for din egen udforskning, så er denne Instructable også noget for dig.

Dette er et fantastisk projekt for at lære noget om at bygge og kode for Arduino, uanset hvor meget erfaring du har. Du vil også forhåbentlig gå væk med en drone.

Opsætningen er som følger:

På materialelisten kræves dele uden stjerne til begge mål.

Dele med en stjerne kræves kun til det ufærdige projekt med en mere autonom quadcopter.

Dele med to stjerner er kun nødvendige for den mere begrænsede quadcopter.

Trin, der er fælles for begge projekter, har ingen markør efter titlen

Trin, der kun kræves for den mere begrænsede ikke-autonome quadcopter, har "(Uno)" efter titlen.

De trin, der kun kræves for den igangværende autonome quadcopter, har "(Mega)" efter titlen.

For at bygge den uno-baserede quad skal du følge trinene i rækkefølge og springe trin over med "(Mega)" efter titlen.

For at arbejde på den Mega-baserede quad skal du følge trinene i rækkefølge og springe trin over med "(Uno)" efter titlen.

Trin 1: Saml materialer

Komponenter:

1) Én quadcopter -ramme (den nøjagtige ramme betyder sandsynligvis ikke noget) ($ 15)

2) Fire 2830, 900kV børsteløse motorer (eller lignende) og fire tilbehørspakker til montering (4x $ 6 + 4x $ 4 = $ 40 i alt)

3) Fire 20A UBEC ESC'er (4x $ 10 = $ 40 i alt)

4) Et strømfordelingsbord (med XT-60-forbindelse) ($ 20)

5) Et 3s, 3000-5000mAh LiPo-batteri med XT-60-forbindelse (3000mAh svarer til ca. 20 min. Flyvetid) ($ 25)

6) Masser af drivmaskiner (disse går meget i stykker) ($ 10)

7) En Arduino Mega 2560* ($ 40)

8) En Arduino Uno R3 ($ 20)

9) En anden Arduino Uno R3 ** ($ 20)

10) Et Arduino Ultimate GPS Shield (du behøver ikke skjoldet, men brug af en anden GPS kræver forskellige ledninger) ($ 45)

11) To HC-12 trådløse transceivere (2x $ 5 = $ 10)

12) En MPU- 6050, 6DOF (frihedsgrad) gyro/accelerometer ($ 5)

13) Et Turnigy 9x 2,4 GHz, 9 kanals sender/modtagerpar ($ 70)

14) Arduino kvindelige (stabelbare) overskrifter ($ 20)

15) LiPo Battery Balance oplader (og 12V DC adapter, ikke inkluderet) ($ 20)

17) USB A til B han til han adapterkabel ($ 5)

17) Gaffatape

18) Krympeslange

Udstyr:

1) Et loddejern

2) Lodde

3) Plast Epoxy

4) Lettere

5) Wire stripper

6) Et sæt unbrakonøgler

Valgfrie komponenter til realtid FPV (førstepersonsvisning) videooverførsel:

1) Et lille FPV-kamera (dette link til det temmelig billige og dårlige kvalitet, vi brugte, du kan erstatte et bedre) ($ 20)

2) 5,6 GHz videosender/modtagerpar (832 modeller brugt) ($ 30)

3) 500mAh, 3s (11.1V) LiPo -batteri ($ 7) (vi brugte på med et bananstik, men vi anbefaler i eftertid, at du bruger det tilsluttede batteri, da det har et stik, der er kompatibelt med TS832 -senderen, og dermed ikke gør det ' t kræver lodning).

4) 2 1000mAh 2s (7,4V) LiPo -batteri eller lignende ($ 5). Antal mAh ikke kritisk, så længe det er mere end 1000mAh eller deromkring. Den samme erklæring som ovenfor gælder for stikstikket til et af de to batterier. Den anden bruges til at drive skærmen, så du skal lodde uanset hvad. Sandsynligvis bedst at få et med et XT-60-stik til dette (det var det, vi gjorde). Et link til den type er her: 1000mAh 2s (7,4V) LiPo med XT-60 stik

5) LCD -skærm (valgfri) ($ 15). Du kan også bruge en AV-USB-adapter og dvd-kopieringssoftware for at se direkte på en bærbar computer. Dette giver også mulighed for at optage video og fotos i stedet for bare at se dem i realtid.

6) Hvis du har købt batterier med forskellige stik fra de linkede, har du muligvis brug for passende adaptere. Uanset hvad, så få en adapter svarende til stikket til batteriet, der driver skærmen. Her kan du få XT-60-adaptere

* = kun for mere avanceret projekt

** = kun for mere grundlæggende projekt

Omkostninger:

Hvis du starter fra bunden (men med loddejern osv.), Intet FPV -system: ~ $ 370

Hvis du allerede har en RC -sender/modtager, LiPo batterioplader og LiPo batteri: ~ $ 260

Omkostninger ved FPV -system: $ 80

Trin 2: Saml rammen

Saml rammen
Saml rammen
Saml rammen
Saml rammen
Saml rammen
Saml rammen

Dette trin er ret ligetil, især hvis du bruger den samme præfabrikerede ramme, som vi brugte. Brug blot de medfølgende skruer og sæt rammen sammen som vist ved hjælp af en passende unbrakonøgle eller skruetrækker til din ramme. Sørg for, at arme i samme farve støder op til hinanden (som på dette billede), så dronen har en klar forside og bagside. Sørg endvidere for, at den lange del af bundpladen stikker ud imellem modsatte farvede arme. Dette bliver vigtigt senere.

Trin 3: Monter motorer og tilslut Escs

Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs
Monter motorer og tilslut Escs

Nu hvor rammen er samlet, skal du tage de fire motorer og fire monteringstilbehør ud. Du kan enten bruge skruer, der er inkluderet i monteringssætene, eller skruer, der er tilovers fra quadcopter -rammen, til at skrue motorerne og holderne på plads. Hvis du køber de beslag, vi har linket til, modtager du to ekstra komponenter, som er vist ovenfor. Vi har haft god motorydelse uden disse dele, så vi slap dem for at reducere vægten.

Når motorerne er skruet på plads, epoxyer strømfordelingsbordet (PDB) på plads oven på toppladen på quadcopter -rammen. Sørg for, at du orienterer den således, at batteristikket peger ud mellem forskellige farvede arme (parallelt med en af de lange dele af bundpladen), som på billedet ovenfor.

Du bør også have fire propelkegler med indvendige gevind. Sæt disse til side for nu.

Tag nu dine ESC'er ud. Den ene side vil have to ledninger, der kommer ud af den, en rød og en sort. For hver af de fire ESC'er skal du indsætte den røde ledning i det positive stik på PDB'en og den sorte i den negative. Bemærk, at hvis du bruger en anden PDB, kan dette trin kræve lodning. Tilslut nu hver af de tre ledninger, der kommer ud af hver motor. På dette tidspunkt er det ligegyldigt, hvilken ESC -ledning du tilslutter med hvilken motortråd (så længe du tilslutter alle ledninger til en ESC med den samme motor!) Du vil korrigere enhver baglæns polaritet senere. Det er ikke farligt, hvis ledninger vendes; det resulterer kun i, at motoren drejer baglæns.

Trin 4: Forbered Arduino og Shield

Forbered Arduino og Shield
Forbered Arduino og Shield
Forbered Arduino og Shield
Forbered Arduino og Shield

En note før du begynder

Først kan du vælge at lodde alle ledninger sammen direkte. Vi fandt det imidlertid uvurderligt at bruge pinhoveder, fordi de giver stor fleksibilitet til fejlfinding og tilpasning af projektet. Det følgende er en beskrivelse af, hvad vi gjorde (og anbefaler andre at gøre).

Forbered Arduino og skjold

Tag din Arduino Mega (eller en Uno, hvis du laver den ikke-autonome quad), GPS-skjold og stabelbare overskrifter. Lod den mandlige ende af stabelhovederne på plads på GPS-skjoldet, i stifterækkerne parallelt med de forlodede stifter, som vist på billedet ovenfor. Loddes også i stabelhoveder på stifterække mærket 3V, CD, … RX. Brug en trådskærer til at klippe overskydende længde af stifterne, der stikker ud i bunden. Placer hanhoveder med bøjede toppe i alle disse stabelhoveder. Det er, hvad du vil lodde ledninger til for resten af komponenterne.

Fastgør GPS -skjoldet til toppen, og sørg for, at stifterne matcher dem på Arduino (Mega eller Uno). Bemærk, at hvis du bruger Mega, vil masser af Arduino stadig blive udsat, når du har lagt skjoldet på plads.

Placer elektrisk tape på bunden af Arduino, der dækker alle de udsatte pin -lodninger, for at forhindre kortslutning, da Arduino hviler på PDB.

Trin 5: Tilslut komponenterne og placer batteriet (Uno)

Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)
Tråd sammen komponenter og placer batteri (Uno)

Skematikken ovenfor er næsten identisk med den, der blev lavet af Joop Brooking, da vi stærkt baserede vores design fra hans.

*Bemærk, at denne skematik antager et korrekt monteret GPS -skjold, og GPS'en vises derfor ikke i denne skematiske.

Skematikken ovenfor blev udarbejdet ved hjælp af Fritzing -software, som især anbefales til skemaer, der involverer Arduino. Vi brugte for det meste generiske dele, der kan redigeres fleksibelt, da vores dele generelt ikke var i Fritzings inkluderede delbibliotek.

-Sørg for, at kontakten på GPS -skjoldet er skiftet til "Direkte skrivning".

-Led nu alle komponenter op i henhold til ovenstående skematisk (undtagen batteriet!) (Vigtig bemærkning om GPS -datakabler nedenfor).

-Bemærk, at du allerede har tilsluttet ESC'erne til motorerne og PDB, så denne del af skematikken er udført.

-Bemærk desuden, at GPS -data (gule ledninger) kommer ud af ben 0 og 1 på Arduino (ikke de separate Tx- og Rx -ben på GPS'en). Det er fordi konfigureret til "Direct Write" (se nedenfor), sender GPS'en direkte til hardware -serielle porte på uno'en (ben 0 og 1). Dette er tydeligst vist på det andet billede ovenfor af den komplette ledning.

-Hvis du tilslutter RC -modtageren, skal du se billedet ovenfor. Bemærk, at datatrådene går ind i den øverste række, mens Vin og Gnd er på henholdsvis den anden og tredje række (og på den anden til længst kolonne af stifter).

-For at gøre ledningerne til HC-12-transceiveren, RC-modtageren og 5Vout fra PDB til Vin i Arduino brugte vi stabelhoveder, hvorimod vi for gyroen lodde ledningerne direkte til brættet og ved hjælp af varmekrympende slanger rundt om loddetin. Du kan vælge at gøre enten for en hvilken som helst af komponenterne, men lodning direkte til gyroen anbefales, da det sparer plads, hvilket gør den lille del lettere at montere. Brug af headers er en lille smule mere arbejde på forhånd, men giver mere fleksibilitet. Lodningstråde direkte er en mere sikker forbindelse på lang sigt, men betyder alligevel, at det er sværere at bruge denne komponent på et andet projekt. Bemærk, at hvis du har brugt headers på GPS -skjoldet, har du stadig en anstændig fleksibilitet uanset hvad du gør. Det er vigtigt, at du sørger for, at GPS -datatrådene i benene 0 og 1 på GPS'en er lette at fjerne og udskifte.

I slutningen af vores projekt kunne vi ikke designe en god metode til at fastgøre alle vores komponenter til rammen. På grund af tidstrykket i vores klasse drejede vores løsninger sig generelt om dobbeltsidet skumtape, gaffatape, elektrisk tape og lynlåse. Vi anbefaler stærkt, at du bruger mere tid på at designe stabile monteringsstrukturer, hvis du planlægger, at dette er et langsigtet projekt. Med alt det sagt, hvis du bare vil lave en hurtig prototype, er du velkommen til at følge med i vores proces. Sørg dog for, at gyroen er monteret sikkert. Dette er den eneste måde, Arduino ved, hvad quadcopteren gør, så hvis den bevæger sig i flyvning, har du problemer.

Når alt er kablet op og på plads, skal du tage dit LiPo -batteri og skubbe det ind mellem rammens øverste og nederste plader. Sørg for, at dets stik peger i samme retning som PDB'ets stik, og at de faktisk kan forbinde. Vi brugte gaffatape til at holde batteriet på plads (velcrobånd virker også, men er mere irriterende end gaffatape). Gaffatape fungerer godt, fordi man let kan udskifte batteriet eller fjerne det til opladning. Du skal dog være sikker på, at du tape batteriet TÆT, som om batteriet bevæger sig rundt under flyvning, kan dette alvorligt forstyrre dronens balance. Tilslut IKKE batteriet til PDB'et endnu.

Trin 6: Kombiner komponenter og placer batteri (Mega)

Tråd sammen komponenter og placer batteri (Mega)
Tråd sammen komponenter og placer batteri (Mega)
Tråd sammen komponenter og placer batteri (Mega)
Tråd sammen komponenter og placer batteri (Mega)
Tråd sammen komponenter og placer batteri (Mega)
Tråd sammen komponenter og placer batteri (Mega)

Skematikken ovenfor blev udarbejdet ved hjælp af Fritzing -software, som især anbefales til skemaer, der involverer arduino. Vi brugte for det meste generiske dele, da vores dele generelt ikke var i Fritzings inkluderede delbibliotek.

-Bemærk, at denne skematik antager et korrekt monteret GPS -skjold, og GPS'en vises derfor ikke i denne skematisk.

-Sæt kontakten på din Mega 2560 til "Soft Serial".

-Led nu alle komponenter op i henhold til ovenstående skematisk (undtagen batteriet!)

-Bemærk, at du allerede har tilsluttet ESC'erne til motorerne og PDB, så denne del af skematikken er udført.

-Jumperkablerne fra Pin 8 til Rx og Pin 7 til Tx er der, fordi (i modsætning til Uno, som dette skjold blev lavet til), mangler en universal asynkron modtager-sender (UART) på ben 7 og 8, og dermed vi skal bruge hardware serielle ben. Der er flere grunde til, at vi har brug for hardware serielle ben, der diskuteres senere.

-Hvis du tilslutter RC -modtageren, skal du se billedet ovenfor. Bemærk, at datatrådene går ind i den øverste række, mens Vin og Gnd er på henholdsvis den anden og tredje række (og på den anden til længst kolonne af stifter).

-For at gøre ledningerne til HC-12-transceiveren, RC-modtageren og 5Vout fra PDB til Vin i Arduino brugte vi stabelhoveder, hvorimod vi til gyro lodde ledningerne direkte og ved hjælp af varmekrympende slanger omkring loddet. Du kan vælge at gøre enten for nogen af komponenterne. Brug af headers er en lille smule mere arbejde på forhånd, men giver mere fleksibilitet. Lodningstråde direkte er en mere sikker forbindelse på lang sigt, men betyder alligevel, at det er sværere at bruge denne komponent på et andet projekt. Bemærk, at hvis du har brugt headers på GPS -skjoldet, har du stadig en anstændig fleksibilitet uanset hvad du gør.

I slutningen af vores projekt kunne vi ikke designe en god metode til at fastgøre alle vores komponenter til rammen. På grund af tidstrykket i vores klasse drejede vores løsninger sig generelt om dobbeltsidet skumtape, gaffatape, elektrisk tape og lynlåse. Vi anbefaler stærkt, at du bruger mere tid på at designe stabile monteringsstrukturer, hvis du planlægger, at dette skal være et langsigtet projekt. Med alt det sagt, hvis du bare vil lave en hurtig prototype, er du velkommen til at følge med i vores proces. Sørg dog for, at gyroen er monteret sikkert. Dette er den eneste måde, Arduino ved, hvad quadcopteren gør, så hvis den bevæger sig i flyvning, har du problemer.

Når alt er kablet op og på plads, skal du tage dit LiPo -batteri og skubbe det ind mellem rammens øverste og nederste plader. Sørg for, at dets stik peger i samme retning som PDB'ets stik, og at de faktisk kan forbinde. Vi brugte gaffatape til at holde batteriet på plads (velcrobånd virker også, men er mere irriterende end gaffatape). Gaffatape fungerer godt, fordi man let kan udskifte batteriet eller fjerne det til opladning. Du skal dog være sikker på, at du tape batteriet TÆT, som om batteriet bevæger sig rundt under flyvning, kan dette alvorligt forstyrre dronens balance. Tilslut IKKE batteriet til PDB'et endnu.

Trin 7: Bind modtager

Bind modtager
Bind modtager
Bind modtager
Bind modtager

Tag RC -modtageren og tilslut den midlertidigt til en 5V strømforsyning (enten ved at tænde for Arduino med USB eller 9V strøm eller med en separat strømforsyning. Tilslut ikke LiPo til Arduino endnu). Tag bindingsnålen, der fulgte med RC -modtageren, og anbring den på BIND -benene på modtageren. Alternativt kan du kortslutte de øverste og nederste ben i BIND -kolonnen som vist på billedet ovenfor. Et rødt lys bør blinke hurtigt på modtageren. Tag nu controlleren og tryk på knappen på bagsiden, mens den er slukket, som vist ovenfor. Tænd for controlleren med knappen trykket ned. Nu skal det blinkende lys på modtageren blive konstant. Modtageren er bundet. Fjern bindingskablet. Hvis du brugte en anden strømforsyning, skal du slutte receiveren til 5V ud af Arduino igen.

Trin 8: (Valgfrit) Tråd sammen og monter FPV -kamerasystemet

(Valgfrit) Tråd sammen og monter FPV -kamerasystemet
(Valgfrit) Tråd sammen og monter FPV -kamerasystemet
(Valgfrit) Tråd sammen og monter FPV -kamerasystemet
(Valgfrit) Tråd sammen og monter FPV -kamerasystemet

Først lodes XT-60-adapteren sammen med strøm- og jordledningerne på skærmen. Disse kan variere fra skærm til skærm, men strømmen vil næsten altid være rød, jorden er næsten altid sort. Indsæt nu adapteren med lodde ledninger i din 1000mAh LiPo med XT-60-stikket. Skærmen skal tænde med (normalt) blå baggrund. Det er det sværeste trin!

Skru nu antennerne på din modtager og sender på.

Tilslut din lille 500mAh Lipo til senderen. Den nål til højre (lige under antennen) er jord (V_) på batteriet, den næste pin til venstre er V+. De kommer de tre ledninger, der går til kameraet. Dit kamera skal leveres med et tre-i-ét stik, der passer ind i senderen. Sørg for, at du har den gule datatråd i midten. Hvis du brugte de batterier, vi forbandt til med stik beregnet til dette, burde dette trin ikke kræve nogen lodning.

Til sidst skal du tilslutte dit andet 1000mAh batteri med DC -udgangen, der fulgte med din modtager, og derefter tilslutte den til DC -porten på din modtager. Tilslut endelig den sorte ende af AVin -kablet, der fulgte med din receiver, til AVin -porten på din receiver, og den anden (gul, hun) ende til den gule han -ende af AVin -kablet på din skærm.

På dette tidspunkt skal du kunne se en kameravisning på skærmen. Hvis du ikke kan, skal du sørge for, at modtageren og senderen begge er tændt (du skal se tal på deres små skærme), og at de er på samme kanal (vi brugte kanal 11 til begge og havde god succes). Desuden skal du muligvis ændre kanalen på skærmen.

Monter komponenterne på rammen.

Når installationen fungerer, skal du tage stikket ud af batterierne, indtil du er klar til at flyve.

Trin 9: Konfigurer GPS -datamodtagelse

Opsæt GPS -datamodtagelse
Opsæt GPS -datamodtagelse
Opsæt GPS -datamodtagelse
Opsæt GPS -datamodtagelse

Tilslut din anden Arduino med din anden HC-12-transceiver som vist i ovenstående skematisk, og husk på, at opsætningen kun får strøm som vist, hvis den er tilsluttet en computer. Download den medfølgende transceiverkode, åbn din serielle skærm til 9600 baud.

Hvis du bruger den mere grundlæggende opsætning, skal du begynde at modtage GPS-sætninger, hvis dit GPS-skjold er strømforsynet og korrekt forbundet til den anden HC-12-transceiver (og hvis kontakten på skjoldet er på "Direct Write").

Med Mega skal du sørge for, at kontakten er tændt på "Soft Serial".

Trin 10: Udfør opsætningskode (Uno)

Denne kode er identisk med den, som Joop Brokking brugte i sin Arduino quadcopter tutorial, og han fortjener al æren for dens skrivning.

Når batteriet er afbrudt, skal du bruge USB -kablet til at slutte din computer til Arduino og uploade den vedhæftede opsætningskode. Tænd din RC -sender. Åbn din serielle skærm til 57600 baud, og følg vejledningen.

Almindelige fejl:

Hvis koden ikke uploades, skal du sørge for, at benene 0 og 1 er trukket ud af UNO/GPS -skjoldet. Dette er den samme hardware -port, som enheden bruger til at kommunikere med computeren, så den skal være gratis.

Hvis koden springer igennem en masse trin på én gang, skal du kontrollere, at din GPS -switch er tændt på "Direct Write".

Hvis der ikke registreres nogen modtager, skal du sørge for, at der er et fast (men svagt) rødt lys på din modtager, når senderen er tændt. Kontroller i så fald ledningerne.

Hvis der ikke opdages nogen gyro, kan det skyldes, at gyroen er beskadiget, eller hvis du har en anden type gyro end den, som koden er designet til at skrive til.

Trin 11: Udfør opsætningskode (Mega)

Denne kode er identisk med den, som Joop Brokking brugte i sin Arduino quadcopter tutorial, og han fortjener al æren for dens skrivning. Vi tilpassede simpelthen ledningerne til Mega, så modtagerindgangene svarede til de korrekte Pin Change Interrupt -ben.

Når batteriet er afbrudt, skal du bruge USB -kablet til at slutte din computer til Arduino og uploade den vedhæftede opsætningskode. Åbn din serielle skærm til 57600 baud, og følg vejledningen.

Trin 12: Kalibrer ESC'erne (Uno)

Endnu en gang er denne kode identisk med Joop Brokings kode. Alle ændringer blev foretaget i et forsøg på at integrere GPS og Arduino og kan senere findes i beskrivelsen af konstruktionen af den mere avancerede quadcopter.

Upload den vedhæftede ESC -kalibreringskode. Skriv bogstavet 'r' på den serielle skærm, og tryk på retur. Du bør begynde at se værdier i realtid RC -controller angivet. Kontroller, at de varierer fra 1000 til 2000 på yderpunkterne for gas, rulning, pitch og yaw. Skriv derefter 'a' og tryk på retur. Lad gyrokalibreringen gå, og kontroller derefter, at gyroen registrerer quadens bevægelse. Tag nu arduinoen ud af computeren, skub gashåndtaget helt op på controlleren, og tilslut batteriet. ESC'erne bør cykle forskellige biptoner (men dette kan være forskelligt afhængigt af ESC og dets firmware). Skub gashåndtaget helt ned. ØSU skal udsende lavere bip og derefter tie stille. Tag batteriet ud.

Eventuelt kan du på dette tidspunkt bruge keglerne, der fulgte med dine tilbehør til motormontering, til at skrue propeller godt fast. Indtast derefter tallene 1-4 på den serielle skærm for at tænde motorerne 1-4 henholdsvis ved den laveste effekt. Programmet registrerer mængden af rystelser på grund af rekvisitternes ubalance. Du kan prøve at afhjælpe dette ved at tilføje små mængder scotch tape til den ene eller den anden side af rekvisitterne. Vi fandt ud af, at vi kunne få en god flyvning uden dette trin, men måske lidt mindre effektivt og mere højt end vi havde balanceret rekvisitterne.

Trin 13: Kalibrer ESC'er (Mega)

Denne kode ligner meget Brokings kode, men vi tilpassede den (og tilhørende ledninger) til at arbejde med Mega.

Upload den vedhæftede ESC -kalibreringskode. Skriv bogstavet 'r' på den serielle skærm, og tryk på retur. Du bør begynde at se værdier i realtid RC -controller angivet. Kontroller, at de varierer fra 1000 til 2000 på yderpunkterne for gas, rulning, pitch og yaw.

Skriv derefter 'a' og tryk på retur. Lad gyro -kalibreringen gå, og kontroller derefter, at gyroen registrerer quadens bevægelse.

Tag nu arduinoen ud af computeren, skub gashåndtaget helt op på controlleren, og tilslut batteriet. ESC'erne skal udsende tre lave bip efterfulgt af et højt bip (men dette kan variere afhængigt af ESC og dets firmware). Skub gashåndtaget helt ned. Tag batteriet ud.

De ændringer, vi foretog i denne kode, var at skifte fra at bruge PORTD til ESC -benene til at bruge PORTA og derefter ændre de bytes, der er skrevet til disse porte, så vi aktiverer de korrekte ben som vist i ledningsskemaet. Denne ændring skyldes, at PORTD -registreringsnålerne ikke er det samme sted på Mega, som de er i Uno. Vi har ikke været i stand til fuldt ud at teste denne kode, da vi arbejdede med en gammel off-brand Mega, som vores skoles butik havde. Dette betød, at det af en eller anden grund ikke var alle PORTA -registerstifterne, der var i stand til at aktivere ESC'erne korrekt. Vi havde også problemer med at bruge operatoren eller er lig med (| =) i nogle af vores testkoder. Vi er usikre på, hvorfor dette forårsagede problemer, da vi skrev bytes til at indstille ESC -pin -spændinger, så vi ændrede Brookings kode så lidt som muligt. Vi tror, at denne kode er meget tæt på funktionel, men din kilometertal kan variere.

Trin 14: Få luftbåren !! (Uno)

Og igen, denne tredje bit af geni -kode er Joop Brokings værk. Ændringer af alle disse tre stykker kode er kun til stede i vores forsøg på at integrere GPS -data i Arduino.

Med dine drivmaskiner fast monteret på rammen og alle komponenter spændt, tapet eller på anden måde monteret på, skal du indlæse flyvekontrollerkoden til din Arduino, og derefter tage Arduino -stikket ud af din computer.

Tag din quadcopter udenfor, tilslut batteriet og tænd for din sender. Medbring eventuelt en bærbar computer, der er tilsluttet din GPS -modtagelsesopsætning, samt din videooptagelsesopsætning og skærm. Indlæs transceiverkoden på din terrestriske Arduino, åbn din serielle skærm til 9600 baud og se GPS -dataene rulle ind.

Nu er du klar til at flyve. Skub gassen ned og gab til venstre for at bevæge quadcopteren, og tag derefter forsigtigt gashåndtaget op for at svæve. Begynd med at flyve lavt til jorden og over bløde overflader som græs, indtil du bliver komfortabel.

Se den indlejrede video af os, der ophidset flyver med dronen, første gang vi var i stand til at få dronen og GPS til at fungere samtidigt.

Trin 15: Få luftbåren !! (Mega)

På grund af vores hangup med ESC -kalibreringskoden til Mega, var vi aldrig i stand til at oprette flight controller -kode til dette kort. Hvis du er nået til dette punkt, så forestiller jeg mig, at du i det mindste har rodet med ESC -kalibreringskoden for at få det til at fungere for Mega. Derfor bliver du sandsynligvis nødt til at foretage lignende ændringer af flyvekontrollerkoden, som du foretog i det sidste trin. Hvis vores ESC -kalibreringskode for Mega på magisk vis virker uden andre ændringer, er der kun få ting, du skal gøre ved lagerkoden for at få den til at fungere til dette trin. Du skal først gennemgå og erstatte alle forekomster af PORTD med PORTA. Glem også at ændre DDRD til DDRA. Derefter skal du ændre alle de bytes, der skrives til PORTA -registret, så de aktiverer de korrekte stifter. For at gøre dette skal du bruge byte B11000011 til at indstille stifterne til høje og B00111100 til at indstille stifterne til lave. Held og lykke, og lad os det vide, hvis du lykkes med at flyve med en Mega!

Trin 16: Hvordan vi er nået dertil, hvor vi er i øjeblikket med Mega Design

Dette projekt var en enorm læringsoplevelse for os som Arduino og elektronikhobby begyndere. Derfor ville vi selv inkludere sagaen om alt det, vi stødte på, mens vi forsøgte at GPS muliggøre Joop Brokings kode. Fordi Brokings kode er så grundig og meget mere kompliceret end noget andet, at vi skrev, besluttede vi at ændre den så lidt som muligt. Vi forsøgte at få GPS -skjoldet til at sende data til Arduino og derefter få Arduino til at sende disse oplysninger til os via HC12 -transceiveren uden at ændre flyvekoden eller kabelføring på nogen måde. Efter at have set på skemaerne og ledningerne til vores Arduino Uno for at finde ud af, hvilke ben der var tilgængelige, ændrede vi GPS -transceiverkoden, som vi brugte til at omgå det eksisterende design. Derefter testede vi det for at sikre, at alt fungerede. På dette tidspunkt virkede tingene lovende.

Det næste trin var at integrere den kode, som vi lige havde ændret og testet med Brokings flyvekontroller. Dette var ikke for svært, men vi løb hurtigt ind i en fejl. Brokings flyvekontroller er afhængig af Arduino Wire- og EEPROM -bibliotekerne, mens vores GPS -kode brugte både Software Serial -biblioteket og Arduino GPS -biblioteket. Fordi Wire Library refererer til Software Serial -biblioteket, stødte vi på en fejl, hvor koden ikke ville kompilere, fordi der var "flere definitioner for _vector 3_", uanset hvad det betyder. Efter at have kigget på Google og gravet rundt på bibliotekerne, indså vi til sidst, at denne bibliotekkonflikt gjorde det umuligt at bruge disse kodestykker sammen. Så vi søgte efter alternativer.

Det, vi fandt ud af, er, at den eneste kombination af biblioteker, der ikke kastede fejl på os, skiftede standard GPS -bibliotek til neoGPS og derefter brugte AltSoftSerial i stedet for Software Serial. Denne kombination fungerede, men AltSoftSerial kan kun fungere med specifikke stifter, som ikke var tilgængelige i vores design. Det er det, der førte os til at bruge Mega. Arduino Megas har flere serielle hardwareporte, hvilket betød, at vi kunne omgå denne bibliotekskonflikt ved slet ikke at skulle åbne serielle serielle porte.

Da vi begyndte at bruge Mega, indså vi imidlertid hurtigt, at pin -konfigurationen var en anden. Pins på Uno, der har afbrydelser, er forskellige på Mega. På samme måde var SDA- og SCL -benene forskellige steder. Efter at have studeret stiftdiagrammerne for hver type Arduino og henvist til de registre, der blev kaldt til i koden, var vi i stand til at køre flyveopsætningskoden med kun minimal re-ledninger og ingen softwareændringer.

ESC -kalibreringskoden er, hvor vi begyndte at støde på problemer. Vi berørte dette kort før, men grundlæggende bruger koden stifteregistre til at regulere benene, der bruges til at styre ESC'erne. Dette gør koden sværere at læse end at bruge standard pinMode () -funktionen; dog får den koden til at køre hurtigere og aktiverer stifter samtidigt. Dette er vigtigt, fordi flyvekoden kører i en omhyggeligt timet loop. På grund af pin -forskellene mellem Arduinos, besluttede vi at bruge portregister A på Mega. Men i vores test gav ikke alle stifterne os den samme udgangsspænding, når de blev bedt om at løbe højt. Nogle af benene havde en effekt på omkring 4,90V, og andre gav os tættere på 4,95V. Tilsyneladende er de ESC'er, vi har, noget finurlige, og så ville de kun fungere korrekt, når vi brugte stifterne med den højere spænding. Dette tvang os derefter til at ændre de bytes, vi skrev, til at registrere A, så vi talte med de korrekte ben. Der er mere information om dette i afsnittet ESC -kalibrering.

Dette er omtrent så langt, som vi nåede til denne del af projektet. Da vi gik for at teste denne ændrede ESC -kalibreringskode, kortslog noget, og vi mistede kommunikationen med vores Arduino. Vi var ekstremt forvirrede over dette, fordi vi ikke havde ændret nogen af ledningerne. Dette tvang os til at træde tilbage og indse, at vi kun havde et par dage til at få en flyvende drone efter flere ugers forsøg på at passe vores uforenelige stykker sammen. Det er derfor, vi har backtracked og skabt det enklere projekt med Uno. Vi tror dog stadig, at vores tilgang er tæt på at arbejde med Mega med lidt mere tid.

Vores mål er, at denne forklaring på de forhindringer, vi stødte på, er nyttig for dig, hvis du arbejder på at ændre Brokings kode. Vi fik heller aldrig chancen for at prøve at kode autonome kontrolfunktioner baseret på GPS'en. Dette er noget, du bliver nødt til at finde ud af, efter du har oprettet en fungerende drone med en Mega. Fra nogle foreløbige Google -undersøgelser ser det imidlertid ud til at implementering af et Kalman -filter kan være den mest stabile og præcise måde at bestemme position under flyvning. Vi foreslår, at du undersøger lidt om, hvordan denne algoritme optimerer statsestimater. Bortset fra det, held og lykke, og lad os vide, hvis du kommer længere, end vi kunne!

Anbefalede: