Innehållsförteckning:

Arduino Drone med GPS: 16 steg
Arduino Drone med GPS: 16 steg

Video: Arduino Drone med GPS: 16 steg

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

Vi bestämde oss för att bygga en Arduino-kontrollerad och stabiliserad, GPS-aktiverad first-person-view (FPV) quadcopter drone med återkomst till hemmet, gå till koordinater och GPS-hållfunktioner. Vi antog naivt att det skulle vara relativt enkelt att kombinera befintliga Arduino -program och kablar för en quadcopter utan GPS med GPS -överföringssystemet och att vi snabbt kunde gå vidare till mer komplexa programmeringsuppgifter. Dock måste en överraskande mängd förändras för att koppla ihop dessa två projekt, och därmed slutade vi med att göra en GPS-aktiverad FPV-quadcopter, utan någon tilläggsfunktion.

Vi har inkluderat instruktioner om hur du replikerar vår produkt om du är nöjd med den mer begränsade quadcoptern.

Vi har också inkluderat alla steg vi tog på vägen till en mer autonom quadcopter. Om du känner dig bekväm att gräva djupt i Arduino eller redan har mycket Arduino-erfarenhet och skulle vilja ta vår stopppunkt som en startpunkt för din egen utforskning, då är denna instruerbara också något för dig.

Detta är ett fantastiskt projekt för att lära dig något om att bygga och koda för Arduino oavsett hur mycket erfarenhet du har. Du kommer också förhoppningsvis att gå iväg med en drönare.

Inställningen är följande:

I materiallistan krävs delar utan asterisk för båda målen.

Delar med en asterisk krävs bara för det oavslutade projektet med en mer autonom quadcopter.

Delar med två asterisker krävs endast för den mer begränsade quadcoptern.

Steg som är gemensamma för båda projekten har ingen markör efter titeln

Steg som bara krävs för den mer begränsade icke-autonoma quadcoptern har "(Uno)" efter titeln.

Steg som bara krävs för den pågående autonoma quadcoptern har "(Mega)" efter titeln.

För att bygga den Uno-baserade quad, följ stegen i ordning, hoppa över alla steg med "(Mega)" efter titeln.

För att arbeta med den megabaserade quad, följ stegen i ordning, hoppa över alla steg med "(Uno)" efter titeln.

Steg 1: Samla material

Komponenter:

1) En quadcopter -ram (den exakta ramen spelar sannolikt ingen roll) ($ 15)

2) Fyra borstlösa motorer på 2830, 900kV (eller liknande) och fyra tillbehörspaket (4x $ 6 + 4x $ 4 = totalt $ 40)

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

4) Ett kraftfördelningskort (med XT-60-anslutning) ($ 20)

5) Ett 3s, 3000-5000mAh LiPo-batteri med XT-60-anslutning (3000mAh motsvarar ca 20 min flygtid) ($ 25)

6) Massor av drivmedel (dessa går sönder mycket) ($ 10)

7) En Arduino Mega 2560* ($ 40)

8) En Arduino Uno R3 ($ 20)

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

10) En Arduino Ultimate GPS -sköld (du behöver inte skölden, men att använda en annan GPS kräver olika kablar) ($ 45)

11) Två HC-12 trådlösa sändtagare (2x $ 5 = $ 10)

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

13) Ett Turnigy 9x 2,4 GHz, 9 -kanals sändare/mottagarpar ($ 70)

14) Arduino kvinnliga (stapelbara) rubriker ($ 20)

15) LiPo batteriladdare (och 12V DC -adapter, ingår ej) ($ 20)

17) USB A till B hane till han adapterkabel ($ 5)

17) Tejp

18) Krympslang

Utrustning:

1) Ett lödkolv

2) Lödning

3) Plast Epoxi

4) Lättare

5) Wire stripper

6) En uppsättning insexnycklar

Valfria komponenter för realtid FPV (förstapersonsvisning) videoöverföring:

1) En liten FPV-kamera (den här länkar till den ganska billiga och dåliga kvaliteten vi använde, du kan ersätta en bättre) ($ 20)

2) 5,6 GHz videosändare/mottagarpar (832 modeller används) ($ 30)

3) 500mAh, 3s (11.1V) LiPo -batteri ($ 7) (vi använde med en banankontakt, men vi rekommenderar i efterhand att du använder det länkade batteriet, eftersom det har en kontakt kompatibel med TS832 -sändaren, och därmed inte t kräver lödning).

4) 2 1000mAh 2s (7,4V) LiPo -batteri eller liknande ($ 5). Antal mAh är inte kritiskt så länge det är mer än 1000mAh eller så. Samma uttalande som ovan gäller pluggtypen för ett av de två batterierna. Den andra kommer att användas för att driva bildskärmen, så du måste lödas oavsett vad. Förmodligen bäst att få en med en XT-60-kontakt för detta (det är vad vi gjorde). En länk för den typen finns här: 1000mAh 2s (7,4V) LiPo med XT-60-kontakt

5) LCD -skärm (tillval) ($ 15). Du kan också använda en AV-USB-adapter och DVD-kopieringsprogramvara för att se direkt på en bärbar dator. Detta ger också möjlighet att spela in video och foton, snarare än att bara titta på dem i realtid.

6) Om du har köpt batterier med olika kontakter från de länkade kan du behöva lämpliga adaptrar. Oavsett, skaffa en adapter som motsvarar kontakten för batteriet som driver bildskärmen. Här kan du få XT-60-adaptrar

* = endast för mer avancerat projekt

** = bara för mer grundläggande projekt

Kostar:

Om du börjar från början (men med lödkolv, etc …), inget FPV -system: ~ $ 370

Om du redan har en RC -sändare/mottagare, LiPo -batteriladdare och LiPo -batteri: ~ $ 260

Kostnad för FPV -system: $ 80

Steg 2: Montera ramen

Montera ramen
Montera ramen
Montera ramen
Montera ramen
Montera ramen
Montera ramen

Det här steget är ganska enkelt, särskilt om du använder samma färdiga ram som vi använde. Använd bara de medföljande skruvarna och sätt ihop ramen enligt bilden med en lämplig insexnyckel eller skruvmejsel för din ram. Se till att armar med samma färg ligger intill varandra (som på den här bilden), så att drönaren har en tydlig fram- och baksida. Se också till att den långa delen av bottenplattan sticker ut mellan motsatta färgade armar. Detta blir viktigt senare.

Steg 3: Montera motorer och anslut Escs

Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs
Montera motorer och anslut Escs

Nu när ramen är monterad, ta ut de fyra motorerna och fyra monteringstillbehör. Du kan antingen använda skruvar som ingår i monteringssatserna eller skruvar som sitter kvar från quadcopter -ramen för att skruva fast motorerna och fästena. Om du köper fästena som vi har länkat till får du två extra komponenter, bilden ovan. Vi har haft bra motorprestanda utan dessa delar, så vi lämnade dem för att minska vikten.

När motorerna har skruvats på plats, epoxi kraftfördelningskortet (PDB) på plats ovanpå den övre plattan på quadcopter -ramen. Se till att du orienterar den så att batterikontakten pekar ut mellan olika färgade armar (parallellt med en av de långa delarna av bottenplattan), som på bilden ovan.

Du bör också ha fyra propellerkottar med invändiga gängor. Lägg dessa åt sidan för nu.

Ta nu ut dina ESC. Ena sidan kommer att ha två trådar ut ur den, en röd och en svart. För var och en av de fyra ESC: erna, sätt in den röda tråden i den positiva kontakten på PDB och den svarta i den negativa. Observera att om du använder en annan PDB kan detta steg kräva lödning. Anslut nu var och en av de tre ledningar som kommer ut från varje motor. Vid det här laget spelar det ingen roll vilken ESC -kabel du ansluter till vilken motorkabel (så länge du ansluter alla ledningar till en ESC med samma motor!) Du kommer att korrigera eventuell bakåtpolaritet senare. Det är inte farligt om trådarna vänds; det resulterar bara i att motorn snurrar bakåt.

Steg 4: Förbered Arduino och Shield

Förbered Arduino och Shield
Förbered Arduino och Shield
Förbered Arduino och Shield
Förbered Arduino och Shield

En anteckning innan du börjar

Först kan du välja att löda ihop alla trådar direkt. Vi fann det dock ovärderligt att använda stifthuvuden eftersom de ger stor flexibilitet för felsökning och anpassning av projektet. Det som följer är en beskrivning av vad vi gjorde (och rekommenderar andra att göra).

Förbered Arduino och sköld

Ta ut din Arduino Mega (eller en Uno om du gör den icke-autonoma fyrhjulingen), GPS-skölden och stapelbara rubriker. Löd den manliga änden av de stapelbara rubrikerna på plats på GPS-skölden, i raderna av stift parallellt med de förlödda stiften, som visas i bilden ovan. Löd också i stapelbara rubriker på stiftraden märkt 3V, CD, … RX. Använd en trådskärare för att klippa bort överskottslängden på stiften som sticker ut i botten. Placera manliga rubriker med böjda toppar i alla dessa stapelbara rubriker. Detta är vad du kommer att löda trådar till för resten av komponenterna.

Fäst GPS -skölden upptill och se till att stiften matchar stiften på Arduino (Mega eller Uno). Observera att om du använder Mega kommer mycket av Arduino fortfarande att avslöjas efter att du har placerat skölden.

Placera eltejp på botten av Arduino, som täcker alla exponerade stiftlödare, för att förhindra kortslutning när Arduino vilar på PDB.

Steg 5: Koppla ihop komponenterna och placera batteriet (Uno)

Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)
Koppla ihop komponenterna och placera batteriet (Uno)

Schemat ovan är nästan identiskt med det som gjorts av Joop Brooking då vi starkt baserade vår design på hans.

*Observera att denna schematik förutsätter en korrekt monterad GPS -sköld, och därför visas inte GPS: en i denna schema.

Schemat ovan framställdes med Fritzing -programvara, vilket rekommenderas starkt särskilt för scheman som involverar Arduino. Vi använde mestadels generiska delar som kan redigeras flexibelt, eftersom våra delar i allmänhet inte fanns i Fritzings inkluderade delbibliotek.

-Se till att omkopplaren på GPS -skärmen är inställd på "Direct Write".

-Koppla nu ihop alla komponenter enligt schemat ovan (förutom batteriet!) (Viktig anmärkning om GPS -datakablar nedan).

-Observera att du redan har anslutit ESC till motorerna och PDB, så den här delen av schemat är klar.

Observera vidare att GPS -data (gula ledningar) kommer ut från stift 0 och 1 på Arduino (inte de separata Tx- och Rx -stiften på GPS: en). Det beror på att GPS -konfigurationen är konfigurerad för "Direct Write" (se nedan) direkt till maskinvarans seriella portar (stift 0 och 1). Detta visas tydligast på den andra bilden ovan av hela ledningen.

-Se när du ansluter RC -mottagaren till bilden ovan. Observera att datakablarna går in i den översta raden, medan Vin och Gnd finns på den andra respektive tredje raden (och på den näst längsta kolumnen med stift).

-För att göra kablarna för HC-12-sändtagaren, RC-mottagaren och 5Vout från PDB till Vin i Arduino använde vi stapelbara sidhuvuden, medan vi för gyro lödde trådarna direkt på brädet och med värmekrympslangar runt löda. Du kan välja att göra antingen för någon av komponenterna, men lödning direkt till gyro rekommenderas eftersom det sparar utrymme vilket gör den lilla delen lättare att montera. Att använda rubriker är lite mer arbete i förväg, men ger mer flexibilitet. Lödningstrådar direkt är en säkrare anslutning på lång sikt, men betyder ändå att det är svårare att använda den komponenten på ett annat projekt. Observera att om du har använt headers på GPS -skölden har du fortfarande en anständig flexibilitet oavsett vad du gör. Avgörande är att se till att GPS -datakablarna i stiften 0 och 1 på GPS: n är lätta att ta bort och byta ut.

I slutet av vårt projekt kunde vi inte utforma en bra metod för att fästa alla våra komponenter på ramen. På grund av tidstrycket i vår klass kretsade våra lösningar i allmänhet kring dubbelsidig skumtejp, gaffatejp, eltejp och dragkedjor. Vi rekommenderar starkt att du lägger mer tid på att designa stabila monteringsstrukturer om du planerar att detta ska vara ett långsiktigt projekt. Med allt detta sagt, om du bara vill göra en snabb prototyp, följ gärna i vår process. Se dock till att gyro är ordentligt monterad. Detta är det enda sättet som Arduino vet vad quadcoptern gör, så om den rör sig i flygning kommer du att ha problem.

När allt är anslutet och på plats, ta ditt LiPo -batteri och skjut in det mellan ramens övre och nedre plattor. Se till att kontakten pekar i samma riktning som PDB: s kontakt och att de faktiskt kan anslutas. Vi använde gaffatejp för att hålla batteriet på plats (kardborreband fungerar också, men är mer irriterande än tejp). Gaffatejp fungerar bra eftersom man enkelt kan byta ut batteriet eller ta bort det för laddning. Du måste dock vara säker på att du tejpar batteriet TÄTT, som om batteriet rör sig under flygning kan detta allvarligt störa drönarens balans. Anslut INTE batteriet till PDB än.

Steg 6: Koppla ihop komponenterna och placera batteriet (Mega)

Koppla ihop komponenterna och placera batteriet (Mega)
Koppla ihop komponenterna och placera batteriet (Mega)
Koppla ihop komponenterna och placera batteriet (Mega)
Koppla ihop komponenterna och placera batteriet (Mega)
Koppla ihop komponenterna och placera batteriet (Mega)
Koppla ihop komponenterna och placera batteriet (Mega)

Schemat ovan framställdes med Fritzing -programvara, vilket rekommenderas starkt speciellt för scheman med arduino. Vi använde mestadels generiska delar, eftersom våra delar i allmänhet inte fanns i Fritzings delbibliotek.

Observera att denna schematisk antar en korrekt monterad GPS -sköld, och att GPS inte visas i den här schemat.

-Vrid omkopplaren på din Mega 2560 till "Soft Serial".

-Koppla nu ihop alla komponenter enligt schemat ovan (förutom batteriet!)

-Observera att du redan har kopplat upp ESC: erna till motorerna och PDB, så den här delen av schemat är klar.

-Hopparkablarna från stift 8 till Rx och stift 7 till Tx finns där eftersom (till skillnad från Uno, för vilken denna skärm gjordes), saknar mega en universell asynkron mottagarsändare (UART) på stift 7 och 8, och därmed vi måste använda hårdvaruseriella stift. Det finns fler anledningar till att vi behöver seriella stift för hårdvara, som diskuteras senare.

-Se när du ansluter RC -mottagaren till bilden ovan. Observera att datakablarna går in i den översta raden, medan Vin och Gnd finns på den andra respektive tredje raden (och på den näst längsta kolumnen med stift).

-För att göra ledningarna för HC-12-sändtagaren, RC-mottagaren och 5Vout från PDB till Vin i Arduino använde vi stapelbara rubriker, medan vi för gyro lödde trådarna direkt och med värmekrympande rör runt lödet. Du kan välja att göra antingen för någon av komponenterna. Att använda rubriker är lite mer arbete i förväg, men ger mer flexibilitet. Lödningstrådar direkt är en säkrare anslutning på lång sikt, men betyder ändå att det är svårare att använda den komponenten på ett annat projekt. Observera att om du har använt rubriker på GPS -skölden har du fortfarande en anständig flexibilitet oavsett vad du gör.

I slutet av vårt projekt kunde vi inte utforma en bra metod för att fästa alla våra komponenter på ramen. På grund av tidstrycket i vår klass kretsade våra lösningar i allmänhet kring dubbelsidig skumtejp, gaffatejp, eltejp och dragkedjor. Vi rekommenderar starkt att du lägger mer tid på att designa stabila monteringsstrukturer om du planerar att detta ska vara ett långsiktigt projekt. Med allt detta sagt, om du bara vill göra en snabb prototyp, följ gärna i vår process. Se dock till att gyro är ordentligt monterad. Detta är det enda sättet som Arduino vet vad quadcoptern gör, så om den rör sig i flygning kommer du att ha problem.

När allt är anslutet och på plats, ta ditt LiPo -batteri och skjut in det mellan ramens övre och nedre plattor. Se till att kontakten pekar i samma riktning som PDB: s kontakt och att de faktiskt kan anslutas. Vi använde gaffatejp för att hålla batteriet på plats (kardborreband fungerar också, men är mer irriterande än tejp). Gaffatejp fungerar bra eftersom man enkelt kan byta ut batteriet eller ta bort det för laddning. Du måste dock vara säker på att du tejper batteriet TÄTT, som om batteriet rör sig under flygning kan detta allvarligt störa drönarens balans. Anslut INTE batteriet till PDB än.

Steg 7: Bind mottagare

Bindmottagare
Bindmottagare
Bindmottagare
Bindmottagare

Ta RC -mottagaren och anslut den tillfälligt till en 5V -strömförsörjning (antingen genom att slå på Arduino med USB- eller 9V -ström, eller med en separat strömförsörjning. Anslut inte LiPo till Arduino än). Ta bindstiftet som följde med RC -mottagaren och placera det på BIND -stiften på mottagaren. Alternativt kan du korta de övre och nedre stiften i BIND -kolumnen som visas på bilden ovan. En röd lampa ska blinka snabbt på mottagaren. Ta nu kontrollen och tryck på knappen på baksidan medan den är avstängd, som visas ovan. Med knappen intryckt sätter du på kontrollen. Nu ska den blinkande lampan på mottagaren lysa med fast sken. Mottagaren är bunden. Ta bort bindningskabeln. Om du använde en annan strömförsörjning, anslut mottagaren till 5V från Arduino igen.

Steg 8: (Valfritt) Koppla ihop och montera FPV -kamerasystemet

(Valfritt) Koppla ihop och montera FPV -kamerasystemet
(Valfritt) Koppla ihop och montera FPV -kamerasystemet
(Valfritt) Koppla ihop och montera FPV -kamerasystemet
(Valfritt) Koppla ihop och montera FPV -kamerasystemet

Löd först ihop XT-60-adaptern med ström- och jordledningarna på monitorn. Dessa kan variera från bildskärm till bildskärm, men strömmen kommer nästan alltid att vara röd, marken nästan alltid svart. Sätt nu in adaptern med lödda trådar i din 1000mAh LiPo med XT-60-kontakten. Skärmen ska sättas på med (vanligtvis) blå bakgrund. Det är det svåraste steget!

Skruva nu fast antennerna på din mottagare och sändare.

Anslut din lilla 500mAh Lipo till sändaren. Den högra stiftet (precis under antennen) är jordat (V_) på batteriet, nästa stift till vänster är V+. De kommer de tre ledningarna som går till kameran. Din kamera bör levereras med en tre-i-ett-kontakt som passar in i sändaren. Se till att du har den gula datatråden i mitten. Om du använde batterierna som vi länkade till med pluggar avsedda för detta bör detta steg inte kräva någon lödning.

Slutligen, koppla upp ditt andra 1000mAh -batteri med DC -utkabeln som följde med din mottagare, och anslut sedan det till DC -porten på din mottagare. Slutligen ansluter du den svarta änden av AVin -kabeln som följde med din mottagare till AVin -porten på din mottagare och den andra (gul, kvinnlig) änden till den gula hanänden på AVin -kabeln på din bildskärm.

Vid denna tidpunkt bör du kunna se en kameravy på monitorn. Om du inte kan se till att både mottagaren och sändaren är på (du bör se siffror på deras små skärmar) och att de är på samma kanal (vi använde kanal 11 för båda och hade bra framgång). Dessutom kan du behöva byta kanal på monitorn.

Montera komponenterna på ramen.

När installationen fungerar, koppla ur batterierna tills du är redo att flyga.

Steg 9: Konfigurera GPS -datamottagning

Ställ in GPS -datamottagning
Ställ in GPS -datamottagning
Ställ in GPS -datamottagning
Ställ in GPS -datamottagning

Koppla upp din andra Arduino med din andra HC-12-sändtagare som visas i schemat ovan, kom ihåg att installationen bara kommer att drivas som visas om den är ansluten till en dator. Ladda ner den medföljande transceiverkoden, öppna din seriella bildskärm till 9600 baud.

Om du använder den mer grundläggande inställningen bör du börja ta emot GPS-meningar om din GPS-skärm är strömförsörjd och korrekt ansluten till den andra HC-12-sändtagaren (och om omkopplaren på skärmen är på "Direct Write").

Med Mega, se till att omkopplaren är på "Soft Serial".

Steg 10: Utför installationskoden (Uno)

Denna kod är identisk med den som Joop Brokking använde i sin Arduino quadcopter -handledning, och han förtjänar all heder för sitt skrivande.

Med batteriet urkopplat, använd USB -kabeln för att ansluta din dator till Arduino och ladda upp den bifogade installationskoden. Slå på din RC -sändare. Öppna din seriella bildskärm till 57600 baud och följ anvisningarna.

Vanliga fel:

Om koden inte laddas upp, se till att stiften 0 och 1 är urkopplade på UNO/GPS -skölden. Detta är samma hårdvaruport som enheten använder för att kommunicera med datorn, så den måste vara ledig.

Om koden hoppar igenom ett gäng steg på en gång, kontrollera att din GPS -switch är på "Direct Write".

Om ingen mottagare upptäcks, se till att det lyser fast (men svagt) rött ljus på din mottagare när sändaren är på. Kontrollera i så fall ledningarna.

Om ingen gyro upptäcks kan det bero på att gyro är skadad eller om du har en annan typ av gyro än den som koden är utformad att skriva till.

Steg 11: Utför installationskoden (Mega)

Denna kod är identisk med den som Joop Brokking använde i sin Arduino quadcopter -handledning, och han förtjänar all heder för sitt skrivande. Vi anpassade helt enkelt kablarna för Mega så att mottagarens ingångar motsvarade rätt Pin Change Interrupt -stift.

Med batteriet urkopplat, använd USB -kabeln för att ansluta din dator till Arduino och ladda upp den bifogade installationskoden. Öppna din seriella bildskärm till 57600 baud och följ anvisningarna.

Steg 12: Kalibrera ESC: erna (Uno)

Återigen är denna kod identisk med Joop Brokings kod. Alla ändringar gjordes för att integrera GPS och Arduino och kan hittas senare i beskrivningen av konstruktionen av den mer avancerade quadcoptern.

Ladda upp den bifogade ESC -kalibreringskoden. Skriv bokstaven 'r' på den seriella bildskärmen och tryck på retur. Du bör börja se realtidsvärden för RC -kontroller listade. Kontrollera att de varierar från 1000 till 2000 i ytterligheterna för gas, rullning, tonhöjd och yaw. Skriv sedan 'a' och tryck på retur. Låt gyrokalibreringen gå och verifiera sedan att gyroregistrerar fyrhjulingens rörelse. Koppla nu arduino från datorn, tryck gasreglaget helt upp på styrenheten och anslut batteriet. ESC: erna bör cykla olika pipton (men det kan vara olika beroende på ESC och dess firmware). Tryck gasreglaget helt ner. ESC: erna bör avge lägre pip och sedan tysta. Koppla ur batteriet.

Alternativt kan du vid denna tidpunkt använda kottarna som följde med tillbehörspaketet för motormontering för att skruva fast propellrarna ordentligt. Ange sedan siffrorna 1 - 4 på seriemonitorn för att starta motorerna 1 - 4 respektive med lägsta effekt. Programmet registrerar mängden skakningar på grund av rekvisitens obalans. Du kan försöka åtgärda detta genom att lägga till små mängder skotstejp på den ena eller andra sidan av rekvisita. Vi fann att vi kunde få bra flyg utan detta steg, men kanske något mindre effektivt och mer högljutt än vi hade balanserat rekvisita.

Steg 13: Kalibrera ESC (Mega)

Denna kod är mycket lik Brokings kod, men vi anpassade den (och motsvarande ledningar) för att fungera med Mega.

Ladda upp den bifogade ESC -kalibreringskoden. Skriv bokstaven 'r' på den seriella bildskärmen och tryck på retur. Du bör börja se värden i realtid RC -kontroller listade. Verifiera att de varierar från 1000 till 2000 på ytterpunkterna för gas, rullning, tonhöjd och yaw.

Skriv sedan 'a' och tryck på retur. Låt gyrokalibreringen gå och verifiera sedan att gyroregistrerar fyrhjulingens rörelse.

Koppla nu arduino från datorn, tryck gasreglaget helt upp på styrenheten och anslut batteriet. ESC: erna ska avge tre låga pip följt av en hög pip (men detta kan variera beroende på ESC och dess firmware). Tryck gasreglaget helt ner. Koppla ur batteriet.

De ändringar som vi gjorde i den här koden var att byta från att använda PORTD för ESC -stiften till att använda PORTA och sedan byta byte som skrivits till dessa portar så att vi aktiverar de korrekta stiften som visas i kopplingsschemat. Den här ändringen beror på att PORTD -registerpinnarna inte är på samma plats på Mega som de är i Uno. Vi har inte kunnat testa den här koden fullt ut eftersom vi arbetade med en gammal Mega utanför märket som vår skols butik hade. Detta innebar att av någon anledning inte alla PORTA -registerpinnar kunde aktivera ESC: erna ordentligt. Vi hade också problem med att använda operatorn eller är lika med (| =) i några av våra testkoder. Vi är osäkra på varför detta orsakade problem när vi skrev byte för att ställa in ESC -stiftspänningarna, så vi ändrade Brookings kod så lite som möjligt. Vi tror att den här koden är mycket nära funktionell, men din körsträcka kan variera.

Steg 14: Bli luftburen !! (Uno)

Och igen, den här tredje geniala koden är Joop Brokings verk. Ändringar av alla dessa tre koddelar finns endast i vårt försök att integrera GPS -data i Arduino.

Med dina propellrar stadigt monterade på ramen och alla komponenter spända, tejpade eller på annat sätt monterade på, ladda flygkontrollkoden till din Arduino och koppla sedan ur Arduino från datorn.

Ta din quadcopter utanför, sätt i batteriet och sätt på din sändare. Ta eventuellt med dig en bärbar dator som är ansluten till din GPS -mottagningsinställning samt din videomottagningsinställning och bildskärm. Ladda transceiverkoden på din markbundna Arduino, öppna din seriella bildskärm till 9600 baud och se hur GPS -data rullar in.

Nu är du redo att flyga. Tryck ner gasreglaget och gäpa åt vänster för att beväpna quadcoptern och dra sedan försiktigt upp gasreglaget för att sväva. Börja med att flyga lågt till marken och över mjuka ytor som gräs tills du blir bekväm.

Se den inbäddade videon av oss som upphetsat flyger drönaren första gången vi lyckades få drönaren och GPS att fungera samtidigt.

Steg 15: Bli luftburen !! (Mega)

På grund av vår hängning med ESC -kalibreringskoden för Mega kunde vi aldrig skapa flygkontrollkod för detta kort. Om du har kommit till den här punkten, då föreställer jag mig att du åtminstone har busat med ESC -kalibreringskoden för att få det att fungera för Mega. Därför kommer du sannolikt att behöva göra liknande ändringar av flygkontrollkoden som du gjorde i det sista steget. Om vår ESC -kalibreringskod för Mega magiskt fungerar utan andra ändringar, så är det bara några saker du måste göra med lagerkoden för att den ska fungera för detta steg. Du måste först gå igenom och ersätta alla instanser av PORTD med PORTA. Glöm inte heller att ändra DDRD till DDRA. Därefter måste du ändra alla byte som skrivs till PORTA -registret så att de aktiverar rätt stift. För att göra detta, använd byte B11000011 för att ställa in stiften till höga och B00111100 för att ställa in stiften till låga. Lycka till, och meddela oss om du lyckas flyga med en Mega!

Steg 16: Hur vi kom dit vi är med Mega Design

Detta projekt var en enorm inlärningsupplevelse för oss som Arduino och nybörjare inom elektronikhobby. Därför tänkte vi inkludera sagan om allt vi stötte på när vi försökte GPS aktivera Joop Brokings kod. Eftersom Brokings kod är så grundlig och mycket mer komplicerad än någonting som vi skrev, bestämde vi oss för att ändra den så lite som möjligt. Vi försökte få GPS -skölden att skicka data till Arduino och sedan få Arduino att skicka den informationen till oss via HC12 -sändtagaren utan att ändra flygkoden eller kabeldragning på något sätt. Efter att ha tittat på schemat och kablarna för vår Arduino Uno för att ta reda på vilka stift som fanns tillgängliga, ändrade vi GPS -mottagarkoden som vi använde för att kringgå den befintliga designen. Sedan testade vi det för att se till att allt fungerade. Vid denna tidpunkt verkade saker lovande.

Nästa steg var att integrera koden som vi just hade modifierat och testat med Brokings flygkontroll. Det här var inte så svårt, men vi stötte snabbt på ett fel. Brokings flygkontroller förlitar sig på Arduino Wire- och EEPROM -biblioteken medan vår GPS -kod använde både Software Serial -biblioteket och Arduino GPS -biblioteket. Eftersom Wire Library refererar till Software Serial -biblioteket stötte vi på ett fel där koden inte skulle kompilera eftersom det fanns "flera definitioner för _vector 3_", vad det än betyder. Efter att ha tittat på Google och grävt runt i biblioteken insåg vi så småningom att denna bibliotekskonflikt gjorde det omöjligt att använda dessa kodbitar tillsammans. Så vi letade efter alternativ.

Vad vi räknade ut är att den enda kombinationen av bibliotek som inte kastade fel på oss var att byta standard GPS -bibliotek till neoGPS och sedan använda AltSoftSerial istället för Software Serial. Denna kombination fungerade, men AltSoftSerial kan bara fungera med specifika stift, som inte var tillgängliga i vår design. Detta är vad som ledde oss till att använda Mega. Arduino Megas har flera seriella portar för hårdvara, vilket innebar att vi kunde kringgå den här bibliotekskonflikten genom att inte behöva öppna programvaru seriella portar alls.

Men när vi började använda Mega insåg vi snabbt att stiftkonfigurationen var annorlunda. Pins på Uno som har avbrott är olika på Mega. På samma sätt fanns SDA- och SCL -stiften på olika platser. Efter att ha studerat stiftdiagrammen för varje typ av Arduino och refererat till registren som anropats i koden, kunde vi köra flyginställningskoden med endast minimal omkoppling och inga programvaruändringar.

ESC -kalibreringskoden är där vi började stöta på problem. Vi berörde detta kort tidigare, men i princip använder koden stiftregister för att reglera stiften som används för att styra ESC: erna. Detta gör koden svårare att läsa än att använda standard pinMode () -funktionen; det gör dock att koden körs snabbare och aktiverar stiften samtidigt. Detta är viktigt eftersom flygkoden körs i en noggrant tidsinställd slinga. På grund av stiftskillnaderna mellan Arduinos bestämde vi oss för att använda portregister A på Mega. Men i våra tester gav inte alla stiften oss samma utspänning när de fick höra att springa högt. Några av stiften hade en effekt på cirka 4,90V och andra gav oss närmare 4,95V. Uppenbarligen är ESC: erna som vi har lite finkorniga, och så skulle de bara fungera korrekt när vi använde stiften med högre spänning. Detta tvingade oss sedan att ändra byte som vi skrev för att registrera A så att vi pratade med rätt stift. Det finns mer information om detta i avsnittet ESC -kalibrering.

Detta är ungefär så långt som vi kom i den här delen av projektet. När vi gick för att testa den här modifierade ESC -kalibreringskoden, blev något kort och vi förlorade kommunikationen med vår Arduino. Vi var extremt förbryllade över detta eftersom vi inte hade ändrat några av ledningarna. Detta tvingade oss att gå tillbaka och inse att vi bara hade ett par dagar på oss att få en flygande drönare efter flera veckors försök att passa ihop våra inkompatibla bitar. Det är därför vi backade och skapade det enklare projektet med Uno. Men vi tror fortfarande att vårt tillvägagångssätt är nära att arbeta med Mega med lite mer tid.

Vårt mål är att denna förklaring av de hinder vi stött på är till hjälp för dig om du arbetar med att ändra Brokings kod. Vi fick heller aldrig chansen att testa några autonoma kontrollfunktioner baserade på GPS. Detta är något du måste ta reda på efter att ha skapat en fungerande drönare med en Mega. Från vissa preliminära Google -undersökningar ser det dock ut som att implementera ett Kalman -filter kan vara det mest stabila och exakta sättet att bestämma position under flygning. Vi föreslår att du undersöker lite om hur denna algoritm optimerar tillståndsuppskattningar. Annat än så, lycka till och meddela oss om du kommer längre än vi kunde!

Rekommenderad: