Arduino Drone met GPS

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

We hebben instructies toegevoegd voor het repliceren van ons product als u tevreden bent met de beperktere 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 ons stoppunt wilt nemen als startpunt voor je eigen verkenning, dan is deze Instructable ook voor jou.

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

De opzet 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 nodig voor de meer beperkte quadcopter.

Stappen die voor beide projecten gelden, hebben geen markering achter de titel

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

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

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

Om aan de Mega-quad te werken, volgt u de stappen in volgorde en slaat u alle stappen over met "(Uno)" na de titel.

Stap 1: Verzamel materialen

Componenten:

1) Eén quadcopter-frame (het exacte frame maakt waarschijnlijk niet uit) ($ 15)

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

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

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

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

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

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

8) Eén Arduino Uno R3 ($ 20)

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

10) Eén Arduino Ultimate GPS Shield (je hebt het schild niet nodig, maar het gebruik van een andere GPS vereist verschillende bedrading) ($ 45)

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

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

13) Eén 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 adapterkabel ($ 5)

17) Duct tape

18) Krimpkous

Uitrusting:

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) video-overdracht:

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

2) 5.6 GHz videozender / ontvangerpaar (832 gebruikte modellen) ($ 30)

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

4) 2 1000 mAh 2s (7, 4 V) LiPo-batterij of vergelijkbaar ($ 5). Aantal mAh niet kritisch, zolang het maar meer is dan 1000 mAh. Dezelfde verklaring als hierboven geldt voor het type stekker voor een van de twee batterijen. De andere wordt gebruikt om de monitor van stroom te voorzien, dus je moet wat dan ook solderen. Waarschijnlijk het beste om er een te krijgen met een XT-60-stekker (dat is wat we hebben gedaan). Een link voor dat type is hier: 1000 mAh 2s (7, 4 V) 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 biedt ook de mogelijkheid om video en foto's op te nemen in plaats van ze alleen in realtime te bekijken.

6) Als u batterijen hebt gekocht met verschillende stekkers dan de aangesloten, heeft u mogelijk geschikte adapters nodig. Koop hoe dan ook een adapter die overeenkomt met de stekker voor de batterij die de monitor van stroom voorziet. Hier kunt u XT-60-adapters kopen

* = alleen voor meer geavanceerd project

** = alleen voor meer basaal project

Kosten:

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

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

Kosten van FPV-systeem: $ 80

Stap 2: Monteer het frame

Deze stap is vrij eenvoudig, vooral als we hetzelfde vooraf gemaakte frame gebruiken dat we hebben gebruikt. Gebruik gewoon de meegeleverde schroeven en zet het frame in elkaar zoals afgebeeld, met een geschikte inbussleutel of schroevendraaier voor uw frame. Zorg ervoor dat armen van dezelfde kleur naast elkaar liggen (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 de armen met tegengestelde kleuren uitsteekt. Dit wordt later belangrijk.

Stap 3: Motoren monteren en Escs aansluiten

Nu het frame is gemonteerd, verwijdert u de vier motoren en vier montageaccessoires. U kunt schroeven gebruiken die in de montagesets zijn meegeleverd of schroeven die overblijven van het quadcopterframe om de motoren en bevestigingen op hun plaats te schroeven. Als je de mounts koopt waaraan we hebben gelinkt, ontvang je twee extra componenten, hierboven afgebeeld. We hebben goede motorprestaties gehad zonder deze onderdelen, dus we hebben ze laten staan ​​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 de batterij zo plaatst dat de batterijconnector tussen verschillend gekleurde armen wijst (parallel aan een van de lange delen van de bodemplaat), zoals in de afbeelding hierboven.

Je moet ook vier propellerkegels hebben met binnendraad. Zet deze even opzij.

Schakel nu uw ESC's uit. Aan de ene kant komen er 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. Merk op dat als u een ander VOB gebruikt, deze stap mogelijk solderen vereist. Verbind nu elk van de drie draden die uit elke motor komen. Op dit punt maakt het niet uit welke ESC-draad je met welke motordraad verbindt (zolang je alle draden van één ESC met dezelfde motor verbindt!) Je zult later de achterwaartse polariteit corrigeren. Het is niet gevaarlijk als draden zijn omgedraaid; het zorgt er alleen voor dat de motor achteruit draait.

Stap 4: Bereid Arduino en Shield voor

Een opmerking voordat je begint

Ten eerste kunt u ervoor kiezen om alle draden rechtstreeks 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).

Bereid Arduino en schild voor

Schakel je Arduino Mega uit (of een Uno als je de niet-autonome quad doet), GPS-schild en stapelbare headers. Soldeer het mannelijke uiteinde van de stapelbare headers op zijn plaats op het GPS-schild, in de rijen pinnen parallel aan de voorgesoldeerde pinnen, zoals weergegeven in de bovenstaande afbeelding. Soldeer ook in stapelbare headers op de pinrij gelabeld 3V, CD, ... RX. Gebruik een draadknipper om de overtollige lengte af te knippen op de pinnen die uit de onderkant steken. Plaats mannelijke headers met gebogen toppen in al deze stapelbare headers. Dit is waar u de draden voor de rest van de componenten op soldeert.

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 zal worden blootgesteld nadat je het schild hebt geplaatst.

Plaats elektrische tape op de onderkant van de Arduino, die alle blootgestelde pin-soldeersels bedekt, om kortsluiting te voorkomen terwijl de Arduino op het PDB rust.

Stap 5: Componenten met elkaar verbinden en batterij plaatsen (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 opgesteld met behulp van Fritzing-software, die speciaal wordt aanbevolen voor schema's met Arduino. We maakten meestal gebruik 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 is ingesteld op "Direct Write".

-Breng nu alle componenten aan volgens het bovenstaande schema (behalve de batterij!) (Belangrijke opmerking over de 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 de pinnen 0 en 1 op de Arduino komen (niet de afzonderlijke Tx- en Rx-pinnen op de GPS). Dat komt omdat geconfigureerd naar "Direct Write" (zie hieronder), de GPS direct wordt uitgevoerd naar de hardware seriële poorten op de uno (pinnen 0 en 1). Dit is het duidelijkst te zien op de tweede foto hierboven van de complete bedrading.

-Bij het bedraden van de RC-ontvanger, zie de afbeelding hierboven. Merk op dat de datakabels naar de bovenste rij gaan, terwijl de Vin en Gnd respectievelijk op de tweede en derde rij staan ​​(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 solderen en met behulp van krimpkous rond de soldeer. U kunt ervoor kiezen om een ​​van de componenten te gebruiken, maar direct solderen aan de gyro wordt aanbevolen omdat het ruimte bespaart, waardoor het kleine onderdeel gemakkelijker te monteren is. Het gebruik van kopteksten is iets meer werk vooraf, maar biedt meer flexibiliteit. Direct solderen van draden is een veiligere verbinding op lange termijn, 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. Zorg er in de eerste plaats voor dat de GPS-datakabels in pinnen 0 en 1 op de GPS gemakkelijk te verwijderen en te vervangen zijn.

Aan het einde van ons project konden we geen goede methode ontwerpen om al onze componenten aan het frame te bevestigen. Vanwege de tijdsdruk van onze klasse draaiden onze oplossingen over het algemeen rond dubbelzijdig schuimtape, ducttape, elektrische tape en ritssluitingen. We raden u ten zeerste aan meer tijd te besteden aan het ontwerpen van stabiele montagestructuren als u van plan bent dit een project voor de 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 bedraad en op zijn plaats, neemt u uw LiPo-batterij en schuift u deze tussen de boven- en onderplaten van het frame. Zorg ervoor dat de connector in dezelfde richting wijst als de connector van het VOB 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 kan verwijderen om op te laden. U moet er echter zeker van zijn dat u de batterij strak vastmaakt, alsof de batterij tijdens de vlucht beweegt, wat de balans van de drone ernstig kan verstoren. Sluit de batterij nog NIET aan op het PDB.

Stap 6: Componenten met elkaar verbinden en batterij plaatsen (Mega)

Het bovenstaande schema is gemaakt met behulp van Fritzing-software, die ten zeerste wordt aanbevolen, vooral 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 van uw Mega 2560 op "Soft Serial".

-Breng 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 jumperkabels 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 een universele asynchrone ontvanger-zender (UART) op pin 7 en 8 mist, 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.

-Bij het bedraden van de RC-ontvanger, zie de afbeelding hierboven. Merk op dat de datakabels naar de bovenste rij gaan, terwijl de Vin en Gnd respectievelijk op de tweede en derde rij staan ​​(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 gyroscoop de draden direct solderen en krimpkous rond het soldeer gebruiken. U kunt ervoor kiezen om een ​​van beide componenten te gebruiken. Het gebruik van kopteksten is iets meer werk vooraf, maar biedt meer flexibiliteit. Direct solderen van draden is een veiligere verbinding op lange termijn, 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 konden we geen goede methode ontwerpen om al onze componenten aan het frame te bevestigen. Vanwege de tijdsdruk van onze klasse draaiden onze oplossingen over het algemeen rond dubbelzijdig schuimtape, ducttape, elektrische tape en ritssluitingen. We raden u ten zeerste aan meer tijd te besteden aan het ontwerpen van stabiele montagestructuren als u van plan bent dit een project voor de 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 bedraad en op zijn plaats, neemt u uw LiPo-batterij en schuift u deze tussen de boven- en onderplaten van het frame. Zorg ervoor dat de connector in dezelfde richting wijst als de connector van het VOB 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 kan verwijderen om op te laden. U moet er echter zeker van zijn dat u de batterij strak vastmaakt, alsof de batterij tijdens de vlucht beweegt, wat de balans van de drone ernstig kan verstoren. Sluit de batterij nog NIET aan op het PDB.

Stap 7: Bind ontvanger

Neem de RC ontvanger en sluit deze tijdelijk aan op een 5V voeding (ofwel door de Arduino aan te zetten met USB of 9V voeding, of met een aparte voeding. Sluit de LiPo nog niet aan op de Arduino). Neem de bindpen 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 kort maken, zoals weergegeven in de bovenstaande foto. Een rood lampje moet snel knipperen op de ontvanger. Neem nu de controller en druk op de knop aan de achterkant terwijl deze is uitgeschakeld, zoals hierboven weergegeven. Zet de controller aan met de knop ingedrukt. Nu moet het knipperende lampje op de ontvanger continu branden. De ontvanger is gebonden. Verwijder de bindkabel. Als je een andere voeding gebruikte, sluit dan de ontvanger opnieuw aan op de 5V uit de Arduino.

Stap 8: (Optioneel) Sluit elkaar aan en monteer het FPV-camerasysteem.

Soldeer eerst de XT-60-adapter samen met de voedings- en aarddraden op de monitor. Deze kunnen van monitor tot 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 plug. De monitor moet worden ingeschakeld met een (meestal) blauwe achtergrond. Dat is de moeilijkste stap!

Schroef nu de antennes op uw ontvanger en zender vast.

Sluit je kleine 500mAh Lipo aan op de zender. De meest rechtse pin (rechts onder de antenne) is aarde (V_) van de batterij, de volgende pin aan de linkerkant is V +. Ze komen door de drie draden die naar de camera gaan. Uw camera moet worden geleverd met een drie-in-een-stekker die in de zender past. Zorg ervoor dat je de gele datakabel in het midden hebt. Als u de batterijen hebt gebruikt waaraan we hebben gekoppeld met hiervoor bestemde stekkers, zou deze stap geen solderen vereisen.

Sluit ten slotte uw andere 1000 mAh-batterij aan met de gelijkstroomuitgangsdraad die bij uw ontvanger is geleverd en sluit deze op zijn beurt aan op de gelijkstroom in-poort op uw ontvanger. Sluit ten slotte het zwarte uiteinde van de AVin-kabel die bij uw ontvanger is geleverd aan op de AVin-poort op 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 beide aan staan ​​(je zou cijfers op hun kleine schermpjes moeten zien) en dat ze op hetzelfde kanaal zitten (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

Sluit uw tweede Arduino aan op uw tweede HC-12-transceiver zoals weergegeven in het bovenstaande schema, waarbij u er rekening mee moet houden dat de installatie alleen van stroom wordt voorzien zoals weergegeven als deze op een computer is aangesloten. Download de meegeleverde transceivercode, open uw seriële monitor tot 9600 baud.

Als u de meer basale configuratie gebruikt, zou u GPS-zinnen moeten gaan ontvangen als uw GPS-schild van stroom wordt voorzien en correct is aangesloten op de andere HC-12-transceiver (en als de schakelaar op het schild op "Direct Write" staat).

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

Bijlagen

  • Transceiver_Uno.ino Downloaden

Stap 10: Configuratiecode uitvoeren (Uno)

Deze code is identiek aan die gebruikt door Joop Brokking in zijn Arduino quadcopter-zelfstudie en hij verdient alle lof voor het schrijven ervan.

Als de batterij niet is aangesloten, gebruikt u de USB-kabel om uw computer op de Arduino aan te sluiten en uploadt u de bijgevoegde installatiecode. Zet uw RC-zender aan. Open uw seriële monitor tot 57600 baud en volg de instructies.

Veel voorkomende fouten:

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

Als de code in één keer een aantal stappen overslaat, controleer dan of uw GPS-schakelaar op "Direct Write" staat.

Als er geen ontvanger wordt gedetecteerd, zorg er dan voor dat er een continu (maar gedimd) rood lampje op uw ontvanger brandt wanneer de zender is ingeschakeld. Zo ja, controleer dan 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 de code waarnaar de code moet schrijven.

Bijlagen

  • YMFC-AL_setup.ino Downloaden

Stap 11: Configuratiecode uitvoeren (Mega)

Deze code is identiek aan die gebruikt door Joop Brokking in zijn Arduino quadcopter-zelfstudie en hij verdient alle lof voor het schrijven ervan. We hebben eenvoudig de bedrading voor de Mega aangepast, zodat de ingang van de ontvanger overeenkomt met de juiste Pin Change Interrupt-pinnen.

Als 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 tot 57600 baud en volg de instructies.

Bijlagen

  • YMFC-AL_setup.ino Downloaden

Stap 12: Kalibreer de ESC's (Uno)

Nogmaals, deze code is identiek aan de code van Joop Brokking. Alle aanpassingen zijn gemaakt in een poging 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 realtime RC-controllerwaarden moeten zien verschijnen. Controleer of ze variëren van 1000 tot 2000 op het uiterste van gas geven, rollen, stampen en gieren. Schrijf vervolgens 'a' en druk op Return. Laat de gyro-kalibratie los en controleer of de gyro beweging van de quad registreert. Sluit nu de Arduino aan op de computer, duw de gashendel helemaal omhoog op de controller en sluit de batterij aan. De ESC's zouden verschillende pieptonen moeten laten draaien (maar dit kan verschillen, afhankelijk van de ESC en de firmware). Duw de gashendel helemaal naar beneden. De ESC's zouden lagere pieptonen moeten laten horen en dan zwijgen. Koppel de batterij los.

Optioneel kunt u op dit punt de conussen gebruiken die bij uw accessoirepakketten voor motorbevestiging zijn geleverd om de schroeven stevig vast te schroeven. Voer vervolgens de cijfers 1 - 4 in op de seriële monitor om de motoren 1 - 4 respectievelijk op het laagste vermogen in te schakelen. Het programma registreert de hoeveelheid schudden als gevolg van onbalans van de rekwisieten. Je 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 zonder deze stap prima konden vliegen, maar misschien iets minder efficiënt en luider dan wanneer we de rekwisieten hadden uitgebalanceerd.

Bijlagen

  • YMFC-AL_esc_calibrate.ino Downloaden

Stap 13: ESC's kalibreren (Mega)

Deze code lijkt erg op de code van Brokking, maar we hebben deze aangepast (en de bijbehorende bedrading) 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 realtime RC-controllerwaarden moeten zien verschijnen. Controleer of ze variëren van 1000 tot 2000 op het uiterste van gas geven, rollen, stampen en gieren.

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

Sluit nu de Arduino aan op de computer, duw de gashendel helemaal omhoog op de controller en sluit de batterij aan. De ESC's moeten drie lage pieptonen laten horen, gevolgd door een hoge piep (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-registerpennen 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 een ​​of andere reden niet alle PORTA-registerpennen de ESC's correct konden activeren. We hadden ook problemen met het gebruik van de operator of is gelijk aan (| =) in een deel van onze testcode. We weten niet zeker waarom dit problemen veroorzaakte bij het schrijven van de bytes om de ESC-pinspanningen in te stellen, dus hebben we de code van Brooking zo min mogelijk aangepast. We denken dat deze code bijna functioneel is, maar uw aantal kilometers kan variëren.

Bijlagen

  • YMFC-AL_esc_calibrateMEGA.ino Downloaden

Stap 14: Get Airborne !! (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 je propellers stevig op het frame gemonteerd en alle componenten vastgebonden, geplakt of anderszins gemonteerd, laad je de code van de vluchtcontroller naar je Arduino en ontkoppel je de Arduino van je 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-ontvangstopstelling, evenals uw video-ontvangstopstelling 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 vervolgens voorzichtig de gashendel omhoog om te zweven. Begin met laag naar de grond te vliegen en over zachte oppervlakken zoals gras totdat je je comfortabel voelt.

Bekijk de ingebedde video van ons die opgewonden met de drone vloog toen we voor het eerst de drone en GPS tegelijkertijd konden laten werken.

Bijlagen

  • YMFC-AL_Flight_controller.ino Downloaden

Stap 15: Get Airborne !! (Mega)

Vanwege onze hangup met de ESC-kalibratiecode voor de Mega, konden we nooit een vluchtcontrollercode voor dit bord maken. Als je zover bent gekomen, dan stel ik me voor dat je op zijn minst met de ESC-kalibratiecode hebt gefriemeld om het voor de Mega te laten werken. Daarom zult u waarschijnlijk soortgelijke wijzigingen in de vluchtcontrollercode moeten aanbrengen als in de laatste stap. Als onze ESC-kalibratiecode voor de Mega magisch werkt zonder enige andere aanpassingen, dan zijn er maar een paar dingen die u hoeft te doen aan de voorraadcode om deze voor deze stap te laten werken. U moet eerst alle instanties van PORTD doorlopen en vervangen door PORTA. Vergeet ook niet om DDRD in DDRA te veranderen. Vervolgens moet u alle bytes wijzigen die naar het PORTA-register worden geschreven, zodat ze de juiste pinnen activeren. Gebruik hiervoor de 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 vliegt met een Mega!

Stap 16: Hoe we zijn gekomen waar we momenteel zijn met het Mega-ontwerp

Dit project was een enorme leerervaring voor ons als Arduino en beginners in de elektronische hobby. Daarom dachten we dat we de sage zouden opnemen van alles wat we tegenkwamen terwijl we probeerden de GPS-code van Joop Brokking 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 deze zo min mogelijk te wijzigen. We hebben geprobeerd het GPS-schild te krijgen om gegevens naar de Arduino te sturen en vervolgens de Arduino die informatie via de HC12-transceiver naar ons te laten verzenden 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. Vervolgens hebben we het getest om er zeker van te zijn dat alles werkte. Op dit moment leken de dingen 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 zo moeilijk, maar we kwamen al snel een fout tegen. De vluchtcontroller van Brokking vertrouwt op 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 worden gecompileerd omdat er "meerdere definities voor _vector 3_" waren, wat dat ook moge betekenen. Nadat we op Google hadden gekeken en in de bibliotheken hadden rondgekeken, beseften we 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 geen fout veroorzaakte, de standaard GPS-bibliotheek overschakelde naar neoGPS en vervolgens AltSoftSerial gebruikte in plaats van Software Serial. Deze combinatie werkte echter, AltSoftSerial kan alleen werken met specifieke pinnen, die niet beschikbaar waren in ons ontwerp. Dit is wat ons ertoe bracht om de Mega te gebruiken. Arduino Megas hebben meerdere seriële hardwarepoorten, wat betekende dat we dit bibliotheekconflict konden omzeilen door helemaal geen seriële softwarepoorten te hoeven openen.

Toen we de Mega echter gingen gebruiken, realiseerden we ons al snel dat de pinconfiguratie anders was. Pinnen op de Uno met onderbrekingen 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 refrenderen van de registers die de code hadden opgeroepen, konden we de vluchtconfiguratiecode uitvoeren met slechts minimale herbedrading en zonder softwarewijzigingen.

De ESC-kalibratiecode is waar we problemen begonnen te krijgen. We hebben dit kort eerder 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 met de standaard pinMode () -functie; het laat de code echter sneller lopen en activeert tegelijkertijd pinnen. Dit is belangrijk omdat de vluchtcode in een zorgvuldig getimede lus loopt. Vanwege de pinverschillen tussen de Arduinos hebben we besloten om poortregister A op de Mega te gebruiken. Bij onze tests gaven echter niet alle pinnen ons dezelfde uitgangsspanning wanneer werd gezegd 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 een beetje kieskeurig en daarom zouden ze alleen goed werken als we de pinnen met de hogere spanning gebruikten. Dit dwong ons toen om de bytes die we schreven in register A te veranderen, zodat we met de juiste pinnen spraken. Hierover vindt u meer informatie in de sectie ESC-kalibratie.

Dit is ongeveer zover we zijn gekomen in dit deel van het project. Toen we deze gewijzigde ESC-kalibratiecode gingen testen, was er iets kortgesloten en verloren we de communicatie met onze Arduino. We waren hierdoor zeer verbaasd omdat we niets aan de bedrading hadden veranderd. Dit dwong ons een stap terug te doen en te beseffen dat we maar een paar dagen de tijd hadden om een ​​vliegende drone te krijgen na wekenlang proberen onze incompatibele stukken in elkaar te passen. Dit is de reden waarom we een backtrack hebben gemaakt en het eenvoudigere project hebben gemaakt met de Uno. We denken echter nog steeds dat onze aanpak dicht bij het werken met de Mega is met weinig meer tijd.

Ons doel is dat deze uitleg van de hindernissen die we tegenkwamen nuttig voor u is als u werkt aan het wijzigen van de Brokking-code. We hebben ook nooit de kans gehad om autonome besturingsfuncties op basis van de GPS te coderen. Dit is iets dat je moet uitzoeken nadat je een werkende drone met een Mega hebt gemaakt. Uit enig voorlopig Google-onderzoek lijkt het er echter op dat het implementeren van een Kalman-filter de meest stabiele en nauwkeurige manier is om de positie tijdens de vlucht te bepalen. We raden u aan een beetje te onderzoeken hoe dit algoritme de staatsschattingen optimaliseert. Behalve dat, veel succes en laat het ons weten als je verder komt dan we konden!

Verwante Artikelen