Arduino-Drohne mit GPS

Wir haben uns vorgenommen, eine Arduino-gesteuerte und stabilisierte, GPS-fähige FPV-Quadcopter-Drohne (First Person View) mit Rückkehr nach Hause, Koordinaten- und GPS-Haltefunktionen zu bauen. Wir gingen naiv davon aus, dass die Kombination bestehender Arduino-Programme und der Verkabelung für einen Quadcopter ohne GPS mit denen eines GPS-Übertragungssystems relativ einfach wäre und wir schnell zu komplexeren Programmieraufgaben übergehen könnten. Es musste sich jedoch eine überraschende Menge ändern, um diese beiden Projekte miteinander zu verbinden. Daher haben wir einen GPS-fähigen FPV-Quadcopter ohne zusätzliche Funktionen hergestellt.

Wir haben Anweisungen zum Replizieren unseres Produkts beigefügt, wenn Sie mit dem eingeschränkteren Quadcopter zufrieden sind.

Wir haben auch alle Schritte aufgenommen, die wir auf dem Weg zu einem autonomeren Quadcopter unternommen haben. Wenn Sie sich wohl fühlen, tief in Arduino zu graben, oder bereits viel Erfahrung mit Arduino haben und unseren Haltepunkt als Ausgangspunkt für Ihre eigene Erkundung nehmen möchten, dann ist dieses Instructable auch für Sie.

Dies ist ein großartiges Projekt, um etwas über das Erstellen und Codieren von Arduino zu lernen, egal wie viel Erfahrung Sie haben. Außerdem werden Sie hoffentlich mit einer Drohne weggehen.

Das Setup ist wie folgt:

In der Materialliste sind für beide Ziele Teile ohne Sternchen erforderlich.

Teile mit einem Sternchen werden nur für das unvollendete Projekt eines autonomeren Quadcopters benötigt.

Teile mit zwei Sternchen werden nur für den eingeschränkteren Quadcopter benötigt.

Schritte, die beiden Projekten gemeinsam sind, haben keine Markierung nach dem Titel

Schritte, die nur für den eingeschränkteren nicht autonomen Quadcopter erforderlich sind, haben nach dem Titel "(Uno)".

Schritte, die nur für den in Bearbeitung befindlichen autonomen Quadcopter erforderlich sind, haben nach dem Titel "(Mega)".

Befolgen Sie zum Erstellen des Uno-basierten Quad die folgenden Schritte und überspringen Sie alle Schritte mit "(Mega)" nach dem Titel.

Um am Mega-basierten Quad zu arbeiten, befolgen Sie die Schritte in der angegebenen Reihenfolge und überspringen Sie alle Schritte mit "(Uno)" nach dem Titel.

Schritt 1: Sammeln Sie Materialien

Komponenten:

1) Ein Quadcopter-Rahmen (der genaue Rahmen spielt wahrscheinlich keine Rolle) ($ 15)

2) Vier bürstenlose 2830-, 900-kV-Motoren (oder ähnliches) und vier Montagezubehörpakete (4 x 6 USD + 4 x 4 USD = insgesamt 40 USD)

3) Vier 20A UBEC ESCs (4x $ 10 = $ 40 insgesamt)

4) Eine Stromverteilungsplatine (mit XT-60-Anschluss) (20 USD)

5) Ein 3s, 3000-5000mAh LiPo Akku mit XT-60 Anschluss (3000mAh entspricht ca. 20 min Flugzeit) ($ 25)

6) Viele Propeller (diese brechen viel) (10 $)

7) Ein Arduino Mega 2560 * (40 USD)

8) Ein Arduino Uno R3 (20 USD)

9) Ein zweiter Arduino Uno R3 ** ($ 20)

10) Ein Arduino Ultimate GPS Shield (Sie benötigen das Shield nicht, aber für die Verwendung eines anderen GPS ist eine andere Verkabelung erforderlich) (45 USD)

11) Zwei drahtlose HC-12-Transceiver (2x $ 5 = $ 10)

12) Ein MPU-6050, 6DOF (Freiheitsgrad) Kreisel / Beschleunigungsmesser (5 USD)

13) Ein Turnigy 9x 2, 4 GHz, 9-Kanal-Sender / Empfänger-Paar ($ 70)

14) Arduino weibliche (stapelbare) Header ($ 20)

15) LiPo Battery Balance-Ladegerät (und 12-V-Gleichstromadapter, nicht im Lieferumfang enthalten) (20 USD)

17) USB A zu B Stecker zu Stecker Adapterkabel ($ 5)

17) Klebeband

18) Schrumpfschlauch

Ausrüstung:

1) Ein Lötkolben

2) Löten

3) Kunststoff-Epoxid

4) Leichter

5) Abisolierzange

6) Ein Satz Inbusschlüssel

Optionale Komponenten für die Echtzeit-FPV-Videoübertragung (First Person View):

1) Eine kleine FPV-Kamera (dies verweist auf die ziemlich billige und von schlechter Qualität, die wir verwendet haben, Sie können eine bessere ersetzen) (20 US-Dollar)

2) 5, 6-GHz-Video-Sender / Empfänger-Paar (832 verwendete Modelle) (30 USD)

3) 500 mAh, 3 s (11, 1 V) LiPo-Akku (7 US-Dollar) (wir haben ihn mit einem Bananenstecker verwendet, wir empfehlen jedoch im Nachhinein, den verbundenen Akku zu verwenden, da er einen mit dem TS832-Sender kompatiblen Anschluss hat und daher nicht funktioniert. nicht löten).

4) 2 LiPo-Akku mit 1000 mAh 2 s (7, 4 V) oder ähnlichem (5 USD). Die Anzahl der mAh ist nicht kritisch, solange sie mehr als 1000 mAh oder so beträgt. Die gleiche Aussage wie oben gilt für den Steckertyp für eine der beiden Batterien. Der andere wird zur Stromversorgung des Monitors verwendet, sodass Sie auf jeden Fall löten müssen. Wahrscheinlich am besten einen mit einem XT-60-Stecker dafür (das haben wir getan). Ein Link für diesen Typ ist hier: 1000mAh 2s (7, 4V) LiPo mit XT-60-Stecker

5) LCD-Monitor (optional) (15 USD). Sie können auch einen AV-USB-Adapter und eine DVD-Kopiersoftware verwenden, um direkt auf einem Laptop anzuzeigen. Dies bietet auch die Möglichkeit, Videos und Fotos aufzunehmen, anstatt sie nur in Echtzeit anzuzeigen.

6) Wenn Sie Batterien mit anderen als den angeschlossenen Steckern gekauft haben, benötigen Sie möglicherweise geeignete Adapter. Besorgen Sie sich unabhängig davon einen Adapter, der dem Stecker des Akkus für den Monitor entspricht. Hier erhalten Sie XT-60-Adapter

* = nur für fortgeschrittenere Projekte

** = nur für grundlegenderes Projekt

Kosten:

Wenn Sie von vorne anfangen (aber mit einem Lötkolben usw.), kein FPV-System: ~ $ 370

Wenn Sie bereits einen RC-Sender / Empfänger, ein LiPo-Ladegerät und einen LiPo-Akku haben: ~ $ 260

Kosten des FPV-Systems: 80 USD

Schritt 2: Montieren Sie den Rahmen

Dieser Schritt ist ziemlich einfach, insbesondere wenn Sie denselben vorgefertigten Rahmen verwenden, den wir verwendet haben. Verwenden Sie einfach die mitgelieferten Schrauben und setzen Sie den Rahmen wie gezeigt mit einem geeigneten Inbusschlüssel oder Schraubendreher für Ihren Rahmen zusammen. Stellen Sie sicher, dass Arme derselben Farbe nebeneinander liegen (wie in diesem Bild), damit die Drohne eine klare Vorder- und Rückseite hat. Stellen Sie außerdem sicher, dass der lange Teil der Bodenplatte zwischen den gegenüberliegenden Armen hervorsteht. Dies wird später wichtig.

Schritt 3: Motoren montieren und Escs anschließen

Nehmen Sie nach dem Zusammenbau des Rahmens die vier Motoren und das vier Montagezubehör heraus. Sie können entweder Schrauben verwenden, die in den Montagesätzen enthalten sind, oder Schrauben, die vom Quadcopter-Rahmen übrig geblieben sind, um die Motoren und Halterungen festzuschrauben. Wenn Sie die von uns verknüpften Halterungen kaufen, erhalten Sie zwei zusätzliche Komponenten (siehe Abbildung oben). Ohne diese Teile hatten wir eine gute Motorleistung, deshalb haben wir sie weggelassen, um das Gewicht zu reduzieren.

Sobald die Motoren festgeschraubt sind, kleben Sie die Stromverteilungsplatine (PDB) auf die obere Platte des Quadcopter-Rahmens. Stellen Sie sicher, dass Sie es so ausrichten, dass der Batterieanschluss zwischen verschiedenfarbigen Armen (parallel zu einem der langen Teile der Bodenplatte) zeigt (siehe Abbildung oben).

Sie sollten auch vier Propellerkegel mit Innengewinde haben. Legen Sie diese vorerst beiseite.

Nehmen Sie jetzt Ihre ESCs heraus. Auf einer Seite kommen zwei Drähte heraus, einer rot und einer schwarz. Stecken Sie für jeden der vier Regler den roten Draht in den positiven Anschluss des PDB und den schwarzen in den negativen. Beachten Sie, dass für diesen Schritt möglicherweise ein Löten erforderlich ist, wenn Sie einen anderen PDB verwenden. Verbinden Sie nun jedes der drei Drähte, die aus jedem Motor kommen. An diesem Punkt spielt es keine Rolle, welches ESC-Kabel Sie mit welchem ​​Motorkabel verbinden (solange Sie alle Drähte eines ESC mit demselben Motor verbinden!). Sie werden später die Polarität in Rückwärtsrichtung korrigieren. Es ist nicht gefährlich, wenn die Drähte vertauscht sind. es führt nur dazu, dass sich der Motor rückwärts dreht.

Schritt 4: Bereiten Sie Arduino und Shield vor

Eine Notiz, bevor Sie beginnen

Zunächst können Sie alle Drähte direkt miteinander verlöten. Wir fanden es jedoch von unschätzbarem Wert, Pin-Header zu verwenden, da diese viel Flexibilität bei der Fehlerbehebung und Anpassung des Projekts bieten. Was folgt, ist eine Beschreibung dessen, was wir getan haben (und anderen empfehlen, dies zu tun).

Bereite Arduino und Schild vor

Nehmen Sie Ihr Arduino Mega (oder ein Uno, wenn Sie das nicht autonome Quad ausführen), Ihr GPS-Schild und Ihre stapelbaren Header heraus. Löten Sie das männliche Ende der stapelbaren Header auf dem GPS-Schild in den Stiftreihen parallel zu den vorgelöteten Stiften, wie in der obigen Abbildung gezeigt. Löten Sie auch stapelbare Header in die Pin-Reihe mit der Bezeichnung 3V, CD, ... RX. Verwenden Sie einen Drahtschneider, um überschüssige Länge an den Stiften abzuschneiden, die unten herausragen. Platzieren Sie männliche Header mit gebogenen Spitzen in all diesen stapelbaren Headern. Dies sind die Lötdrähte für den Rest der Komponenten.

Befestigen Sie das GPS-Schild oben und achten Sie darauf, dass die Stifte mit denen des Arduino (Mega oder Uno) übereinstimmen. Beachten Sie, dass bei Verwendung des Mega nach dem Anbringen des Schildes noch viel Arduino freigelegt wird.

Legen Sie ein elektrisches Klebeband auf die Unterseite des Arduino und bedecken Sie alle freiliegenden Stiftlote, um Kurzschlüsse zu vermeiden, wenn das Arduino auf dem PDB aufliegt.

Schritt 5: Verdrahten Sie die Komponenten und legen Sie die Batterie ein (Uno)

Das obige Schema ist fast identisch mit dem von Joop Brooking, da wir unser Design stark von seinem abgeleitet haben.

* Beachten Sie, dass in diesem Schaltplan ein ordnungsgemäß montierter GPS-Schutzschild vorausgesetzt wird und das GPS daher in diesem Schaltplan nicht angezeigt wird.

Das obige Schema wurde mit der Fritzing-Software erstellt, die insbesondere für Schaltpläne mit Arduino sehr zu empfehlen ist. Wir haben hauptsächlich generische Teile verwendet, die flexibel bearbeitet werden können, da unsere Teile im Allgemeinen nicht in Fritzings enthaltener Teilebibliothek enthalten waren.

- Stellen Sie sicher, dass der Schalter am GPS-Schild auf "Direct Write" steht.

- Verdrahten Sie jetzt alle Komponenten gemäß dem obigen Schema (außer der Batterie!) (Wichtiger Hinweis zu den GPS-Datenkabeln unten).

- Beachten Sie, dass Sie die Regler bereits mit den Motoren und dem PDB verbunden haben, sodass dieser Teil des Schaltplans abgeschlossen ist.

- Beachten Sie außerdem, dass die GPS-Daten (gelbe Drähte) aus den Pins 0 und 1 des Arduino stammen (nicht aus den separaten Tx- und Rx-Pins des GPS). Dies liegt daran, dass das GPS auf "Direktes Schreiben" konfiguriert ist (siehe unten) und direkt an die seriellen Hardware-Ports am Uno ausgegeben wird (Pins 0 und 1). Dies ist am deutlichsten auf dem zweiten Bild oben der gesamten Verkabelung zu sehen.

-Wenn Sie den RC-Empfänger verkabeln, lesen Sie das Bild oben. Beachten Sie, dass die Datendrähte in die obere Reihe verlaufen, während sich Vin und Gnd in der zweiten bzw. dritten Reihe (und in der zweit- bis äußersten Spalte der Stifte) befinden.

- Um die Verkabelung für den HC-12-Transceiver, den RC-Empfänger und 5Vout vom PDB zum Vin des Arduino zu übernehmen, haben wir stapelbare Header verwendet, während wir für den Kreisel die Drähte direkt auf die Platine gelötet und Wärmeschrumpfschläuche um den Leiter verwendet haben löten. Sie können sich für eine der Komponenten entscheiden. Es wird jedoch empfohlen, direkt auf den Kreisel zu löten, da dies Platz spart und die Montage des kleinen Teils erleichtert. Die Verwendung von Headern ist im Vorfeld etwas aufwändiger, bietet jedoch mehr Flexibilität. Das direkte Löten von Drähten ist langfristig eine sicherere Verbindung, bedeutet jedoch, dass die Verwendung dieser Komponente in einem anderen Projekt schwieriger ist. Beachten Sie, dass Sie, wenn Sie Header auf dem GPS-Schild verwendet haben, immer noch eine angemessene Flexibilität haben, unabhängig davon, was Sie tun. Stellen Sie vor allem sicher, dass die GPS-Datenkabel in den Pins 0 und 1 des GPS leicht zu entfernen und zu ersetzen sind.

Am Ende unseres Projekts konnten wir keine gute Methode zum Anbringen aller unserer Komponenten am Rahmen entwickeln. Aufgrund des Zeitdrucks unserer Klasse drehten sich unsere Lösungen im Allgemeinen um doppelseitiges Schaumband, Klebeband, elektrisches Band und Kabelbinder. Wir empfehlen Ihnen dringend, mehr Zeit mit dem Entwerfen stabiler Montagestrukturen zu verbringen, wenn Sie dies als längerfristiges Projekt planen. Wenn Sie nur einen schnellen Prototyp erstellen möchten, können Sie unseren Prozess nachverfolgen. Stellen Sie jedoch sicher, dass der Kreisel sicher montiert ist. Nur so weiß der Arduino, was der Quadcopter tut. Wenn er sich also im Flug bewegt, treten Probleme auf.

Nehmen Sie Ihren LiPo-Akku mit, wenn alles verkabelt und angebracht ist, und schieben Sie ihn zwischen die obere und untere Platte des Rahmens. Stellen Sie sicher, dass der Anschluss in die gleiche Richtung zeigt wie der Anschluss des PDB und dass tatsächlich eine Verbindung hergestellt werden kann. Wir haben Klebeband verwendet, um die Batterie an Ort und Stelle zu halten (Klettband funktioniert auch, ist aber ärgerlicher als Klebeband). Klebeband funktioniert gut, da man den Akku leicht austauschen oder zum Laden entfernen kann. Sie müssen jedoch sicherstellen, dass Sie die Batterie fest abkleben, da sich die Batterie während des Flugs bewegt, da dies das Gleichgewicht der Drohne ernsthaft stören könnte. Schließen Sie den Akku noch NICHT an den PDB an.

Schritt 6: Verdrahten Sie die Komponenten und legen Sie die Batterie ein (Mega)

Das obige Schema wurde mit der Fritzing-Software erstellt, die insbesondere für Schaltpläne mit Arduino sehr zu empfehlen ist. Wir haben hauptsächlich generische Teile verwendet, da unsere Teile im Allgemeinen nicht in Fritzings enthaltener Teilebibliothek enthalten waren.

-Beachten Sie, dass dieser Schaltplan ein ordnungsgemäß montiertes GPS-Schild voraussetzt und das GPS daher in diesem Schaltplan nicht angezeigt wird.

- Stellen Sie den Schalter Ihres Mega 2560 auf "Soft Serial".

- Verdrahten Sie jetzt alle Komponenten gemäß dem obigen Schema (außer der Batterie!)

- Beachten Sie, dass Sie die Regler bereits mit den Motoren und dem PDB verbunden haben, sodass dieser Teil des Schaltplans abgeschlossen ist.

-Die Überbrückungskabel von Pin 8 zu Rx und Pin 7 zu Tx sind vorhanden, da dem Mega (im Gegensatz zum Uno, für den diese Abschirmung hergestellt wurde) ein universeller asynchroner Empfänger-Sender (UART) an den Pins 7 und 8 und damit fehlt Wir müssen serielle Hardware-Pins verwenden. Es gibt weitere Gründe, warum wir serielle Hardware-Pins benötigen, die später erläutert werden.

-Wenn Sie den RC-Empfänger verkabeln, lesen Sie das Bild oben. Beachten Sie, dass die Datendrähte in die obere Reihe verlaufen, während sich Vin und Gnd in der zweiten bzw. dritten Reihe (und in der zweit- bis äußersten Spalte der Stifte) befinden.

- Um die Verkabelung für den HC-12-Transceiver, den RC-Empfänger und 5Vout vom PDB zum Vin des Arduino zu übernehmen, haben wir stapelbare Header verwendet, während wir für den Kreisel die Drähte direkt und mit Schrumpfschläuchen um das Lot gelötet haben. Sie können entweder für eine der Komponenten wählen. Die Verwendung von Headern ist im Vorfeld etwas aufwändiger, bietet jedoch mehr Flexibilität. Das direkte Löten von Drähten ist langfristig eine sicherere Verbindung, bedeutet jedoch, dass die Verwendung dieser Komponente in einem anderen Projekt schwieriger ist. Beachten Sie, dass Sie, wenn Sie Header auf dem GPS-Schild verwendet haben, immer noch eine angemessene Flexibilität haben, unabhängig davon, was Sie tun.

Am Ende unseres Projekts konnten wir keine gute Methode zum Anbringen aller unserer Komponenten am Rahmen entwickeln. Aufgrund des Zeitdrucks unserer Klasse drehten sich unsere Lösungen im Allgemeinen um doppelseitiges Schaumband, Klebeband, elektrisches Band und Kabelbinder. Wir empfehlen Ihnen dringend, mehr Zeit mit dem Entwerfen stabiler Montagestrukturen zu verbringen, wenn Sie dies als längerfristiges Projekt planen. Wenn Sie nur einen schnellen Prototyp erstellen möchten, können Sie dies in unserem Prozess nachvollziehen. Stellen Sie jedoch sicher, dass der Kreisel sicher montiert ist. Nur so weiß der Arduino, was der Quadcopter tut. Wenn er sich also im Flug bewegt, treten Probleme auf.

Nehmen Sie Ihren LiPo-Akku mit, wenn alles verkabelt und angebracht ist, und schieben Sie ihn zwischen die obere und untere Platte des Rahmens. Stellen Sie sicher, dass der Anschluss in die gleiche Richtung zeigt wie der Anschluss des PDB und dass tatsächlich eine Verbindung hergestellt werden kann. Wir haben Klebeband verwendet, um die Batterie an Ort und Stelle zu halten (Klettband funktioniert auch, ist aber ärgerlicher als Klebeband). Klebeband funktioniert gut, da man den Akku leicht austauschen oder zum Laden entfernen kann. Sie müssen jedoch sicherstellen, dass Sie die Batterie fest abkleben, da sich die Batterie während des Flugs bewegt, da dies das Gleichgewicht der Drohne ernsthaft stören könnte. Schließen Sie den Akku noch NICHT an den PDB an.

Schritt 7: Empfänger binden

Nehmen Sie den RC-Receiver und schließen Sie ihn vorübergehend an ein 5-V-Netzteil an (entweder durch Einschalten des Arduino mit USB- oder 9-V-Stromversorgung oder mit einem separaten Netzteil. Schließen Sie den LiPo noch nicht an das Arduino an). Nehmen Sie den mit dem RC-Empfänger gelieferten Bindungsstift und setzen Sie ihn auf die BIND-Stifte am Empfänger. Schließen Sie alternativ die oberen und unteren Stifte in der BIND-Spalte kurz, wie auf dem Foto oben gezeigt. Am Empfänger sollte schnell ein rotes Licht blinken. Nehmen Sie nun den Controller und drücken Sie die Taste auf der Rückseite, während er ausgeschaltet ist, wie oben gezeigt. Schalten Sie den Controller bei gedrückter Taste ein. Jetzt sollte das blinkende Licht am Empfänger dauerhaft leuchten. Der Empfänger ist gebunden. Entfernen Sie das Bindungskabel. Wenn Sie ein anderes Netzteil verwendet haben, schließen Sie den Empfänger wieder an die 5 V des Arduino an.

Schritt 8: (Optional) Verdrahten Sie das FPV-Kamerasystem und montieren Sie es.

Löten Sie zuerst den XT-60-Adapter mit den Strom- und Erdungskabeln am Monitor zusammen. Diese können von Monitor zu Monitor variieren, aber die Leistung ist fast immer rot, der Boden fast immer schwarz. Stecken Sie nun den Adapter mit den gelöteten Drähten mit dem XT-60-Stecker in Ihren 1000-mAh-LiPo. Der Monitor sollte sich mit (normalerweise) blauem Hintergrund einschalten. Das ist der schwierigste Schritt!

Schrauben Sie nun die Antennen an Ihrem Empfänger und Sender an.

Schließen Sie Ihren kleinen 500mAh Lipo an den Sender an. Der Pin ganz rechts (rechts unter der Antenne) ist Masse (V_) der Batterie, der nächste Pin links ist V +. Sie kommen die drei Drähte, die zur Kamera gehen. Ihre Kamera sollte mit einem 3-in-1-Stecker geliefert werden, der in den Sender passt. Stellen Sie sicher, dass sich das gelbe Datenkabel in der Mitte befindet. Wenn Sie die Batterien verwendet haben, die wir mit dafür vorgesehenen Steckern verbunden haben, sollte dieser Schritt kein Löten erfordern.

Schließen Sie zum Schluss Ihre andere 1000-mAh-Batterie mit dem mit Ihrem Empfänger gelieferten DC-Ausgangskabel an und stecken Sie diesen in den DC-Eingangsanschluss Ihres Receivers. Schließen Sie abschließend das schwarze Ende des mit Ihrem Receiver gelieferten AVin-Kabels an den AVin-Anschluss Ihres Receivers und das andere (gelbe, weibliche) Ende an das gelbe männliche Ende des AVin-Kabels Ihres Monitors an.

Zu diesem Zeitpunkt sollte eine Kameraansicht auf dem Monitor angezeigt werden können. Wenn Sie dies nicht können, stellen Sie sicher, dass sowohl der Empfänger als auch der Sender eingeschaltet sind (Sie sollten Zahlen auf ihren kleinen Bildschirmen sehen) und dass sie sich auf demselben Kanal befinden (wir haben Kanal 11 für beide verwendet und hatten guten Erfolg). Außerdem müssen Sie möglicherweise den Kanal auf dem Monitor ändern.

Montieren Sie die Komponenten am Rahmen.

Sobald das Setup funktioniert hat, ziehen Sie den Netzstecker aus der Steckdose, bis Sie flugbereit sind.

Schritt 9: GPS-Datenempfang einrichten

Verbinden Sie Ihren zweiten Arduino mit Ihrem zweiten HC-12-Transceiver, wie im obigen Schema gezeigt. Beachten Sie dabei, dass das Setup nur dann mit Strom versorgt wird, wenn es an einen Computer angeschlossen ist. Laden Sie den bereitgestellten Transceiver-Code herunter und öffnen Sie Ihren seriellen Monitor auf 9600 Baud.

Wenn Sie die grundlegendere Konfiguration verwenden, sollten Sie GPS-Sätze empfangen, wenn Ihr GPS-Schild mit Strom versorgt und ordnungsgemäß mit dem anderen HC-12-Transceiver verbunden ist (und wenn der Schalter am Schild auf "Direktschreiben" steht).

Stellen Sie beim Mega sicher, dass der Schalter auf "Soft Serial" steht.

Anhänge

  • Transceiver_Uno.ino herunterladen

Schritt 10: Setup-Code ausführen (Uno)

Dieser Code ist identisch mit dem, den Joop Brokking in seinem Arduino Quadcopter-Tutorial verwendet hat, und er verdient alle Anerkennung für das Schreiben.

Verwenden Sie bei getrenntem Akku das USB-Kabel, um Ihren Computer mit dem Arduino zu verbinden, und laden Sie den angehängten Setup-Code hoch. Schalten Sie Ihren RC-Sender ein. Öffnen Sie Ihren seriellen Monitor auf 57600 Baud und befolgen Sie die Anweisungen.

Häufige Fehler:

Wenn der Code nicht hochgeladen werden kann, stellen Sie sicher, dass die Pins 0 und 1 vom UNO / GPS-Schild abgezogen sind. Dies ist derselbe Hardware-Port, über den das Gerät mit dem Computer kommuniziert. Daher muss er frei sein.

Wenn der Code mehrere Schritte gleichzeitig überspringt, überprüfen Sie, ob Ihr GPS-Schalter auf "Direktes Schreiben" steht.

Wenn kein Empfänger erkannt wird, stellen Sie sicher, dass Ihr Empfänger bei eingeschaltetem Sender durchgehend rot leuchtet. Wenn ja, überprüfen Sie die Verkabelung.

Wenn kein Kreisel erkannt wird, kann dies daran liegen, dass der Kreisel beschädigt ist oder dass Sie einen anderen Kreiseltyp haben als den, in den der Code schreiben soll.

Anhänge

  • YMFC-AL_setup.ino herunterladen

Schritt 11: Setup-Code ausführen (Mega)

Dieser Code ist identisch mit dem, den Joop Brokking in seinem Arduino Quadcopter-Tutorial verwendet hat, und er verdient alle Anerkennung für das Schreiben. Wir haben einfach die Verkabelung für den Mega so angepasst, dass die Empfängereingänge den richtigen Pin Change Interrupt-Pins entsprechen.

Verwenden Sie bei getrenntem Akku das USB-Kabel, um Ihren Computer mit dem Arduino zu verbinden, und laden Sie den angehängten Setup-Code hoch. Öffnen Sie Ihren seriellen Monitor auf 57600 Baud und befolgen Sie die Anweisungen.

Anhänge

  • YMFC-AL_setup.ino herunterladen

Schritt 12: Kalibrieren Sie die ESCs (Uno)

Dieser Code ist wieder identisch mit dem Code von Joop Brokking. Alle Modifikationen wurden vorgenommen, um GPS und Arduino zu integrieren. Sie finden sie später in der Beschreibung des Aufbaus des fortschrittlicheren Quadcopters.

Laden Sie den beigefügten ESC-Kalibrierungscode hoch. Schreiben Sie auf dem seriellen Monitor den Buchstaben 'r' und drücken Sie die Eingabetaste. Sie sollten beginnen, Echtzeit-RC-Controller-Werte aufgelistet zu sehen. Stellen Sie sicher, dass sie an den Extremen von Gas, Rollen, Neigen und Gieren zwischen 1000 und 2000 variieren. Dann schreibe 'a' und drücke die Eingabetaste. Lassen Sie die Kreiselkalibrierung los und überprüfen Sie, ob der Kreisel die Bewegung des Quad registriert. Ziehen Sie nun das Arduino vom Computer ab, drücken Sie den Gashebel am Controller ganz nach oben und schließen Sie den Akku an. Die Regler sollten unterschiedliche Signaltöne durchlaufen (dies kann jedoch je nach Regler und Firmware unterschiedlich sein). Drücken Sie den Gashebel ganz nach unten. Die Regler sollten niedrigere Pieptöne abgeben und dann verstummen. Ziehen Sie den Akku heraus.

Optional können Sie an dieser Stelle die mit Ihren Motorbefestigungszubehörpaketen gelieferten Kegel verwenden, um die Propeller festzuschrauben. Geben Sie dann die Nummern 1 bis 4 auf dem seriellen Monitor ein, um die Motoren 1 bis 4 mit der niedrigsten Leistung einzuschalten. Das Programm registriert das Ausmaß des Schüttelns aufgrund eines Ungleichgewichts der Requisiten. Sie können versuchen, Abhilfe zu schaffen, indem Sie auf der einen oder anderen Seite der Requisiten kleine Mengen Klebeband anbringen. Wir fanden heraus, dass wir ohne diesen Schritt einen guten Flug bekommen könnten, aber vielleicht etwas weniger effizient und lauter als wir die Requisiten ausbalanciert hatten.

Anhänge

  • YMFC-AL_esc_calibrate.ino herunterladen

Schritt 13: Kalibrieren Sie ESCs (Mega)

Dieser Code ist dem Code von Brokking sehr ähnlich, wir haben ihn jedoch (und die entsprechende Verkabelung) an die Arbeit mit dem Mega angepasst.

Laden Sie den beigefügten ESC-Kalibrierungscode hoch. Schreiben Sie auf dem seriellen Monitor den Buchstaben 'r' und drücken Sie die Eingabetaste. Sie sollten beginnen, Echtzeit-RC-Controller-Werte aufgelistet zu sehen. Stellen Sie sicher, dass sie an den Extremen von Gas, Rollen, Neigen und Gieren zwischen 1000 und 2000 variieren.

Dann schreibe 'a' und drücke die Eingabetaste. Lassen Sie die Kreiselkalibrierung los und überprüfen Sie, ob der Kreisel die Bewegung des Quad registriert.

Ziehen Sie nun das Arduino vom Computer ab, drücken Sie den Gashebel am Controller ganz nach oben und schließen Sie den Akku an. Die Regler sollten drei leise Pieptöne gefolgt von einem hohen Piepton ausgeben (dies kann jedoch je nach Regler und Firmware unterschiedlich sein). Drücken Sie den Gashebel ganz nach unten. Ziehen Sie den Akku heraus.

Die Änderungen, die wir an diesem Code vorgenommen haben, bestanden darin, von PORTD für die ESC-Pins zu PORTA zu wechseln und dann die in diese Ports geschriebenen Bytes so zu ändern, dass wir die richtigen Pins aktivieren, wie im Schaltplan gezeigt. Diese Änderung ist darauf zurückzuführen, dass sich die PORTD-Registerstifte auf dem Mega nicht an derselben Stelle befinden wie auf dem Uno. Wir konnten diesen Code nicht vollständig testen, da wir mit einem alten Mega-Off-Brand gearbeitet haben, den der Laden unserer Schule hatte. Dies bedeutete, dass aus irgendeinem Grund nicht alle PORTA-Registerpins die ESCs ordnungsgemäß aktivieren konnten. Wir hatten auch Probleme mit der Verwendung des Operators oder gleich (| =) in einigen unserer Testcodes. Wir sind uns nicht sicher, warum dies beim Schreiben der Bytes zum Einstellen der ESC-Pin-Spannungen zu Problemen führte. Deshalb haben wir den Code von Brooking so wenig wie möglich geändert. Wir glauben, dass dieser Code sehr nahe an der Funktionalität liegt, aber Ihr Kilometerstand kann variieren.

Anhänge

  • YMFC-AL_esc_calibrateMEGA.ino herunterladen

Schritt 14: Holen Sie sich in die Luft! (Uno)

Und wieder ist dieses dritte Stück genialen Codes die Arbeit von Joop Brokking. Änderungen an all diesen drei Codeteilen sind nur bei unserem Versuch der Integration der GPS-Daten in das Arduino vorhanden.

Wenn Ihre Propeller fest auf dem Rahmen montiert sind und alle Komponenten festgeschnallt, abgeklebt oder anderweitig montiert sind, laden Sie den Flugsteuerungscode auf Ihr Arduino und ziehen Sie den Arduino von Ihrem Computer ab.

Nehmen Sie Ihren Quadcopter mit nach draußen, schließen Sie die Batterie an und schalten Sie Ihren Sender ein. Optional können Sie einen Laptop mitbringen, der an Ihr GPS-Empfangs-Setup sowie an Ihr Video-Empfangs-Setup und Ihren Monitor angeschlossen ist. Laden Sie den Transceiver-Code auf Ihr terrestrisches Arduino, öffnen Sie Ihren seriellen Monitor auf 9600 Baud und beobachten Sie, wie die GPS-Daten eingehen.

Jetzt sind Sie bereit zu fliegen. Drücken Sie den Gashebel nach unten und gieren Sie nach links, um den Quadcopter zu aktivieren. Heben Sie dann den Gashebel vorsichtig an, um zu schweben. Fliegen Sie zunächst tief auf den Boden und über weiche Oberflächen wie Gras, bis Sie sich wohl fühlen.

Sehen Sie sich das eingebettete Video an, in dem wir aufgeregt mit der Drohne fliegen, als wir zum ersten Mal in der Lage waren, Drohne und GPS gleichzeitig zum Laufen zu bringen.

Anhänge

  • YMFC-AL_Flight_controller.ino herunterladen

Schritt 15: Holen Sie sich in die Luft! (Mega)

Aufgrund unseres Auflegens mit dem ESC-Kalibrierungscode für das Mega konnten wir nie einen Flugsteuerungscode für dieses Board erstellen. Wenn Sie an diesem Punkt angelangt sind, dann stelle ich mir vor, dass Sie zumindest mit dem ESC-Kalibrierungscode herumgespielt haben, damit er für den Mega funktioniert. Daher müssen Sie wahrscheinlich ähnliche Änderungen am Flugsteuerungscode vornehmen wie im letzten Schritt. Wenn unser ESC-Kalibrierungscode für den Mega auf magische Weise ohne weitere Änderungen funktioniert, müssen Sie nur wenige Dinge am Lagercode tun, damit er für diesen Schritt funktioniert. Sie müssen zuerst alle Instanzen von PORTD durch PORTA ersetzen. Vergessen Sie auch nicht, DDRD in DDRA zu ändern. Dann müssen Sie alle Bytes ändern, die in das PORTA-Register geschrieben werden, damit sie die richtigen Pins aktivieren. Verwenden Sie dazu das Byte B11000011, um die Pins auf High zu setzen, und B00111100, um die Pins auf Low zu setzen. Viel Glück und bitte lassen Sie uns wissen, ob Sie erfolgreich mit einem Mega fliegen!

Schritt 16: Wie wir mit dem Mega-Design dahin gekommen sind, wo wir gerade sind

Dieses Projekt war für uns als Arduino- und Elektronik-Hobby-Anfänger eine immense Lernerfahrung. Daher würden wir, obwohl wir die Saga von allem, was uns beim Versuch, GPS zu machen, beim Aktivieren des Joop Brokking-Codes begegnet sind, einbeziehen. Da der Code von Brokking so gründlich und viel komplizierter ist als alles, was wir geschrieben haben, haben wir beschlossen, ihn so wenig wie möglich zu ändern. Wir haben versucht, das GPS-Schild dazu zu bringen, Daten an das Arduino zu senden, und das Arduino diese Informationen dann über den HC12-Transceiver an uns senden zu lassen, ohne den Flugcode oder die Verkabelung in irgendeiner Weise zu ändern. Nachdem wir uns die Schaltpläne und Verkabelungen unseres Arduino Uno angesehen hatten, um herauszufinden, welche Pins verfügbar waren, haben wir den GPS-Transceiver-Code geändert, mit dem wir das vorhandene Design umgangen haben. Dann haben wir es getestet, um sicherzustellen, dass alles funktioniert. Zu diesem Zeitpunkt schienen die Dinge vielversprechend.

Der nächste Schritt war die Integration des Codes, den wir gerade geändert und mit Brokkings Flugsteuerung getestet hatten. Das war nicht allzu schwierig, aber wir sind schnell auf einen Fehler gestoßen. Der Flugcontroller von Brokking basiert auf den Bibliotheken Arduino Wire und EEPROM, während unser GPS-Code sowohl die Software Serial Library als auch die Arduino GPS Library verwendete. Da die Wire Library auf die Software Serial Library verweist, ist ein Fehler aufgetreten, bei dem der Code nicht kompiliert werden konnte, da "mehrere Definitionen für _vector 3_" vorhanden waren, was auch immer dies bedeutet. Nachdem wir uns bei Google umgesehen und in den Bibliotheken herumgegraben hatten, stellten wir schließlich fest, dass dieser Bibliothekskonflikt es unmöglich machte, diese Codeteile zusammen zu verwenden. Also suchten wir nach Alternativen.

Was wir herausgefunden haben, ist, dass die einzige Kombination von Bibliotheken, die keinen Fehler auf uns geworfen hat, darin bestand, die Standard-GPS-Bibliothek auf neoGPS umzustellen und dann AltSoftSerial anstelle von Software Serial zu verwenden. Diese Kombination hat funktioniert, AltSoftSerial kann jedoch nur mit bestimmten Stiften betrieben werden, die in unserem Design nicht verfügbar waren. Dies hat uns dazu gebracht, das Mega zu verwenden. Arduino Megas haben mehrere serielle Hardware-Ports, was bedeutete, dass wir diesen Bibliothekskonflikt umgehen konnten, indem wir überhaupt keine seriellen Software-Ports öffnen mussten.

Als wir jedoch mit dem Mega begannen, stellten wir schnell fest, dass die Pin-Konfiguration anders war. Pins auf dem Uno, die Interrupts haben, sind auf dem Mega unterschiedlich. In ähnlicher Weise befanden sich die SDA- und SCL-Pins an verschiedenen Stellen. Nachdem wir die Pin-Diagramme für jeden Arduino-Typ studiert und die im Code aufgerufenen Register aktualisiert hatten, konnten wir den Flug-Setup-Code mit nur minimaler Neuverkabelung und ohne Softwareänderungen ausführen.

Mit dem ESC-Kalibrierungscode sind Probleme aufgetreten. Wir haben dies kurz zuvor angesprochen, aber im Grunde genommen verwendet der Code Pin-Register, um die Pins zu regeln, die zur Steuerung der ESCs verwendet werden. Dies macht das Lesen des Codes schwieriger als die Verwendung der Standardfunktion pinMode (). Dadurch wird der Code jedoch schneller ausgeführt und gleichzeitig werden die Pins aktiviert. Dies ist wichtig, da der Flugcode in einer sorgfältig zeitgesteuerten Schleife ausgeführt wird. Aufgrund der Pin-Unterschiede zwischen den Arduinos haben wir uns für das Port-Register A des Mega entschieden. Bei unseren Tests gaben uns jedoch nicht alle Pins die gleiche Ausgangsspannung, wenn sie angewiesen wurden, hoch zu laufen. Einige der Pins hatten eine Ausgangsleistung von ca. 4, 90 V und andere gaben uns näher an 4, 95 V. Anscheinend sind die Regler, die wir haben, etwas pingelig, und so würden sie nur dann richtig funktionieren, wenn wir die Pins mit der höheren Spannung verwenden würden. Dies zwang uns dann, die Bytes, die wir in Register A geschrieben hatten, so zu ändern, dass wir mit den richtigen Pins sprachen. Weitere Informationen hierzu finden Sie im Abschnitt ESC-Kalibrierung.

Dies ist ungefähr so ​​weit wie wir in diesem Teil des Projekts gekommen sind. Als wir diesen modifizierten ESC-Kalibrierungscode testeten, kam es zu einem Kurzschluss und wir verloren die Kommunikation mit unserem Arduino. Wir waren sehr verwirrt darüber, weil wir keine Verkabelung geändert hatten. Dies zwang uns zurückzutreten und zu erkennen, dass wir nur ein paar Tage Zeit hatten, um eine fliegende Drohne zu bekommen, nachdem wir wochenlang versucht hatten, unsere inkompatiblen Teile zusammenzufügen. Aus diesem Grund haben wir das einfachere Projekt mit Uno zurückverfolgt und erstellt. Wir sind jedoch immer noch der Meinung, dass unser Ansatz der Arbeit mit dem Mega mit etwas mehr Zeit nahe kommt.

Unser Ziel ist es, dass diese Erklärung der Hürden, auf die wir gestoßen sind, für Sie hilfreich ist, wenn Sie daran arbeiten, den Brokking-Code zu ändern. Wir hatten auch nie die Möglichkeit, autonome Steuerungsfunktionen basierend auf dem GPS zu codieren. Dies müssen Sie herausfinden, nachdem Sie eine funktionierende Drohne mit einem Mega erstellt haben. Nach einigen vorläufigen Google-Untersuchungen scheint die Implementierung eines Kalman-Filters jedoch die stabilste und genaueste Methode zur Bestimmung der Flugposition zu sein. Wir empfehlen Ihnen, ein wenig darüber zu recherchieren, wie dieser Algorithmus Zustandsschätzungen optimiert. Ansonsten viel Glück und lass es uns wissen, wenn du weiter kommst als wir konnten!

Ähnlicher Artikel