So baut man eine kostengünstige Drohne mit ESP32
(digikey.com)- Eine ESP32-basierte DIY-Drohne setzt eine kleine WiFi-Drohne mit günstigen Bauteilen um, die per Smartphone gesteuert wird, sodass sich Drohnensteuerung, PCB und Firmware in einem Projekt praktisch erlernen lassen
- Das Zentrum des Designs ist ein integriertes PCB, das Type-C-USB, Batterieschaltung zum Laden, ESP32, CP2102 USB-UART, MPU6050 und den Motortreiber SI2302 vereint
- Die Firmware basiert auf Espressifs ESP-drone firmware und kann direkt mit ESP-IDF 4.4.5 gebaut oder über das bereitgestellte
ESPDrone.bingeflasht werden - Nach dem Einschalten verbindet man sich mit dem von der Drohne erzeugten WiFi-Hotspot mit dem Passwort
12345678und steuert sie anschließend über eine iOS- oder Android-App - Wenn die Entladeleistung des Akkus nicht ausreicht, kann die App-Verbindung abbrechen oder die Drohne beim Start neu booten; daher wird ein Akku mit hoher Entladerate wie im Beispiel 1300mAh 30C benötigt
Projektüberblick und Funktionen
- Dieses Projekt zeigt, wie man eine WiFi-Drohne, die per Smartphone gesteuert wird, mit ESP32 und zusätzlichen Bauteilen selbst baut
- Verwendet werden ein kleines, leichtes Fluggerät mit ESP32-Modul, MPU6050-IMU, Coreless-Motoren und Kunststoffpropellern
- Die wichtigsten Funktionen sind:
- Smartphone-basierte WiFi-Steuerung
- MPU6050 IMU zur Stabilisierung
- Integriertes PCB ohne 3D-gedruckte Teile
- Erweiterbar um Position Hold oder Height Hold über externe Module
- Integriertes Batterieladegerät
- Integrierte USB-Schnittstelle für Programmierung und Debugging
- Unterstützung für Android- und iOS-Apps
- Open Source
Schaltungsaufbau
- Der Type-C-USB-Port übernimmt sowohl Laden als auch Programmierung
- Die Umschaltung des Strompfads zwischen USB-Strom und Akkustrom erfolgt über den P-Channel-MOSFET U2 und die Diode D1
- Die Spannungsregelung übernimmt Microchips MIC5219 3.3V LDO
- Der Laderegler TP4056 verwaltet das Laden des Akkus, die Spannungserfassung erfolgt über eine Spannungsteilerschaltung
- Die zentrale Steuereinheit besteht aus dem ESP32-SoC, dem CP2102-USB-UART-Controller und dem MPU6050-IMU-Chip
- Der CP2102 und ein Dual-MOSFET vereinfachen die Reset-Funktion des ESP32
- Der MPU6050 ist mit den GPIO-Pins des ESP32 verbunden und wird für Flugstabilisierung und Bewegungssteuerung verwendet
- Die Motortreiberschaltung steuert die Motoren über SI2302 N-Channel-MOSFETs und verwendet zusätzlich Schutzdioden und Widerstände
- Debug-LEDs dienen zur Statusanzeige
- Blaue LED: Kalibrierung
- Grüne LED: Verbindung erkannt
- Rote LED: Akku schwach
- Zusätzlich sind Anzeigen für Stromversorgung und Laden vorhanden
PCB und Montage
- Um das Endprodukt kompakt und einfach montierbar zu machen, wird ein kundenspezifisches PCB verwendet
- Auch die Drohnenbeine sind im PCB integriert und lassen sich leicht vom Haupt-PCB trennen
- Die Propeller A und B müssen entsprechend der vorgegebenen Drehrichtung montiert werden
- Während des Selbsttests beim Einschalten muss geprüft werden, ob sich die Propeller korrekt und in die richtige Richtung drehen
Firmware und Flashen
- Die Firmware basiert auf Espressifs ESP-drone firmware; verwendet werden sollte der an das PCB-Design angepasste GitHub-Quellcode von Circuit Digest
- Der Code wurde mit ESP-IDF geschrieben, die beim Kompilieren verwendete Version ist ESP-IDF 4.4.5
- Es gibt drei Möglichkeiten, die Firmware aufzuspielen
- Quellcode mit ESP-IDF bauen
- ESP-IDF 4.4.x installieren und einrichten
- Repository mit
git clone https://github.com/Circuit-Digest/ESP-Drone.gitklonen - In den Ordner
ESP-Drone/Firmware/esp-dronewechseln - Mit
idf.py menuconfiglassen sich Einstellungen ändern, die Standardkonfiguration reicht jedoch aus - Mit
idf.py -p PORT flashbauen und flashen
- ESPTOOL verwenden
- Nach der Installation von ESP-IDF im Ordner mit den Firmware-Images ausführen
- Mit
esptool.py write_flash --flash_size detect 0x0 ESPDrone.binflashen
- ESP32 Flash Download Tool verwenden
- Das Tool herunterladen, starten und als Chip-Typ ESP32 auswählen
- Die Datei
ESPDrone.binauswählen und die Adresse auf0x00setzen - Den korrekten COM-Port auswählen, dann löschen und mit START flashen
- Quellcode mit ESP-IDF bauen
App-Verbindung und Steuerung
- Wird die Drohne auf eine ebene Fläche gestellt und eingeschaltet, erzeugt der Flight Controller einen WiFi-Hotspot
- Danach verbindet man sich am Smartphone mit dem Passwort
12345678und öffnet die App - Die iOS-App kann im App Store über die Suche nach
ESP-Drone APPheruntergeladen werden - Die Android-App kann über den bereitgestellten Link heruntergeladen werden; da sie von einem Dritten erstellt und gehostet wird, sollte die Installation nach eigenem Ermessen erfolgen
- Mit der Schaltfläche connect beginnt die Kommunikation mit der Drohne
- Bei erfolgreicher Verbindung blinkt die LED der Drohne grün
- Die Schaltfläche turn lock dient dazu, den linken Controller entweder nur für auf/ab oder zusätzlich auch für links/rechts drehen zu sperren
- Der linke Stick ist für Start und Landung zuständig, der rechte Stick für die Bewegungssteuerung
- Wenn die App-Verbindung abbricht oder die Drohne beim Start neu bootet, liefert der Akku möglicherweise nicht genug Leistung
- Beispielakku: 1300mAh 30C
- Es wird ein Akku mit höherer Entladerate benötigt
Prüfungen vor dem Flug
- Die Drohne so platzieren, dass der Kopf nach vorn und der Heckbereich mit der Antenne nach hinten zeigt
- Die Drohne auf eine waagerechte Fläche stellen, stillhalten und dann einschalten
- Nach Aufbau der Verbindung prüfen, ob die LED am Heck der Drohne schnell grün blinkt
- Blinkt die rote LED, ist der Akku schwach und muss geladen werden
- Den Throttle-Regler leicht nach vorn schieben und prüfen, ob die Drohne auf Befehle reagiert
- Mit dem rechten Controller kontrollieren, ob die Richtungssteuerung korrekt funktioniert
Hauptkomponenten
- ESP32-WROOM-32E-H4: BT/WiFi-RF-TXRX-Modul von Espressif Systems
- MPU-6050: 3-Achsen-Beschleunigungssensor-/Gyro-IMU von TDK InvenSense
- CP2102N-A02-GQFN28R: USB-UART-Bridge von Silicon Labs
- 2N7002DW-G: Dual-N-Channel-MOSFET von onsemi
- MIC5219-3.3YM5-TR: 3.3V-500mA-Linearregler von Microchip Technology
- AO3401: P-Channel-MOSFET von Alpha & Omega Semiconductor
- SI2302DDS-T1-BE3: N-Channel-MOSFET von Vishay Siliconix
- JS102011SAQN: SPDT-Schiebeschalter von C&K
- 1N4148W: Standarddiode von Diotec Semiconductor
- SS34: 40V-3A-Schottky-Diode von MDD
1 Kommentare
Meinungen auf Hacker News
Für alle, die damit nicht vertraut sind: Es gibt bereits ein ziemlich aktives FPV-Drohnen-Ökosystem zum Selberbauen.
Eine typische Konfiguration kombiniert eine kleine quadratische PCB mit einem STM32-basierten Flight-Control-MCU und Sensoren, eine Motor-Driver-PCB, einen Carbonfaser-Rahmen, ein LoRa-Funkmodul-PCB, eine Kamera und ein Videoübertragungssystem (analog im Stil von Sicherheitskameras aus den 90ern oder digital), bürstenlose DC-Motoren und Propeller usw.
Als Firmware kann man Betaflight, ArduPilot, iNav oder PX4 verwenden oder selbst etwas schreiben. Der PCB-Rahmen im Artikel ist sauber und hat sicher Komfortvorteile, aber ich frage mich, ob er in Situationen mit hoher Beschleunigung genug Steifigkeit bietet, um die gewünschte Regelcharakteristik zu erreichen.
Für ESC-Software gibt es https://github.com/am32-firmware und https://github.com/mathiasvr/bluejay, für Flight Controller https://github.com/betaflight, https://github.com/ArduPilot und https://github.com/iNavFlight.
Für den Steuerungs-Link gibt es https://github.com/ExpressLRS, das auch ESP32/ESP82-Chips verwendet. Für Funkfernsteuerungen gibt es https://github.com/EdgeTX.
Noch vor fünf Jahren war das meiste proprietäre Technik, und der Einstieg ins Hobby kostete mehrere Tausend Dollar; heute kann man bei etwa 500 Dollar anfangen. Der große Kostenpunkt bei FPV sind die Goggles, aber günstige analoge Goggles bekommt man auch für ungefähr 100 Dollar.
Die Flight-Control-Software ist schrittweise besser geworden, und auch das Video-Subsystem ist größtenteils von analog auf digitales 2,4/5,8-GHz-Video umgezogen, aber die Gesamtarchitektur unterscheidet sich nicht wesentlich von vor fünf Jahren. Hobby-R/C-Sender und -Empfänger gehen über den Flight Controller (meist STM32), treiben per PWM-Ausgang Hobby-ESCs an, und die ESCs steuern die Motoren. ESCs sind mikrocontrollerbasiert und lassen sich daher neu flashen, aber das ist umständlich und nervig. Telemetrie ist in der Regel von der Steuerung getrennt, die Steuerung wiederum vom Video, alles ist kurzreichweitig und nicht IP-basiert.
Dagegen erledigen kommerzielle Quadrocopter von der Stange wie die von DJI Steuerung, Video und Telemetrie über einen einzigen Backhaul zwischen Fluggerät und Fernsteuerung, bei beeindruckend niedriger Videolatenz. Vermutlich ist das eine Best-Effort-Methode, bei der über WLAN-artige Chipsätze rohe Vendor-Frames ausgesendet werden und der Empfänger so viel aufnimmt, wie er kann. Mit dem ESP-NOW-Modus des ESP32 ließe sich wohl etwas Ähnliches machen. Ich habe Versuche gesehen, das DJI-Protokoll per Reverse Engineering zu analysieren, kenne aber weder eine vollständig kompatible Implementierung noch eine gleichwertige Alternative aus der Open-Source-Welt.
Am oberen Ende des kommerziellen und proprietären Bereichs gibt es Systeme mit sofort nutzbarer Autonomie, IP-basierten mehrfachen Backhauls (Funk mit/ohne Sichtverbindung, LTE, Satellitenkommunikation usw.), Integration von Navigations-Beacons zur Verringerung der GPS-Abhängigkeit, Hybridmotoren/Generatoren und redundanten Stromversorgungssystemen.
Es scheint keinen Grund zu geben, warum diese Lücke außer mangelndem Entwicklerinteresse existieren müsste. Die Teile sind fast alle erhältlich, und ein Raspberry Pi mit einem ordentlichen Echtzeitbetriebssystem hat weit mehr Rechenleistung als ein STM32 und könnte Multi-Sensor-Fusion im Stil kommerzieller Systeme problemlos leisten. LTE-Modems sind ebenfalls günstig, und größere Hexacopter oder Starrflügler können sogar eine kleine Starlink-Schüssel tragen. Auch „Perching“, also das Landen auf einem Solarpanel zum Aufladen, wäre durchaus möglich.
Allerdings scheint der Stand der Technik bei Open-Source-Drohnen hinter verschlossenen Türen in der Ukraine und im Iran stattzufinden. Wenn ich neue Technik übersehen habe, lasse ich mich gern korrigieren, aber die Lücke zwischen dem, was möglich ist, und der aktuellen Praxis wirkt groß. Gleichzeitig heißt das, dass es entsprechend viele Chancen gibt.
Informationen zu offenen Drohnen, die wie DJI fliegen, finde ich immer schwer, und vielleicht weiß ich auch einfach nicht, wonach ich suchen soll.
Das Hobby „Modellflug/ferngesteuertes Fliegen“ floriert ebenfalls seit Jahrzehnten, und schon die Kategorien hier zeigen, wie reichhaltig es ist: https://www.rcgroups.com/forums/index.php
Wenn man sich die verschiedenen Unterforen ernsthaft ansieht, findet man erstaunliche Designs, die die aus gewöhnlicher Sicht geltende „Norm“ dafür sprengen, wie ein Fluggerät auszusehen hat. Suchbegriffe wie Magnus, aerostat und Fettler sind ziemlich gut.
Ich habe den Verdacht, dass hier jemand Espressifs esp-drone (https://github.com/espressif/esp-drone) erneut hochgeladen und als sein eigenes Projekt ausgegeben hat. DigiKey hat es dann gewissermaßen auf seine Website gestellt.
Zwar heißt es, man habe eine eigene PCB erstellt, aber sie sieht fast identisch aus. Im im Artikel verlinkten Repository (https://github.com/Circuit-Digest/ESP-Drone) gibt es außerdem ein Issue zu angeblicher Malware, und auch die Commit-Historie wirkt etwas verdächtig. Ich kann mich aber auch irren.
Der größte Teil des Repositories besteht aus normalen Textdateien, und die zip- und bin-Dateien scheinen für den Build nicht nötig zu sein; wenn es einem unangenehm ist, kann man sie vor dem Build löschen.
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
Ich halte das für einen Lizenzverstoß. Dass DigiKey solche Leute engagiert hat, sieht wirklich nicht gut aus.
Das Timing für diesen Artikel ist perfekt. In den USA läuft gerade so etwas wie Massenhysterie ab, und nun stellt sich heraus, dass man DIY-Drohnen für 12 bis 13 Dollar pro Stück herstellen kann – was für eine Zeit.
Da manche Leute heutzutage separate UFOs darin sehen, sind selbst billige Drohnen vielleicht schon übertrieben; ein 20er-Pack chinesischer Himmelslaternen könnte reichen, um eine durchschnittliche US-Nachbarschaft dauerhaft in Angst zu versetzen oder zu testen, wie lange es bis auf die erste Seite von /r/UFOs dauert.
Spannend. Ich habe früher Crazyflie[1] gebaut; damals gab es noch keinen ESP32, daher nutzten wir ein eigenes 2,4-GHz-Protokoll, und das hier ist ein hervorragendes Upgrade dazu.
Einen einzelnen Low-Side-MOSFET als Motorcontroller zu verwenden, verzichtet zwar auf einige Verhaltensweisen, die BLDC-Motoren ermöglichen, macht es aber einfacher und günstiger. Insgesamt sind 10 bis 15 Dollar ein sehr guter Preis, und ich frage mich, ob es in eine Hackerbox[2] kommt. Das wäre genau ihr Ding.
Mit der CF-Mikrodrohne hatte ich viel Spaß, und hiervon werde ich mir auf jeden Fall auch eine bauen.
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
Ich schaue mir gerade an, wie man ein altes iPhone in eine Drohne verwandeln könnte. Gute Hardware für höherwertige Aufgaben ist bereits vorhanden, und die eher echtzeitnahen Dinge, also die Motoren entsprechend den Sensoreingaben tatsächlich anzusteuern, könnte ein ESP32 übernehmen.
Schon ein altes iPhone 6 hat GPS, Gyroskop, Beschleunigungssensor, mehrere Kameras, einen ziemlich starken Prozessor, Bluetooth/WiFi/LTE, Ton und Licht sowie Umgebungslicht- und Näherungssensoren. Nimmt man das Gehäuse ab, wird daraus ein hervorragender Mini-Computer, der seine Umgebung wahrnehmen und kommunizieren kann.
Bei neueren iPhones könnte man mit fortgeschrittener Technik wie ARKit ein räumliches Verständnis der Drohne und ihrer Umgebung gewinnen und so eine autonome Drohne bauen. Mit einem iPhone 15 wäre sogar Spatial Video möglich. Das wäre schon ziemlich cool.
Ich wünschte, Apple würde eine einfache Möglichkeit bieten, Einschränkungen auf Betriebssystemebene zu lockern, damit alte Telefone für DIY-Projekte genutzt werden können.
Ein altes Telefon wäre vielleicht als Controller sinnvoller.
Wenn man nicht von Grund auf bauen möchte, kann man etwas mehr bezahlen und ein programmierbares Fertigprodukt kaufen: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
Der mitgelieferte Software-Stack ist sehr grundlegend; für Open-Source-Avionik sollte man sich auf dem japanischen Nerd-Twitter umsehen.
Beeindruckend. Sogar das Fahrwerk (die Stützen?) ist Teil der PCB. Es wäre schön, wenn der Autor Kits verkaufen oder das an einen Anbieter wie Seeed Studio auslagern würde. Ich lebe in einem Land, in dem die Versandkosten für DigiKey-Bestellungen ziemlich hoch sind.
Der Autor schätzt die Kosten laut Stückliste auf knapp unter 13 Dollar. Zu dem Preis wäre es spannend, einen Schwarm für eine DIY-Drohnen-Lichtshow zu bauen.
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
Allerdings sieht es bei den Lieferanten, die ich nutzen kann, eher nach 50 Dollar für ein Exemplar aus, und etwa 150 Dollar für 10 Stück.
Trotzdem ließen sich die Kosten wohl etwas senken. Der USB-Seriell-Chip kostet fast 6 Dollar, während ein anderes Package 4,40 Dollar für 1 Stück bzw. 3,99 Dollar pro Stück bei 10 Stück kostet; ein ausreichend guter Ersatzchip könnte noch günstiger sein. Der gewählte Spannungsregler kostet 1 Dollar pro Stück bei 500 mA, während ich normalerweise einen mit 1000 mA für 0,22 Dollar pro Stück nehme, der bei 10 Stück auf 0,13 Dollar pro Stück fällt.
Irgendwie wirkt das nicht ganz passend, weil die Zahl der verfügbaren Kerne begrenzt ist.
Etwas wie der rp2350 wäre gut. Der hat nämlich einen Ultra-Low-Power-I/O-Core, der unabhängig davon arbeiten kann, ob der Haupt-Core eingeschaltet ist oder nicht. Embedded ist eines der Felder, in denen Multi-Core am besten passt, aber es gibt viel zu selten gute Offloading-Strukturen und ein brauchbares, nicht unterdimensioniertes Programmable-IO-System.
Produkte wie GreenPAK von Silego/Dialog/Renesas sind ebenfalls erwähnenswert. Sehr kleine, aber interessante Mixed-Signal-Programmable-Logic mit ziemlich vielen Peripheriefunktionen.
Für so einen Zweck könnte eher der Ultra-Low-Power-Coprozessor des ESP32 genau passen, aber realistisch betrachtet ist es den Aufwand nicht wert. Die Rechenleistung ist im Vergleich zu dem Strombedarf von WiFi und Rotoren vernachlässigbar, und mehrere Echtzeitaufgaben auf einem einzelnen Core laufen zu lassen, ist auch keine Raketenwissenschaft.
Wir haben Menschen mit noch schwächerer Hardware zum Mond geschickt. Mehr Kerne erhöhen nur die Komplexität.
Ich habe mit einer faltbaren WiFi-Drohne von Lidl für 25 Euro herumgespielt, bis die EU für Kameradrohnen eine jährliche Gebühr von 30 Euro verlangte.
Für Drohnen ohne Kamera fallen mir kaum praktische Anwendungen ein. Fliegenfischen könnte eine sein, aber man müsste sie so programmieren, dass sie die Angelschnur fallen lässt und zurückkehrt, sobald man spürt, dass ein Fisch zieht.
https://www.iaa.ie/general-aviation/drones/drone-register
Wenn man schnell genug fliegt, rutscht die Schnur aus dem Clip und fällt ab, sobald sie straff wird.
Komisch, dass es ein DigiKey-Artikel ist, aber keinen Buy now-Button gibt.
Wenn ich sicher wäre, dass alle Teile geliefert werden können und nichts fehlt, würde ich es wohl sofort ausprobieren.
Allerdings ist ein Teil bereits abgekündigt und nicht mehr erhältlich, und bei zwei Teilen liegt die Mindestbestellmenge über der hier benötigten Stückzahl, also ist das nicht besonders ideal.