Innholdsfortegnelse:

Arduino Drone Med GPS: 16 trinn
Arduino Drone Med GPS: 16 trinn

Video: Arduino Drone Med GPS: 16 trinn

Video: Arduino Drone Med GPS: 16 trinn
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Juli
Anonim
Arduino drone med GPS
Arduino drone med GPS

Vi satte oss for å bygge en Arduino-kontrollert og stabilisert, GPS-aktivert first-person-view (FPV) quadcopter drone med hjemreise, gå til koordinering og GPS hold-funksjoner. Vi antok naivt at å kombinere eksisterende Arduino -programmer og ledninger for et quadcopter uten GPS med GPS -overføringssystemet ville være relativt greit, og at vi raskt kunne gå videre til mer komplekse programmeringsoppgaver. Imidlertid måtte en overraskende mengde endres for å kunne integrere disse to prosjektene, og dermed endte vi opp med å lage et GPS-aktivert FPV-quadcopter, uten noe av den ekstra funksjonaliteten.

Vi har inkludert instruksjoner om hvordan du replikerer produktet vårt hvis du er fornøyd med det mer begrensede quadcopter.

Vi har også inkludert alle trinnene vi tok på veien til et mer autonomt quadcopter. Hvis du føler deg komfortabel med å grave dypt ned i Arduino eller allerede har mye Arduino-erfaring og ønsker å ta stoppestedet vårt som et hoppepunkt for din egen utforskning, så er denne Instructable også noe for deg.

Dette er et flott prosjekt for å lære noe om å bygge og kode for Arduino uansett hvor mye erfaring du har. Du vil også forhåpentligvis gå bort med en drone.

Oppsettet er som følger:

I materiallisten kreves deler uten stjerne for begge målene.

Deler med en stjerne kreves bare for det uferdige prosjektet til et mer autonomt quadcopter.

Deler med to stjerner er bare nødvendig for det mer begrensede quadcopter.

Trinn som er felles for begge prosjektene har ingen markør etter tittelen

Trinn som bare kreves for det mer begrensede ikke-autonome quadcopter har "(Uno)" etter tittelen.

Trinn som bare kreves for det pågående autonome quadcopteret har "(Mega)" etter tittelen.

Følg trinnene i rekkefølge for å bygge den uno-baserte firhjulingen, hopp over alle trinnene med "(Mega)" etter tittelen.

For å jobbe med den megabaserte firhjulingen, følg trinnene i rekkefølge, hopp over trinnene med "(Uno)" etter tittelen.

Trinn 1: Samle materialer

Komponenter:

1) En quadcopter -ramme (den nøyaktige rammen spiller sannsynligvis ingen rolle) ($ 15)

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

3) Fire 20A UBEC ESC (4x $ 10 = $ 40 totalt)

4) Ett strømfordelingsbord (med XT-60-tilkobling) ($ 20)

5) Et 3s, 3000-5000mAh LiPo-batteri med XT-60-tilkobling (3000mAh tilsvarer ca. 20 min flytid) ($ 25)

6) Mange propeller (disse bryter mye) ($ 10)

7) En Arduino Mega 2560* ($ 40)

8) En Arduino Uno R3 ($ 20)

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

10) Ett Arduino Ultimate GPS -skjold (du trenger ikke skjoldet, men bruk av en annen GPS krever forskjellige ledninger) ($ 45)

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

12) En MPU- 6050, 6DOF (frihetsgrad) gyro/akselerometer ($ 5)

13) Ett Turnigy 9x 2,4 GHz, 9 -kanals sender/mottakerpar ($ 70)

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

15) LiPo Battery Balance lader (og 12V DC adapter, ikke inkludert) ($ 20)

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

17) Duct tape

18) Krympeslange

Utstyr:

1) Et loddejern

2) Lodding

3) Plast Epoxy

4) Lettere

5) Wire stripper

6) Et sett med unbrakonøkler

Valgfrie komponenter for videooverføring i sanntid FPV (førstepersonsvisning):

1) Et lite FPV-kamera (dette lenker til det ganske billige og dårlige kameraet vi brukte, du kan erstatte et bedre) ($ 20)

2) 5,6 GHz videosender/mottakerpar (832 modeller brukt) ($ 30)

3) 500mAh, 3s (11.1V) LiPo -batteri ($ 7) (vi brukte på med en bananplugg, men vi anbefaler i ettertid at du bruker det koblede batteriet, ettersom det har en kontakt kompatibel med TS832 -senderen, og dermed ikke gjør det ' krever ikke lodding).

4) 2 1000mAh 2s (7,4V) LiPo -batteri eller lignende ($ 5). Antall mAh ikke kritisk så lenge det er mer enn 1000mAh eller så. Den samme uttalelsen som ovenfor gjelder pluggtypen for ett av de to batteriene. Den andre vil bli brukt til å drive skjermen, så du må lodde uansett. Sannsynligvis best å få en med en XT-60 plugg for dette (det er det vi gjorde). En lenke for den typen er her: 1000mAh 2s (7,4V) LiPo med XT-60-plugg

5) LCD -skjerm (valgfritt) ($ 15). Du kan også bruke en AV-USB-adapter og DVD-kopieringsprogramvare for å se direkte på en bærbar datamaskin. Dette gir også muligheten til å ta opp video og bilder, i stedet for bare å se dem i sanntid.

6) Hvis du har kjøpt batterier med forskjellige plugger enn de som er koblet til, kan det hende du trenger passende adaptere. Uansett, få en adapter som tilsvarer kontakten til batteriet som driver skjermen. Her kan du få XT-60-adaptere

* = bare for mer avansert prosjekt

** = bare for mer grunnleggende prosjekt

Kostnader:

Hvis du starter fra bunnen av (men med loddejern osv.), Er det ikke noe FPV -system: ~ $ 370

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

Kostnad for FPV -system: $ 80

Trinn 2: Monter rammen

Monter rammen
Monter rammen
Monter rammen
Monter rammen
Monter rammen
Monter rammen

Dette trinnet er ganske enkelt, spesielt hvis du bruker den samme ferdige rammen som vi brukte. Bare bruk de medfølgende skruene og sett rammen sammen som vist, ved hjelp av en passende unbrakonøkkel eller skrutrekker for rammen. Sørg for at armer av samme farge er tilstøtende til hverandre (som på dette bildet), slik at dronen har en tydelig front og bakside. Sørg videre for at den lange delen av bunnplaten stikker ut mellom armene i motsatt farge. Dette blir viktig senere.

Trinn 3: Monter motorer og koble til Escs

Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs
Monter motorer og koble til Escs

Nå som rammen er montert, tar du ut de fire motorene og fire monteringstilbehør. Du kan bruke enten skruer som følger med monteringssettene, eller skruer som er igjen fra quadcopter -rammen for å skru motorene og festene på plass. Hvis du kjøper festene vi har knyttet til, får du to ekstra komponenter, bildet ovenfor. Vi har hatt god motoreffekt uten disse delene, så vi slapp dem for å redusere vekten.

Når motorene er skrudd på plass, epokser du strømfordelingsbordet (PDB) på toppen av topplaten på quadcopter -rammen. Sørg for at du orienterer den slik at batterikontakten peker ut mellom armer med ulik farge (parallelt med en av de lange delene av bunnplaten), som på bildet ovenfor.

Du bør også ha fire propellkjegler med innvendige tråder. Sett disse til side for nå.

Ta nå ut ESC -ene. Den ene siden vil ha to ledninger som kommer ut av den, en rød og en svart. Sett inn den røde ledningen i den positive kontakten på PDB og den svarte i den negative for hver av de fire ESC -ene. Vær oppmerksom på at hvis du bruker en annen PDB, kan dette trinnet kreve lodding. Koble nå hver av de tre ledningene som kommer ut av hver motor. På dette tidspunktet spiller det ingen rolle hvilken ESC -ledning du kobler til hvilken motortråd (så lenge du kobler alle ledningene til en ESC med samme motor!) Du vil korrigere eventuell bakoverpolaritet senere. Det er ikke farlig hvis ledninger er omvendt; det resulterer bare i at motoren snurrer bakover.

Trinn 4: Forbered Arduino og Shield

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

Et notat før du begynner

Først kan du velge å lodde alle ledningene sammen direkte. Vi fant det imidlertid uvurderlig å bruke pinnehoder fordi de gir mye fleksibilitet for feilsøking og tilpasning av prosjektet. Det som følger er en beskrivelse av hva vi gjorde (og anbefaler andre å gjøre).

Forbered Arduino og skjold

Ta ut Arduino Mega (eller en Uno hvis du gjør den ikke-autonome firhjulingen), GPS-skjoldet og stabelbare overskrifter. Lodd den mannlige enden av de stabelbare hodene på plass på GPS-skjoldet, i pinnene parallelt med de forhåndslodde pinnene, som vist på bildet ovenfor. Loddes også i stabelbare overskrifter på pinnraden merket 3V, CD, … RX. Bruk en wire cutter til å klippe av overflødig lengde på pinnene som stikker ut i bunnen. Plasser hannhoder med bøyde topper i alle disse stabelbare hodene. Dette er hva du skal lodde ledninger til for resten av komponentene.

Fest GPS -skjoldet til toppen, og pass på at pinnene stemmer overens med de på Arduino (Mega eller Uno). Vær oppmerksom på at hvis du bruker Mega, vil mye av Arduino fortsatt bli avslørt etter at du har satt skjoldet på plass.

Plasser elektrisk tape på bunnen av Arduino, som dekker alle de synlige pinsoldene, for å forhindre kortslutning mens Arduino hviler på PDB.

Trinn 5: Koble sammen komponenter og plasser batteri (Uno)

Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)
Koble sammen komponenter og plasser batteri (Uno)

Skjematikken ovenfor er nesten identisk med den som ble laget av Joop Brooking, da vi baserte designet vårt sterkt på hans.

*Vær oppmerksom på at denne skjematikken forutsetter et riktig montert GPS -skjold, og derfor vises ikke GPS -en i denne skjematikken.

Skjematikken ovenfor ble utarbeidet ved hjelp av Fritzing -programvare, som anbefales sterkt spesielt for skjemaer som involverer Arduino. Vi brukte for det meste generiske deler som kan redigeres fleksibelt, siden delene våre vanligvis ikke var i Fritzings inkluderte delbibliotek.

-Sørg for at bryteren på GPS -skjermen er slått til "Direct Write".

-Led nå alle komponentene i henhold til skjemaet ovenfor (bortsett fra batteriet!) (Viktig merknad om GPS -datakabler nedenfor).

-Merk at du allerede har koblet ESC -ene til motorene og PDB, så denne delen av skjemaet er ferdig.

-Vær også oppmerksom på at GPS -data (gule ledninger) kommer ut av pinne 0 og 1 på Arduino (ikke de separate Tx- og Rx -pinnene på GPS -en). Det er fordi konfigurert til "Direct Write" (se nedenfor), sender GPS -en ut direkte til maskinvarens serielle porter på unoen (pinner 0 og 1). Dette er tydeligst vist på det andre bildet ovenfor av hele ledningen.

-Se til bildet ovenfor når du kobler til RC -mottakeren. Vær oppmerksom på at datatrådene går inn i den øverste raden, mens Vin og Gnd er på henholdsvis den andre og tredje raden (og på den nest lengste kolonnen med pinner).

-For å gjøre ledningene til HC-12-mottakeren, RC-mottakeren og 5Vout fra PDB til Vin i Arduino brukte vi stabelbare hoder, mens vi for gyroen loddet ledningene direkte til brettet og ved hjelp av varmekrympende rør rundt loddetinn. Du kan velge å gjøre enten for noen av komponentene, men lodding direkte til gyroen anbefales, da det sparer plass som gjør den lille delen lettere å montere. Å bruke overskrifter er litt mer arbeid på forhånd, men gir mer fleksibilitet. Loddetråder direkte er en sikrere tilkobling på lang sikt, men betyr at det er vanskeligere å bruke denne komponenten på et annet prosjekt. Vær oppmerksom på at hvis du har brukt overskrifter på GPS -skjoldet, har du fortsatt en anstendig fleksibilitet uavhengig av hva du gjør. Avgjørende er at GPS -datakablene i pinne 0 og 1 på GPS -en er enkle å fjerne og bytte ut.

På slutten av prosjektet kunne vi ikke designe en god metode for å feste alle komponentene våre til rammen. På grunn av tidspresset i klassen vår, dreide løsningene våre oss vanligvis om dobbeltsidig skumtape, tape, elektrisk tape og glidelåser. Vi anbefaler på det sterkeste at du bruker mer tid på å designe stabile monteringsstrukturer hvis du planlegger at dette skal være et langsiktig prosjekt. Med alt det sagt, hvis du bare vil lage en rask prototype, kan du følge med i prosessen vår. Sørg imidlertid for at gyroen er montert forsvarlig. Dette er den eneste måten Arduino vet hva quadcopter gjør, så hvis det beveger seg i flukt vil du få problemer.

Med alt kablet og på plass, ta LiPo -batteriet og skyv det mellom topp- og bunnplatene på rammen. Kontroller at kontakten peker i samme retning som PDB -kontakten, og at de faktisk kan koble til. Vi brukte duct tape for å holde batteriet på plass (borrelås tape fungerer også, men er mer irriterende enn tape). Duct tape fungerer bra fordi man enkelt kan bytte batteri eller fjerne det for lading. Du må imidlertid være sikker på at du teiper batteriet TETT, som om batteriet beveger seg under flyging, kan dette alvorlig forstyrre balansen i dronen. IKKE koble batteriet til PDB ennå.

Trinn 6: Koble sammen komponenter og plasser batteri (Mega)

Koble sammen komponenter og plasser batteri (Mega)
Koble sammen komponenter og plasser batteri (Mega)
Koble sammen komponenter og plasser batteri (Mega)
Koble sammen komponenter og plasser batteri (Mega)
Koble sammen komponenter og plasser batteri (Mega)
Koble sammen komponenter og plasser batteri (Mega)

Skjematikken ovenfor ble utarbeidet ved hjelp av Fritzing -programvare, som anbefales sterkt spesielt for skjemaer som involverer arduino. Vi brukte for det meste generiske deler, siden delene våre vanligvis ikke var i Fritzings inkluderte delbibliotek.

-Merk at denne skjematikken antar et riktig montert GPS -skjold, og dermed vises ikke GPS -en i denne skjematikken.

-Vri bryteren på Mega 2560 til "Soft Serial".

-Led nå alle komponentene i henhold til skjemaet ovenfor (bortsett fra batteriet!)

-Merk at du allerede har koblet ESC -ene til motorene og PDB, så denne delen av skjemaet er ferdig.

-Jumperkablene fra Pin 8 til Rx og Pin 7 til Tx er der fordi (i motsetning til Uno, som dette skjoldet ble laget for), mangler mega en universell asynkron mottaker-sender (UART) på pinne 7 og 8, og dermed vi må bruke maskinvare serielle pinner. Det er flere grunner til at vi trenger serielle pinner for maskinvare, diskutert senere.

-Se til bildet ovenfor når du kobler til RC -mottakeren. Vær oppmerksom på at datatrådene går inn i den øverste raden, mens Vin og Gnd er på henholdsvis den andre og tredje raden (og på den nest lengste kolonnen med pinner).

-For å gjøre ledningene til HC-12-mottakeren, RC-mottakeren og 5Vout fra PDB til Vin i Arduino brukte vi stabelbare hoder, mens vi for gyroen loddet ledningene direkte og ved hjelp av varmekrympende rør rundt loddetinnet. Du kan velge å gjøre enten for noen av komponentene. Å bruke overskrifter er litt mer arbeid på forhånd, men gir mer fleksibilitet. Loddetråder direkte er en sikrere tilkobling på lang sikt, men betyr at det er vanskeligere å bruke denne komponenten på et annet prosjekt. Vær oppmerksom på at hvis du har brukt overskrifter på GPS -skjoldet, har du fortsatt en anstendig fleksibilitet uavhengig av hva du gjør.

På slutten av prosjektet kunne vi ikke designe en god metode for å feste alle komponentene våre til rammen. På grunn av tidspresset i klassen vår, dreide løsningene våre oss vanligvis om tosidig skumtape, tape, elektrisk tape og glidelåser. Vi anbefaler på det sterkeste at du bruker mer tid på å designe stabile monteringsstrukturer hvis du planlegger at dette skal være et langsiktig prosjekt. Med alt det sagt, hvis du bare vil lage en rask prototype, kan du gjerne følge med i prosessen vår. Sørg imidlertid for at gyroen er montert forsvarlig. Dette er den eneste måten Arduino vet hva quadcopter gjør, så hvis det beveger seg i flukt vil du få problemer.

Med alt kablet og på plass, ta LiPo -batteriet og skyv det mellom topp- og bunnplatene på rammen. Kontroller at kontakten peker i samme retning som PDB -kontakten, og at de faktisk kan koble til. Vi brukte duct tape for å holde batteriet på plass (borrelås tape fungerer også, men er mer irriterende enn tape). Duct tape fungerer bra fordi man enkelt kan bytte batteri eller fjerne det for lading. Du må imidlertid være sikker på at du teiper batteriet TETT, som om batteriet beveger seg under flyging, kan dette alvorlig forstyrre balansen i dronen. IKKE koble batteriet til PDB ennå.

Trinn 7: Bind mottaker

Bindemottaker
Bindemottaker
Bindemottaker
Bindemottaker

Ta RC -mottakeren og koble den midlertidig til en 5V strømforsyning (enten ved å slå på Arduino med USB eller 9V strøm, eller med en separat strømforsyning. Ikke koble LiPo til Arduino ennå). Ta bindingsnålen som fulgte med RC -mottakeren, og legg den til BIND -pinnene på mottakeren. Alternativt kan du kortslutte topp- og bunnpinnene i BIND -kolonnen som vist på bildet ovenfor. Et rødt lys bør blinke raskt på mottakeren. Ta nå kontrolleren og trykk på knappen på baksiden mens den er av, som vist ovenfor. Slå på kontrolleren med knappen inne. Nå skal det blinkende lyset på mottakeren slå fast. Mottakeren er bundet. Fjern bindingskabelen. Hvis du brukte en annen strømforsyning, kobler du mottakeren til 5V igjen fra Arduino.

Trinn 8: (Valgfritt) Koble sammen og monter FPV -kamerasystemet

(Valgfritt) Koble sammen og monter FPV -kamerasystemet
(Valgfritt) Koble sammen og monter FPV -kamerasystemet
(Valgfritt) Koble sammen og monter FPV -kamerasystemet
(Valgfritt) Koble sammen og monter FPV -kamerasystemet

Først lodder du sammen XT-60-adapteren med strøm- og jordledningene på skjermen. Disse kan variere fra skjerm til skjerm, men strømmen vil nesten alltid være rød, bakken nesten alltid svart. Sett nå adapteren med loddede ledninger inn i din 1000mAh LiPo med XT-60-pluggen. Skjermen skal slås på med (vanligvis) blå bakgrunn. Det er det vanskeligste trinnet!

Skru nå på antennene på mottakeren og senderen.

Koble din lille 500mAh Lipo til senderen. Den høyre pinnen (rett under antennen) er bakken (V_) av batteriet, den neste pinnen til venstre er V+. De kommer de tre ledningene som går til kameraet. Kameraet ditt skal leveres med en tre-i-en-plugg som passer inn i senderen. Sørg for at du har den gule datakabelen i midten. Hvis du brukte batteriene vi koblet til med plugger beregnet på dette, burde dette trinnet ikke kreve lodding.

Til slutt, koble til det andre 1000mAh batteriet med DC -utledningen som fulgte med mottakeren, og plugg det deretter inn i DC -porten på mottakeren. Til slutt kobler du den svarte enden av AVin -kabelen som fulgte med mottakeren til AVin -porten på mottakeren, og den andre (gul, hunn) enden til den gule hannenden på AVin -kabelen på skjermen.

På dette tidspunktet bør du kunne se en kameravisning på skjermen. Hvis du ikke kan, må du kontrollere at mottakeren og senderen begge er på (du bør se tall på de små skjermene) og at de er på samme kanal (vi brukte kanal 11 for begge og hadde god suksess). Videre må du kanskje bytte kanal på skjermen.

Monter komponentene på rammen.

Når oppsettet fungerer, koble fra batteriene til du er klar til å fly.

Trinn 9: Konfigurer GPS -datamottak

Sett opp GPS -datamottak
Sett opp GPS -datamottak
Sett opp GPS -datamottak
Sett opp GPS -datamottak

Koble til din andre Arduino med den andre HC-12-mottakeren som vist i diagrammet ovenfor, og husk at oppsettet bare får strøm som vist hvis det er koblet til en datamaskin. Last ned den medfølgende mottakerkoden, åpne den serielle skjermen til 9600 baud.

Hvis du bruker det mer grunnleggende oppsettet, bør du begynne å motta GPS-setninger hvis GPS-skjoldet er drevet og riktig koblet til den andre HC-12-mottakeren (og hvis bryteren på skjermen er på "Direct Write").

Med Mega må du kontrollere at bryteren er på "Soft Serial".

Trinn 10: Utfør oppsettskode (Uno)

Denne koden er identisk med den som Joop Brokking brukte i sin Arduino quadcopter -opplæring, og han fortjener all æren for at den er skrevet.

Når batteriet er frakoblet, bruker du USB -kabelen til å koble datamaskinen til Arduino og laste opp den vedlagte installasjonskoden. Slå på RC -senderen. Åpne den serielle skjermen til 57600 baud og følg instruksjonene.

Vanlige feil:

Hvis koden ikke lastes opp, må du kontrollere at pinne 0 og 1 er koblet fra UNO/GPS -skjoldet. Dette er den samme maskinvareporten som enheten bruker for å kommunisere med datamaskinen, så den må være gratis.

Hvis koden hopper gjennom en haug med trinn på en gang, må du kontrollere at GPS -bryteren er på "Direct Write".

Hvis det ikke oppdages noen mottaker, må du kontrollere at det er et fast (men svakt) rødt lys på mottakeren når senderen er på. Sjekk i så fall ledningene.

Hvis ingen gyro oppdages, kan dette skyldes at gyroen er skadet, eller hvis du har en annen type gyro enn den som koden er designet for å skrive til.

Trinn 11: Utfør oppsettskode (Mega)

Denne koden er identisk med den som Joop Brokking brukte i sin Arduino quadcopter -opplæring, og han fortjener all æren for at den er skrevet. Vi har ganske enkelt tilpasset ledningene til Mega slik at mottakerinngangene tilsvarer de riktige Pin Change Interrupt -pinnene.

Når batteriet er frakoblet, bruker du USB -kabelen til å koble datamaskinen til Arduino og laste opp den vedlagte installasjonskoden. Åpne den serielle skjermen til 57600 baud og følg instruksjonene.

Trinn 12: Kalibrer ESC -er (Uno)

Nok en gang er denne koden identisk med Joop Brokings kode. Alle modifikasjonene ble gjort i et forsøk på å integrere GPS og Arduino og kan bli funnet senere i beskrivelsen av konstruksjonen til det mer avanserte quadcopter.

Last opp den vedlagte ESC -kalibreringskoden. Skriv bokstaven 'r' på den serielle skjermen og trykk på retur. Du bør begynne å se sanntids RC -kontrollerverdier oppført. Kontroller at de varierer fra 1000 til 2000 på ytterpunktene for gass, rull, pitch og yaw. Skriv deretter 'a' og trykk retur. La gyro -kalibreringen gå, og kontroller deretter at gyroen registrerer bevegelse av firhjulingen. Koble nå arduinoen fra datamaskinen, skyv gassen helt opp på kontrolleren og koble til batteriet. ESC -ene bør sykle forskjellige tonn tonn (men dette kan være forskjellig avhengig av ESC og fastvaren). Skyv gassen helt ned. ESC -ene skal avgi lavere pip, for så å tie. Trekk ut batteriet.

Alternativt kan du på dette tidspunktet bruke kjeglene som fulgte med tilbehørspakkene for motormontering for å skru fast propellene tett. Skriv deretter inn tallene 1 - 4 på den serielle skjermen for å slå på motorene 1 - 4 henholdsvis med laveste effekt. Programmet vil registrere mengden risting på grunn av ubalanse i rekvisittene. Du kan prøve å bøte på dette ved å legge små mengder skrapebånd til den ene eller den andre rekvisitten. Vi fant ut at vi kunne få god flytur uten dette trinnet, men kanskje litt mindre effektivt og mer høyt enn vi hadde balansert rekvisittene.

Trinn 13: Kalibrer ESC (Mega)

Denne koden er veldig lik Brokings kode, men vi tilpasset den (og tilhørende ledninger) for å fungere med Mega.

Last opp den vedlagte ESC -kalibreringskoden. Skriv bokstaven 'r' på den serielle skjermen og trykk på retur. Du bør begynne å se sanntids RC -kontrollerverdier oppført. Kontroller at de varierer fra 1000 til 2000 på ytterpunktene for gass, rull, pitch og yaw.

Skriv deretter 'a' og trykk retur. La gyro -kalibreringen gå, og kontroller deretter at gyroen registrerer bevegelse av firhjulingen.

Koble nå arduinoen fra datamaskinen, skyv gassen helt opp på kontrolleren og koble til batteriet. ESC -ene skal avgi tre lave pip etterfulgt av et høyt pip (men dette kan variere avhengig av ESC og fastvaren). Skyv gassen helt ned. Trekk ut batteriet.

Endringene vi gjorde i denne koden var å bytte fra å bruke PORTD for ESC -pinnene til å bruke PORTA og deretter endre byte skrevet til disse portene, slik at vi aktiverer de riktige pinnene som vist i ledningsskjemaet. Denne endringen er fordi PORTD -registernålene ikke er på samme sted på Mega som de er i Uno. Vi har ikke klart å teste denne koden fullt ut da vi jobbet med en gammel off-brand Mega som skolens butikk hadde. Dette betydde at av en eller annen grunn ikke alle PORTA -registerpinnene klarte å aktivere ESC -ene på riktig måte. Vi hadde også problemer med å bruke eller lik operatøren (| =) i noen av testkodene våre. Vi er usikre på hvorfor dette forårsaket problemer når vi skrev bytes for å angi ESC -pin -spenningene, så vi endret Brookings kode så lite som mulig. Vi tror at denne koden er veldig nær funksjonell, men kjørelengden din kan variere.

Trinn 14: Bli luftbåren !! (Uno)

Og igjen, denne tredje biten av geni -kode er arbeidet til Joop Brokking. Endringer i alle disse tre kodene er bare tilstede i vårt forsøk på å integrere GPS -dataene i Arduino.

Med propellene dine godt festet på rammen og alle komponentene festet, teipet eller på annen måte montert på, laster du flykontrollerkoden til Arduinoen, og kobler deretter Arduino fra datamaskinen.

Ta quadcopter utenfor, plugg inn batteriet og slå på senderen. Du kan også ta med deg en bærbar datamaskin som er koblet til oppsettet for GPS -mottak, samt oppsett og skjerm for videomottak. Last inn mottakerkoden på din terrestriske Arduino, åpne den serielle skjermen til 9600 baud og se GPS -dataene rulle inn.

Nå er du klar til å fly. Skyv gasspaken nedover og gjev til venstre for å bevæpne quadcopter, og ta deretter forsiktig opp gassen for å sveve. Begynn med å fly lavt til bakken og over myke overflater som gress til du blir komfortabel.

Se den innebygde videoen av oss som spente med dronen første gangen vi klarte å få dronen og GPS til å fungere samtidig.

Trinn 15: Bli luftbåren !! (Mega)

På grunn av vår henge med ESC -kalibreringskoden for Mega, klarte vi aldri å lage flykontrollerkode for dette kortet. Hvis du har kommet til dette punktet, så forestiller jeg meg at du i det minste har tuklet med ESC -kalibreringskoden for å få den til å fungere for Mega. Derfor vil du sannsynligvis måtte gjøre lignende endringer i flykontrollerkoden som du gjorde i det siste trinnet. Hvis vår ESC -kalibreringskode for Mega magisk fungerer uten andre endringer, er det bare noen få ting du må gjøre med aksjekoden for å få den til å fungere for dette trinnet. Du må først gå gjennom og erstatte alle forekomster av PORTD med PORTA. Ikke glem å endre DDRD til DDRA. Deretter må du endre alle byte som skrives til PORTA -registeret slik at de aktiverer de riktige pinnene. For å gjøre dette, bruk byte B11000011 til å sette pinnene til høye og B00111100 for å sette pinnene til lave. Lykke til, og gi oss beskjed hvis du lykkes med å fly med en Mega!

Trinn 16: Hvordan vi kom dit vi er med Mega Design

Dette prosjektet var en enorm læringsopplevelse for oss som Arduino og nybegynnere innen elektronikkhobby. Derfor skjønner vi at vi ville inkludere historien om alt vi møtte mens vi prøvde å GPS aktivere Joop Brokings kode. Fordi Brokings kode er så grundig og mye mer komplisert enn noe vi skrev, bestemte vi oss for å endre den så lite som mulig. Vi prøvde å få GPS -skjoldet til å sende data til Arduino og deretter få Arduino til å sende denne informasjonen til oss via HC12 -mottakeren uten å endre flykoden eller kabling på noen måte. Etter å ha sett på skjemaene og ledningene til vår Arduino Uno for å finne ut hvilke pinner som var tilgjengelige, endret vi GPS -mottakerkoden som vi brukte for å omgå det eksisterende designet. Deretter testet vi det for å sikre at alt fungerte. På dette tidspunktet virket ting lovende.

Det neste trinnet var å integrere koden som vi nettopp hadde endret og testet med Brokings flykontroller. Dette var ikke så vanskelig, men vi kjørte raskt på en feil. Brokings flykontroller er avhengig av Arduino Wire- og EEPROM -bibliotekene mens GPS -koden vår brukte både Software Serial -biblioteket og Arduino GPS -biblioteket. Fordi Wire Library refererer til Software Serial -biblioteket, støtte vi på en feil der koden ikke ville kompilere fordi det var "flere definisjoner for _vector 3_", uansett hva det betyr. Etter å ha sett på Google og gravd rundt i bibliotekene, innså vi til slutt at denne bibliotekkonflikten gjorde det umulig å bruke disse kodene sammen. Så vi søkte etter alternativer.

Det vi fant ut er at den eneste kombinasjonen av biblioteker som ikke kastet feil på oss var å bytte standard GPS -bibliotek til neoGPS og deretter bruke AltSoftSerial i stedet for Software Serial. Denne kombinasjonen fungerte, men AltSoftSerial kan bare fungere med spesifikke pinner, som ikke var tilgjengelige i vårt design. Dette er det som førte oss til å bruke Mega. Arduino Megas har flere serielle porter for maskinvare, noe som betydde at vi kunne omgå denne bibliotekkonflikten ved ikke å trenge å åpne serielle porter for programvare.

Da vi begynte å bruke Mega, skjønte vi imidlertid raskt at pin -konfigurasjonen var annerledes. Pins på Uno som har avbrudd er forskjellige på Mega. På samme måte var SDA- og SCL -pinnene forskjellige steder. Etter å ha studert pin-diagrammer for hver type Arduino, og referert til registrene som ble kalt inn i koden, kunne vi kjøre flyoppsettskoden med bare minimal omkobling og ingen programvareendringer.

ESC -kalibreringskoden er der vi begynte å støte på problemer. Vi berørte dette kort før, men i utgangspunktet bruker koden pin -registre for å regulere pinnene som brukes til å kontrollere ESC -ene. Dette gjør koden vanskeligere å lese enn å bruke standard pinMode () -funksjonen; det får imidlertid koden til å løpe raskere og aktivere pins samtidig. Dette er viktig fordi flykoden kjører i en nøye tidsbestemt løkke. På grunn av pinforskjellene mellom Arduinos, bestemte vi oss for å bruke portregister A på Mega. Men i testene våre ga ikke alle pinnene oss den samme utgangsspenningen når de ble bedt om å løpe høyt. Noen av pinnene hadde en effekt på rundt 4,90V og andre ga oss nærmere 4,95V. Tilsynelatende er ESC -er som vi har, noe finurlige, og så ville de bare fungere skikkelig når vi brukte pinnene med høyere spenning. Dette tvang oss deretter til å endre byte vi skrev for å registrere A slik at vi snakket med de riktige pinnene. Det er mer informasjon om dette i ESC -kalibreringsdelen.

Dette er omtrent så langt som vi kom i denne delen av prosjektet. Da vi gikk for å teste denne modifiserte ESC -kalibreringskoden, ble det noe kortslutning og vi mistet kommunikasjonen med vår Arduino. Vi var ekstremt forvirret over dette fordi vi ikke hadde endret noen av ledningene. Dette tvang oss til å gå tilbake og innse at vi bare hadde et par dager på å få en flygende drone etter flere uker med å prøve å passe våre inkompatible brikker sammen. Dette er grunnen til at vi gikk tilbake og opprettet det enklere prosjektet med Uno. Imidlertid tror vi fortsatt at vår tilnærming er nær å jobbe med Mega med litt mer tid.

Målet vårt er at denne forklaringen på hindringene vi møtte er nyttig for deg hvis du jobber med å endre Brokings kode. Vi fikk heller aldri sjansen til å prøve å kode noen autonome kontrollfunksjoner basert på GPS -en. Dette er noe du må finne ut av etter å ha opprettet en fungerende drone med en Mega. Fra noen foreløpige Google -undersøkelser ser det imidlertid ut til at implementering av et Kalman -filter kan være den mest stabile og nøyaktige måten å bestemme posisjon under flyging. Vi foreslår at du undersøker litt om hvordan denne algoritmen optimaliserer tilstandsestimater. Annet enn det, lykke til og gi oss beskjed hvis du kommer lenger enn vi klarte!

Anbefalt: