Inhoudsopgave:

Arduino-drone met GPS: 16 stappen
Arduino-drone met GPS: 16 stappen

Video: Arduino-drone met GPS: 16 stappen

Video: Arduino-drone met GPS: 16 stappen
Video: 🛰Arduino GPS Satellite (8 pieces) Tracker | 2024, Juli-
Anonim
Arduino-drone met GPS
Arduino-drone met GPS

We wilden een Arduino-gestuurde en gestabiliseerde, GPS-enabled first-person-view (FPV) quadcopter-drone bouwen met terugkeer naar huis, ga naar coördinaat en GPS-houdfuncties. We gingen er naïef van uit dat het relatief eenvoudig zou zijn om bestaande Arduino-programma's en bedrading voor een quadcopter zonder GPS te combineren met die van een GPS-transmissiesysteem en dat we snel door konden gaan met complexere programmeertaken. Er moest echter verrassend veel veranderen om deze twee projecten te combineren, en dus hebben we uiteindelijk een GPS-compatibele FPV-quadcopter gemaakt, zonder enige toegevoegde functionaliteit.

We hebben instructies bijgevoegd over hoe u ons product kunt repliceren als u tevreden bent met de meer beperkte quadcopter.

We hebben ook alle stappen opgenomen die we hebben genomen op weg naar een meer autonome quadcopter. Als je je op je gemak voelt om diep in Arduino te graven of al veel Arduino-ervaring hebt en je wilt onze stopplaats gebruiken als startpunt voor je eigen verkenning, dan is deze Instructable ook iets voor jou.

Dit is een geweldig project om iets te leren over het bouwen en coderen voor Arduino, ongeacht hoeveel ervaring je hebt. Ook ga je hopelijk met een drone weg.

De opstelling is als volgt:

In de materialenlijst zijn voor beide doelen onderdelen zonder asterisk vereist.

Onderdelen met één sterretje zijn alleen nodig voor het onvoltooide project van een meer autonome quadcopter.

Onderdelen met twee sterretjes zijn alleen vereist voor de meer beperkte quadcopter.

Stappen die beide projecten gemeen hebben, hebben geen markering achter de titel

Stappen die alleen vereist zijn voor de meer beperkte niet-autonome quadcopter hebben "(Uno)" achter de titel.

Stappen die alleen vereist zijn voor de lopende autonome quadcopter hebben "(Mega)" achter de titel.

Om de op Uno gebaseerde quad te bouwen, volgt u de stappen in volgorde, waarbij u alle stappen met "(Mega)" na de titel overslaat.

Om aan de op Mega gebaseerde quad te werken, volgt u de stappen in volgorde, waarbij u alle stappen met "(Uno)" na de titel overslaat.

Stap 1: Verzamel materialen

Componenten:

1) Eén quadcopterframe (het exacte frame doet er waarschijnlijk niet toe) ($ 15)

2) Vier 2830, 900kV borstelloze motoren (of vergelijkbaar) en vier montage accessoirepakketten (4x$6 + 4x$4 = $40 totaal)

3) Vier 20A UBEC ESC's (4x $ 10 = $ 40 totaal)

4) Eén stroomverdeelbord (met XT-60-aansluiting) ($ 20)

5) Eén 3s, 3000-5000mAh LiPo-batterij met XT-60-aansluiting (3000mAh komt overeen met ongeveer 20 min vliegtijd) ($ 25)

6) Veel propellers (deze breken veel) ($ 10)

7) Eén Arduino Mega 2560 * ($ 40)

8) Een Arduino Uno R3 ($20)

9) Een tweede Arduino Uno R3** ($20)

10) Eén Arduino Ultimate GPS-schild (je hebt het schild niet nodig, maar als je een andere GPS gebruikt, heb je andere bedrading nodig) ($ 45)

11) Twee HC-12 draadloze transceivers (2x$5 = $10)

12) Eén MPU-6050, 6DOF (vrijheidsgraad) gyro/versnellingsmeter ($5)

13) Een Turnigy 9x 2,4 GHz, 9-kanaals zender / ontvanger-paar ($ 70)

14) Arduino vrouwelijke (stapelbare) headers ($ 20)

15) LiPo Battery Balance-oplader (en 12V DC-adapter, niet inbegrepen) ($ 20)

17) USB A naar B mannelijk naar mannelijk adaptersnoer ($ 5)

17) Duct-tape

18) Krimpkous

Apparatuur:

1) Een soldeerbout

2) Soldeer

3) Kunststof epoxy:

4) Aansteker

5) Draadstripper:

6) Een set inbussleutels

Optionele componenten voor real-time FPV (first person view) videotransmissie:

1) Een kleine FPV-camera (deze linkt naar de vrij goedkope en slechte kwaliteit die we gebruikten, je kunt een betere vervangen) ($ 20)

2) 5,6 GHz videozender/ontvanger-paar (832 gebruikte modellen) ($30)

3) 500mAh, 3s (11,1V) LiPo-batterij ($ 7) (we gebruikten met een banaanstekker, maar we raden achteraf aan om de gekoppelde batterij te gebruiken, omdat deze een connector heeft die compatibel is met de TS832-zender en dus niet' t vereisen solderen).

4) 2 1000mAh 2s (7,4V) LiPo-batterij, of vergelijkbaar ($5). Aantal mAh niet kritisch zolang het meer dan 1000mAh is of zo. Dezelfde verklaring als hierboven is van toepassing op het type stekker voor een van de twee batterijen. De andere wordt gebruikt om de monitor van stroom te voorzien, dus je zult hoe dan ook moeten solderen. Waarschijnlijk het beste om er een te krijgen met een XT-60-stekker hiervoor (dat hebben we gedaan). Een link voor dat type is hier: 1000mAh 2s (7,4V) LiPo met XT-60-stekker

5) LCD-monitor (optioneel) ($15). U kunt ook een AV-USB-adapter en dvd-kopieersoftware gebruiken om rechtstreeks op een laptop te bekijken. Dit geeft ook de mogelijkheid om video en foto's op te nemen, in plaats van ze alleen realtime te bekijken.

6) Als u batterijen heeft gekocht met andere stekkers dan de gekoppelde, heeft u mogelijk geschikte adapters nodig. Hoe dan ook, koop een adapter die overeenkomt met de stekker voor de batterij die de monitor van stroom voorziet. Hier vindt u XT-60-adapters

* = alleen voor meer geavanceerd project

** = alleen voor meer basisprojecten

Kosten:

Als je helemaal opnieuw begint (maar met een soldeerbout, enz …), geen FPV-systeem: ~ $ 370

Als je al een RC-zender/ontvanger, LiPo-batterijlader en LiPo-batterij hebt: ~ $ 260

Kosten van FPV-systeem: $ 80

Stap 2: Monteer het frame

Monteer het frame
Monteer het frame
Monteer het frame
Monteer het frame
Monteer het frame
Monteer het frame

Deze stap is vrij eenvoudig, vooral als je hetzelfde vooraf gemaakte frame gebruikt. Gebruik gewoon de meegeleverde schroeven en zet het frame in elkaar zoals afgebeeld, met een geschikte inbussleutel of schroevendraaier voor je frame. Zorg ervoor dat armen van dezelfde kleur aan elkaar grenzen (zoals op deze foto), zodat de drone een duidelijke voor- en achterkant heeft. Zorg er verder voor dat het lange deel van de bodemplaat tussen tegenoverliggende gekleurde armen uitsteekt. Dit wordt later belangrijk.

Stap 3: Monteer motoren en sluit esc's aan

Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan
Monteer motoren en sluit esc's aan

Nu het frame is gemonteerd, haalt u de vier motoren en vier montageaccessoires eruit. U kunt schroeven gebruiken die bij de montagesets zijn inbegrepen, of schroeven die overblijven van het quadcopterframe om de motoren en steunen op hun plaats te schroeven. Als je de steunen koopt waaraan we hebben gekoppeld, ontvang je twee extra componenten, hierboven afgebeeld. We hebben goede motorprestaties gehad zonder deze onderdelen, dus hebben we ze weggelaten om het gewicht te verminderen.

Zodra de motoren op hun plaats zijn geschroefd, epoxy het stroomverdeelbord (PDB) op zijn plaats bovenop de bovenplaat van het quadcopterframe. Zorg ervoor dat u het zo oriënteert dat de batterijconnector tussen verschillend gekleurde armen wijst (parallel met een van de lange delen van de bodemplaat), zoals in de afbeelding hierboven.

U moet ook vier propellerconussen met binnenschroefdraad hebben. Zet deze even opzij.

Haal nu uw ESC's eruit. Aan de ene kant komen twee draden uit, een rode en een zwarte. Steek voor elk van de vier ESC's de rode draad in de positieve connector op de PDB en de zwarte in de negatieve. Houd er rekening mee dat als u een andere PDB gebruikt, deze stap mogelijk moet worden gesoldeerd. Sluit nu elk van de drie draden aan die uit elke motor komen. Op dit moment maakt het niet uit welke ESC-draad u verbindt met welke motordraad (zolang u alle draden van één ESC met dezelfde motor verbindt!) U corrigeert later eventuele achterwaartse polariteit. Het is niet gevaarlijk als de draden worden verwisseld; het resulteert alleen in dat de motor achteruit draait.

Stap 4: Bereid Arduino en Shield voor

Arduino en Shield voorbereiden
Arduino en Shield voorbereiden
Arduino en Shield voorbereiden
Arduino en Shield voorbereiden

Een opmerking voordat je begint

Ten eerste kunt u ervoor kiezen om alle draden direct aan elkaar te solderen. We vonden het echter van onschatbare waarde om pin-headers te gebruiken, omdat ze veel flexibiliteit bieden voor het oplossen van problemen en het aanpassen van het project. Wat volgt is een beschrijving van wat we hebben gedaan (en anderen aanbevelen om te doen).

Arduino voorbereiden en afschermen

Schakel je Arduino Mega (of een Uno als je de niet-autonome quad doet), GPS-schild en stapelbare headers uit. Soldeer het mannelijke uiteinde van de stapelbare headers op hun plaats op het GPS-schild, in de rijen pinnen parallel aan de voorgesoldeerde pinnen, zoals weergegeven in de bovenstaande afbeelding. Soldeer ook stapelbare headers op de pennenrij met het label 3V, CD, … RX. Gebruik een draadknipper om overtollige lengte af te knippen van de pinnen die aan de onderkant uitsteken. Plaats mannelijke headers met gebogen tops in al deze stapelbare headers. Hier soldeer je de draden aan voor de rest van de componenten.

Bevestig het GPS-schild aan de bovenkant en zorg ervoor dat de pinnen overeenkomen met die op de Arduino (Mega of Uno). Merk op dat als je de Mega gebruikt, veel van de Arduino nog steeds zichtbaar zal zijn nadat je het schild op zijn plaats hebt geplaatst.

Plaats elektrische tape op de onderkant van de Arduino en bedek alle blootgestelde pinsoldeersels om kortsluiting te voorkomen terwijl de Arduino op de PDB rust.

Stap 5: Verbind componenten met elkaar en plaats de batterij (Uno)

Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)
Bedraad de componenten samen en plaats de batterij (Uno)

Het bovenstaande schema is bijna identiek aan dat van Joop Brooking, omdat we ons ontwerp sterk op het zijne hebben gebaseerd.

*Merk op dat dit schema uitgaat van een correct gemonteerd GPS-schild en dat de GPS dus niet in dit schema voorkomt.

Het bovenstaande schema is gemaakt met Fritzing-software, wat ten zeerste wordt aanbevolen voor schema's met Arduino. We hebben meestal gebruik gemaakt van generieke onderdelen die flexibel kunnen worden bewerkt, omdat onze onderdelen over het algemeen niet in de meegeleverde onderdelenbibliotheek van Fritzing stonden.

-Zorg ervoor dat de schakelaar op het GPS-schild op "Direct Schrijven" staat.

- Sluit nu alle componenten aan volgens het bovenstaande schema (behalve de batterij!) (Belangrijke opmerking over GPS-datakabels hieronder).

-Merk op dat je de ESC's al hebt aangesloten op de motoren en PDB, dus dit deel van het schema is klaar.

- Merk verder op dat GPS-gegevens (gele draden) uit pinnen 0 en 1 op de Arduino komen (niet de afzonderlijke Tx- en Rx-pinnen op de GPS). Dat komt omdat de GPS is geconfigureerd voor "Direct Write" (zie hieronder), en rechtstreeks naar de seriële hardwarepoorten op de uno (pinnen 0 en 1) voert. Dit is het duidelijkst te zien op de tweede foto hierboven van de complete bedrading.

- Raadpleeg de bovenstaande afbeelding voor het bedraden van de RC-ontvanger. Merk op dat de datadraden naar de bovenste rij gaan, terwijl de Vin en Gnd zich respectievelijk op de tweede en derde rij bevinden (en op de op één na verste kolom met pinnen).

-Om de bedrading voor de HC-12 transceiver, RC-ontvanger en 5Vout van de PDB naar Vin van de Arduino te doen, gebruikten we stapelbare headers, terwijl we voor de gyro de draden rechtstreeks op het bord soldeerden en krimpkous rond de soldeer. U kunt ervoor kiezen om een van beide te doen voor elk van de componenten, maar het wordt aanbevolen om rechtstreeks op de gyro te solderen, omdat dit ruimte bespaart, waardoor het kleine onderdeel gemakkelijker te monteren is. Het gebruik van headers is iets meer werk vooraf, maar biedt meer flexibiliteit. Het rechtstreeks solderen van draden is op de lange termijn een veiligere verbinding, maar betekent dat het moeilijker is om dat onderdeel op een ander project te gebruiken. Merk op dat als je headers op het GPS-schild hebt gebruikt, je nog steeds een behoorlijke hoeveelheid flexibiliteit hebt, ongeacht wat je doet. Het is van cruciaal belang ervoor te zorgen dat de GPS-datadraden in pinnen 0 en 1 op de GPS gemakkelijk te verwijderen en te vervangen zijn.

Aan het einde van ons project waren we niet in staat om een goede methode te ontwerpen om al onze componenten aan het frame te bevestigen. Vanwege de tijdsdruk van onze klas draaiden onze oplossingen meestal om dubbelzijdige foamtape, ducttape, elektrische tape en kabelbinders. We raden u ten zeerste aan meer tijd te besteden aan het ontwerpen van stabiele montagestructuren als u van plan bent dit een project op langere termijn te zijn. Dat gezegd hebbende, als je gewoon een snel prototype wilt maken, volg dan gerust ons proces. Zorg er echter voor dat de gyro stevig is gemonteerd. Dit is de enige manier waarop de Arduino weet wat de quadcopter doet, dus als hij tijdens de vlucht beweegt, heb je problemen.

Met alles aangesloten en op zijn plaats, neem je LiPo-batterij en schuif je deze tussen de boven- en onderplaten van het frame. Zorg ervoor dat de connector in dezelfde richting wijst als de connector van de PDB en dat ze daadwerkelijk kunnen worden aangesloten. We hebben ducttape gebruikt om de batterij op zijn plaats te houden (klittenband werkt ook, maar is vervelender dan ducttape). Duct tape werkt goed omdat men de batterij gemakkelijk kan vervangen of verwijderen om op te laden. U moet er echter zeker van zijn dat u de batterij STRAK vast plakt, alsof de batterij tijdens de vlucht beweegt, dit de balans van de drone ernstig kan verstoren. Sluit de batterij nog NIET aan op de PDB.

Stap 6: Verbind componenten met elkaar en plaats de batterij (Mega)

Bedraad de componenten samen en plaats de batterij (mega)
Bedraad de componenten samen en plaats de batterij (mega)
Bedraad de componenten samen en plaats de batterij (Mega)
Bedraad de componenten samen en plaats de batterij (Mega)
Bedraad de componenten samen en plaats de batterij (mega)
Bedraad de componenten samen en plaats de batterij (mega)

Het bovenstaande schema is gemaakt met Fritzing-software, wat ten zeerste wordt aanbevolen voor schema's met arduino. We maakten meestal gebruik van generieke onderdelen, omdat onze onderdelen over het algemeen niet in de meegeleverde onderdelenbibliotheek van Fritzing stonden.

-Merk op dat dit schema uitgaat van een correct gemonteerd GPS-schild en dat de GPS dus niet in dit schema voorkomt.

- Zet de schakelaar op uw Mega 2560 op "Soft Serial".

- Sluit nu alle componenten aan volgens het bovenstaande schema (behalve de batterij!)

-Merk op dat je de ESC's al hebt aangesloten op de motoren en PDB, dus dit deel van het schema is klaar.

-De startkabels van Pin 8 naar Rx en Pin 7 naar Tx zijn er omdat (in tegenstelling tot de Uno, waarvoor dit schild is gemaakt), de mega geen universele asynchrone ontvanger-zender (UART) op pin 7 en 8 heeft, en dus we moeten hardware seriële pinnen gebruiken. Er zijn meer redenen waarom we hardware-seriële pinnen nodig hebben, die later worden besproken.

- Raadpleeg de bovenstaande afbeelding voor het bedraden van de RC-ontvanger. Merk op dat de datadraden naar de bovenste rij gaan, terwijl de Vin en Gnd zich respectievelijk op de tweede en derde rij bevinden (en op de op één na verste kolom met pinnen).

-Om de bedrading voor de HC-12 transceiver, RC-ontvanger en 5Vout van de PDB naar Vin van de Arduino te doen, gebruikten we stapelbare headers, terwijl we voor de gyro de draden direct soldeerden en krimpkous rond het soldeer gebruikten. U kunt ervoor kiezen om een van beide te doen voor een van de componenten. Het gebruik van headers is iets meer werk vooraf, maar biedt meer flexibiliteit. Het rechtstreeks solderen van draden is op de lange termijn een veiligere verbinding, maar betekent dat het moeilijker is om dat onderdeel op een ander project te gebruiken. Merk op dat als je headers op het GPS-schild hebt gebruikt, je nog steeds een behoorlijke hoeveelheid flexibiliteit hebt, ongeacht wat je doet.

Aan het einde van ons project waren we niet in staat om een goede methode te ontwerpen om al onze componenten aan het frame te bevestigen. Vanwege de tijdsdruk van onze klas draaiden onze oplossingen meestal om dubbelzijdige foamtape, ducttape, elektrische tape en kabelbinders. We raden u ten zeerste aan meer tijd te besteden aan het ontwerpen van stabiele montagestructuren als u van plan bent dit een project op langere termijn te zijn. Dat gezegd hebbende, als je gewoon een snel prototype wilt maken, voel je dan vrij om ons proces te volgen. Zorg er echter voor dat de gyro stevig is gemonteerd. Dit is de enige manier waarop de Arduino weet wat de quadcopter doet, dus als hij tijdens de vlucht beweegt, heb je problemen.

Met alles aangesloten en op zijn plaats, neem je LiPo-batterij en schuif je deze tussen de boven- en onderplaten van het frame. Zorg ervoor dat de connector in dezelfde richting wijst als de connector van de PDB en dat ze daadwerkelijk kunnen worden aangesloten. We hebben ducttape gebruikt om de batterij op zijn plaats te houden (klittenband werkt ook, maar is vervelender dan ducttape). Duct tape werkt goed omdat men de batterij gemakkelijk kan vervangen of verwijderen om op te laden. U moet er echter zeker van zijn dat u de batterij STRAK vast plakt, alsof de batterij tijdens de vlucht beweegt, dit de balans van de drone ernstig kan verstoren. Sluit de batterij nog NIET aan op de PDB.

Stap 7: Ontvanger binden

Bind ontvanger
Bind ontvanger
Bind ontvanger
Bind ontvanger

Neem de RC-ontvanger en sluit deze tijdelijk aan op een 5V-voeding (ofwel door de Arduino van stroom te voorzien met USB- of 9V-voeding, of met een aparte voeding. Sluit de LiPo nog niet aan op de Arduino). Neem de bindpin die bij de RC-ontvanger is geleverd en plaats deze op de BIND-pinnen op de ontvanger. U kunt ook de bovenste en onderste pinnen in de BIND-kolom kortsluiten, zoals weergegeven in de bovenstaande foto. Een rood lampje op de ontvanger moet snel knipperen. Neem nu de controller en druk op de knop aan de achterkant terwijl deze uit is, zoals hierboven weergegeven. Zet de controller aan met de knop ingedrukt. Nu moet het knipperende lampje op de ontvanger ononderbroken branden. De ontvanger is gebonden. Verwijder de bindkabel. Als u een andere voeding gebruikte, sluit u de ontvanger opnieuw aan op de 5V uit de Arduino.

Stap 8: (Optioneel) Bedraad samen en monteer het FPV-camerasysteem

(Optioneel) Verbind en monteer het FPV-camerasysteem
(Optioneel) Verbind en monteer het FPV-camerasysteem
(Optioneel) Verbind en monteer het FPV-camerasysteem
(Optioneel) Verbind en monteer het FPV-camerasysteem

Soldeer eerst de XT-60-adapter samen met de stroom- en aardingsdraden op de monitor. Deze kunnen per monitor verschillen, maar de stroom zal bijna altijd rood zijn, de grond bijna altijd zwart. Steek nu de adapter met gesoldeerde draden in uw 1000mAh LiPo met de XT-60-stekker. De monitor moet worden ingeschakeld met (meestal) een blauwe achtergrond. Dat is de moeilijkste stap!

Schroef nu de antennes op uw ontvanger en zender.

Sluit uw kleine 500mAh Lipo aan op de zender. De meest rechtse pin (rechts onder de antenne) is massa (V_) van de batterij, de volgende pin links is V+. Ze komen de drie draden die naar de camera gaan. Uw camera moet worden geleverd met een drie-in-één-stekker die in de zender past. Zorg ervoor dat je de gele datadraad in het midden hebt. Als je de batterijen hebt gebruikt die we hebben gekoppeld met daarvoor bestemde pluggen, zou deze stap niet moeten worden gesoldeerd.

Sluit ten slotte uw andere 1000mAh-batterij aan met de DC-uitgangsdraad die bij uw ontvanger is geleverd en sluit die op zijn beurt aan op de DC-ingang van uw ontvanger. Sluit tot slot het zwarte uiteinde van de AVin-kabel die bij uw ontvanger is geleverd aan op de AVin-poort van uw ontvanger en het andere (gele, vrouwelijke) uiteinde op het gele mannelijke uiteinde van de AVin-kabel van uw monitor.

Op dit punt zou u een camerabeeld op de monitor moeten kunnen zien. Als je dat niet kunt, zorg er dan voor dat de ontvanger en zender allebei aan staan (je zou de nummers op hun kleine schermen moeten zien) en dat ze op hetzelfde kanaal staan (we gebruikten kanaal 11 voor beide en hadden veel succes). Verder moet u mogelijk het kanaal op de monitor wijzigen.

Monteer de componenten op het frame.

Zodra de installatie werkt, koppelt u de batterijen los totdat u klaar bent om te vliegen.

Stap 9: GPS-gegevensontvangst instellen

GPS-gegevensontvangst instellen
GPS-gegevensontvangst instellen
GPS-gegevensontvangst instellen
GPS-gegevensontvangst instellen

Sluit uw tweede Arduino aan op uw tweede HC-12-transceiver zoals weergegeven in het bovenstaande schema, rekening houdend met het feit dat de installatie alleen wordt gevoed zoals weergegeven als deze op een computer is aangesloten. Download de meegeleverde transceivercode, open uw seriële monitor op 9600 baud.

Als u de meer basisconfiguratie gebruikt, moet u beginnen met het ontvangen van GPS-zinnen als uw GPS-shield is ingeschakeld en correct is aangesloten op de andere HC-12-zendontvanger (en als de schakelaar op het schild op "Direct Write" staat).

Zorg er bij de Mega voor dat de schakelaar op "Soft Serial" staat.

Stap 10: Voer de installatiecode uit (Uno)

Deze code is identiek aan die van Joop Brokking in zijn Arduino quadcopter-tutorial, en hij verdient alle lof voor het schrijven ervan.

Terwijl de batterij is losgekoppeld, gebruikt u de USB-kabel om uw computer op de Arduino aan te sluiten en de bijgevoegde installatiecode te uploaden. Zet uw RC-zender aan. Open uw seriële monitor op 57600 baud en volg de aanwijzingen.

Veel voorkomende fouten:

Als de code niet kan worden geüpload, zorg er dan voor dat pinnen 0 en 1 zijn losgekoppeld van het UNO/GPS-schild. Dit is dezelfde hardwarepoort die het apparaat gebruikt om met de computer te communiceren, dus deze moet vrij zijn.

Als de code een aantal stappen tegelijk overslaat, controleer dan of uw GPS-schakelaar op 'Direct Schrijven' staat.

Als er geen ontvanger wordt gedetecteerd, zorg er dan voor dat er een ononderbroken (maar zwak) rood lampje op uw ontvanger brandt wanneer de zender aan staat. Controleer in dat geval de bedrading.

Als er geen gyro wordt gedetecteerd, kan dit zijn omdat de gyro is beschadigd of als u een ander type gyro heeft dan waar de code naar moet schrijven.

Stap 11: Voer de installatiecode uit (Mega)

Deze code is identiek aan die van Joop Brokking in zijn Arduino quadcopter-tutorial, en hij verdient alle lof voor het schrijven ervan. We hebben gewoon de bedrading voor de Mega aangepast zodat de ontvangeringangen overeenkwamen met de juiste Pin Change Interrupt-pinnen.

Terwijl de batterij is losgekoppeld, gebruikt u de USB-kabel om uw computer op de Arduino aan te sluiten en de bijgevoegde installatiecode te uploaden. Open uw seriële monitor op 57600 baud en volg de aanwijzingen.

Stap 12: Kalibreer de ESC's (Uno)

Deze code is wederom identiek aan de code van Joop Brokking. Alle aanpassingen zijn gedaan om de GPS en Arduino te integreren en zijn later terug te vinden in de beschrijving van de constructie van de meer geavanceerde quadcopter.

Upload de bijgevoegde ESC-kalibratiecode. Schrijf op de seriële monitor de letter 'r' en druk op Return. U zou de realtime RC-controllerwaarden moeten zien verschijnen. Controleer of ze variëren van 1000 tot 2000 op de uitersten van gas geven, rollen, stampen en gieren. Schrijf dan 'a' en druk op Return. Laat de gyro-kalibratie los en controleer vervolgens of de gyro de beweging van de quad registreert. Koppel nu de arduino los van de computer, duw de gashendel helemaal omhoog op de controller en sluit de batterij aan. De ESC's moeten verschillende pieptonen laten horen (maar dit kan verschillen, afhankelijk van de ESC en de firmware). Duw de gashendel helemaal naar beneden. De ESC's moeten lagere pieptonen afgeven en dan zwijgen. Koppel de batterij los.

Optioneel kunt u op dit punt de kegels gebruiken die bij uw motormontage-accessoirepakketten zijn geleverd om de propellers stevig vast te schroeven. Voer vervolgens de nummers 1 - 4 in op de seriële monitor om respectievelijk motoren 1 - 4 op het laagste vermogen aan te zetten. Het programma registreert de mate van schudden als gevolg van onbalans van de rekwisieten. U kunt proberen dit te verhelpen door kleine hoeveelheden plakband aan de ene of de andere kant van de rekwisieten toe te voegen. We ontdekten dat we prima konden vliegen zonder deze stap, maar misschien iets minder efficiënt en luider dan wanneer we de rekwisieten hadden gebalanceerd.

Stap 13: ESC's kalibreren (Mega)

Deze code lijkt erg op de code van Brokking, maar we hebben deze (en bijbehorende bedrading) aangepast om met de Mega te werken.

Upload de bijgevoegde ESC-kalibratiecode. Schrijf op de seriële monitor de letter 'r' en druk op Return. U zou de realtime RC-controllerwaarden moeten zien verschijnen. Controleer of ze variëren van 1000 tot 2000 op de uitersten van gas geven, rollen, stampen en gieren.

Schrijf dan 'a' en druk op Return. Laat de gyro-kalibratie los en controleer vervolgens of de gyro de beweging van de quad registreert.

Koppel nu de arduino los van de computer, duw de gashendel helemaal omhoog op de controller en sluit de batterij aan. De ESC's moeten drie lage pieptonen afgeven, gevolgd door een hoge pieptoon (maar dit kan verschillen afhankelijk van de ESC en de firmware). Duw de gashendel helemaal naar beneden. Koppel de batterij los.

De wijzigingen die we in deze code hebben aangebracht, waren om over te schakelen van het gebruik van PORTD voor de ESC-pinnen naar het gebruik van PORTA en vervolgens de bytes die naar deze poorten zijn geschreven te wijzigen, zodat we de juiste pinnen activeren zoals weergegeven in het bedradingsschema. Deze wijziging is omdat de PORTD-registerpinnen zich niet op dezelfde locatie op de Mega bevinden als in de Uno. We hebben deze code niet volledig kunnen testen omdat we werkten met een oude merkloze Mega die de winkel van onze school had. Dit betekende dat om de een of andere reden niet alle PORTA-registerpinnen de ESC's goed konden activeren. We hadden ook problemen met het gebruik van de operator of is gelijk aan (|=) in sommige van onze testcodes. We weten niet zeker waarom dit problemen veroorzaakte bij het schrijven van de bytes om de ESC-pinspanningen in te stellen, dus hebben we Brooking's code zo min mogelijk aangepast. We denken dat deze code bijna functioneel is, maar uw kilometerstand kan variëren.

Stap 14: Ga de lucht in!! (Uno)

En nogmaals, dit derde stukje geniale code is het werk van Joop Brokking. Wijzigingen in al deze drie stukjes code zijn alleen aanwezig in onze poging tot integratie van de GPS-gegevens in de Arduino.

Met uw propellers stevig op het frame gemonteerd en alle componenten vastgebonden, geplakt of anderszins gemonteerd, laadt u de vluchtcontrollercode op uw Arduino en koppelt u vervolgens de Arduino los van uw computer.

Neem je quadcopter mee naar buiten, sluit de batterij aan en zet je zender aan. Neem optioneel een laptop mee die is aangesloten op uw GPS-ontvangstinstallatie, evenals uw video-ontvangstinstallatie en monitor. Laad de transceivercode op uw terrestrische Arduino, open uw seriële monitor tot 9600 baud en kijk hoe de GPS-gegevens binnenkomen.

Nu ben je klaar om te vliegen. Duw de gashendel naar beneden en gier naar links om de quadcopter in te schakelen, en breng dan voorzichtig de gashendel omhoog om te zweven. Begin met laag bij de grond te vliegen en over zachte oppervlakken zoals gras totdat je je comfortabel voelt.

Bekijk de ingebedde video van ons opgewonden vliegen met de drone de eerste keer dat we de drone en GPS tegelijkertijd konden laten werken.

Stap 15: Ga de lucht in!! (Mega)

Omdat we vastliepen met de ESC-kalibratiecode voor de Mega, hebben we nooit een vluchtcontrollercode voor dit bord kunnen maken. Als je op dit punt bent gekomen, kan ik me voorstellen dat je op zijn minst met de ESC-kalibratiecode hebt gerommeld om het voor de Mega te laten werken. Daarom zult u waarschijnlijk soortgelijke wijzigingen in de code van de vluchtcontroller moeten aanbrengen als in de laatste stap. Als onze ESC-kalibratiecode voor de Mega op magische wijze werkt zonder andere aanpassingen, dan zijn er maar een paar dingen die u aan de voorraadcode hoeft te doen om deze voor deze stap te laten werken. U zult eerst alle instanties van PORTD moeten doorlopen en vervangen door PORTA. Vergeet ook niet om DDRD in DDRA te veranderen. Vervolgens moet u alle bytes die naar het PORTA-register worden geschreven, wijzigen zodat ze de juiste pinnen activeren. Gebruik hiervoor byte B11000011 om de pinnen op hoog te zetten en B00111100 om de pinnen op laag te zetten. Veel succes en laat het ons weten als je succesvol met een Mega hebt gevlogen!

Stap 16: Hoe we zijn gekomen waar we nu zijn met het Mega Design

Dit project was een immense leerervaring voor ons als Arduino- en elektronicahobby-beginners. Daarom dachten we dat we de saga zouden opnemen van alles wat we tegenkwamen terwijl we probeerden om de code van Joop Brokking via GPS in te schakelen. Omdat de code van Brokking zo grondig en veel gecompliceerder is dan alles wat we aan het schrijven waren, hebben we besloten om het zo min mogelijk aan te passen. We hebben geprobeerd het GPS-schild gegevens naar de Arduino te laten sturen en de Arduino die informatie vervolgens via de HC12-transceiver naar ons te laten sturen zonder de vluchtcode of bedrading op enigerlei wijze te wijzigen. Nadat we de schema's en bedrading van onze Arduino Uno hadden bekeken om erachter te komen welke pinnen beschikbaar waren, veranderden we de GPS-transceivercode die we gebruikten om het bestaande ontwerp te omzeilen. Daarna hebben we het getest om te controleren of alles werkte. Op dit punt leek het veelbelovend.

De volgende stap was het integreren van de code die we zojuist hadden aangepast en getest met de vluchtcontroller van Brokking. Dit was niet al te moeilijk, maar we liepen al snel tegen een fout aan. De vluchtcontroller van Brokking is afhankelijk van de Arduino Wire- en EEPROM-bibliotheken, terwijl onze GPS-code zowel de Software Serial-bibliotheek als de Arduino GPS-bibliotheek gebruikte. Omdat de Wire Library verwijst naar de Software Serial-bibliotheek, kwamen we een fout tegen waarbij de code niet zou compileren omdat er "meerdere definities voor _vector 3_" waren, wat dat ook moge betekenen. Nadat we op Google hadden gekeken en in de bibliotheken hadden rondgespeurd, realiseerden we ons uiteindelijk dat dit bibliotheekconflict het onmogelijk maakte om deze stukjes code samen te gebruiken. Dus gingen we op zoek naar alternatieven.

Wat we ontdekten, is dat de enige combinatie van bibliotheken die ons geen fouten gaf, de standaard GPS-bibliotheek naar neoGPS was om te schakelen en vervolgens AltSoftSerial te gebruiken in plaats van Software Serial. Deze combinatie werkte, echter AltSoftSerial kan alleen werken met specifieke pinnen, die niet beschikbaar waren in ons ontwerp. Dit heeft ons ertoe gebracht de Mega te gebruiken. Arduino Mega's hebben meerdere seriële hardwarepoorten, wat betekende dat we dit bibliotheekconflict konden omzeilen door helemaal geen seriële softwarepoorten te hoeven openen.

Toen we echter de Mega gingen gebruiken, realiseerden we ons al snel dat de pinconfiguratie anders was. Pinnen op de Uno die interrupts hebben, zijn anders op de Mega. Evenzo bevonden de SDA- en SCL-pinnen zich op verschillende locaties. Na het bestuderen van de pin-diagrammen voor elk type Arduino en het verwijzen naar de registers die in de code worden genoemd, konden we de code voor het instellen van de vlucht uitvoeren met slechts minimale herbedrading en zonder softwarewijzigingen.

De ESC-kalibratiecode is waar we problemen begonnen te krijgen. We hebben dit eerder kort besproken, maar in feite gebruikt de code pinregisters om de pinnen te regelen die worden gebruikt om de ESC's te besturen. Dit maakt de code moeilijker te lezen dan het gebruik van de standaard pinMode()-functie; het zorgt er echter voor dat de code sneller wordt uitgevoerd en tegelijkertijd pinnen wordt geactiveerd. Dit is belangrijk omdat de vluchtcode in een zorgvuldig getimede lus loopt. Vanwege de pinverschillen tussen de Arduino's hebben we besloten om poortregister A te gebruiken op de Mega. Bij onze tests gaven echter niet alle pinnen ons dezelfde uitgangsspanning als we zeiden dat ze hoog moesten lopen. Sommige pinnen hadden een output van ongeveer 4,90V en andere gaven ons dichter bij 4,95V. Blijkbaar zijn de ESC's die we hebben nogal kieskeurig, en dus zouden ze alleen goed werken als we de pinnen met de hogere spanning zouden gebruiken. Dit dwong ons vervolgens om de bytes die we naar register A schreven te veranderen, zodat we met de juiste pinnen spraken. Meer informatie hierover vindt u in het gedeelte ESC-kalibratie.

Dit is ongeveer zo ver als we in dit deel van het project zijn gekomen. Toen we deze aangepaste ESC-kalibratiecode gingen testen, was er iets kortgesloten en verloren we de communicatie met onze Arduino. Dit verbaasde ons enorm omdat we niets aan de bedrading hadden veranderd. Dit dwong ons om een stap terug te doen en ons te realiseren dat we maar een paar dagen hadden om een vliegende drone te krijgen na wekenlang proberen onze onverenigbare stukken in elkaar te passen. Daarom zijn we teruggegaan en hebben we het eenvoudigere project met de Uno gemaakt. We denken echter nog steeds dat onze aanpak in de buurt komt van het werken met de Mega met iets meer tijd.

Ons doel is dat deze uitleg van de hindernissen die we tegenkwamen, nuttig voor je is als je bezig bent met het wijzigen van Brokking's code. We hebben ook nooit de kans gekregen om autonome besturingsfuncties te coderen op basis van de GPS. Dit is iets waar je achter moet komen nadat je een werkende drone met een Mega hebt gemaakt. Uit wat voorlopig Google-onderzoek blijkt echter dat het implementeren van een Kalman-filter de meest stabiele en nauwkeurige manier is om de positie tijdens de vlucht te bepalen. We raden je aan wat te onderzoeken hoe dit algoritme staatsschattingen optimaliseert. Voor de rest, veel succes en laat het ons weten als je verder komt dan we konden!

Aanbevolen: