Comment fabriquer un drone low cost avec l’ESP32
(digikey.com)- Un drone DIY basé sur l’ESP32 permet de réaliser un mini-drone WiFi piloté depuis un smartphone avec des composants peu coûteux, afin de pratiquer en une seule fois le contrôle de drone, le PCB et le firmware
- Le cœur de la conception est un PCB tout-en-un intégrant un port USB Type-C, un circuit de charge batterie, l’ESP32, un CP2102 USB-UART, un MPU6050 et des drivers moteur SI2302
- Le firmware repose sur le firmware ESP-drone d’Espressif ; il peut être compilé directement avec ESP-IDF 4.4.5 ou flashé à partir du fichier
ESPDrone.binfourni - Après mise sous tension, il faut se connecter au hotspot WiFi créé par le drone avec le mot de passe
12345678, puis le piloter via l’application iOS ou Android - Si la capacité de décharge de la batterie est insuffisante, la connexion à l’application peut se couper ou le drone peut redémarrer au décollage ; une batterie à fort taux de décharge, comme une 1300mAh 30C, est donc nécessaire
Aperçu du projet et fonctionnalités
- Ce projet consiste à fabriquer soi-même un drone WiFi piloté par smartphone à l’aide d’un ESP32 et de composants périphériques
- L’appareil, compact et léger, utilise un module ESP32, une IMU MPU6050, des moteurs coreless et des hélices en plastique
- Les principales fonctionnalités sont les suivantes
- Contrôle WiFi via smartphone
- IMU MPU6050 pour le contrôle de stabilité
- PCB monobloc ne nécessitant aucune pièce imprimée en 3D
- Possibilité d’ajouter un position hold ou un height hold via des modules externes
- Chargeur de batterie intégré
- Interface USB intégrée pour la programmation et le débogage
- Prise en charge des applications Android et iOS
- Open source
Architecture du circuit
- Le port USB Type-C sert à la fois à la charge et à la programmation
- La gestion du chemin d’alimentation utilise le MOSFET P-Channel U2 et la diode D1 pour basculer entre l’alimentation USB et la batterie
- La régulation de tension est assurée par le LDO 3.3V MIC5219 de Microchip
- Le contrôleur de charge TP4056 gère la recharge de la batterie, tandis que la mesure de tension est assurée par un circuit diviseur de tension
- Le cœur du contrôle est constitué du SoC ESP32, du contrôleur USB-UART CP2102 et de la puce IMU MPU6050
- Le CP2102 et le double MOSFET simplifient la fonction de reset de l’ESP32
- Le MPU6050 est relié aux broches GPIO de l’ESP32 et sert à la stabilisation du vol et au contrôle des mouvements
- Le circuit driver moteur commande les moteurs via des MOSFET N-Channel SI2302, avec des diodes de protection et des résistances
- Des LED de débogage servent à vérifier l’état
- LED bleue : calibration
- LED verte : détection de connexion
- LED rouge : batterie faible
- Des indicateurs d’alimentation et de charge sont également présents
PCB et assemblage
- Un PCB personnalisé est utilisé pour rendre le produit final compact et facile à assembler
- Les pieds du drone sont également intégrés au PCB et peuvent être détachés facilement du PCB principal
- Les hélices A et B doivent être montées dans le sens indiqué
- Pendant l’autotest à la mise sous tension, il faut vérifier que les hélices tournent correctement et dans le bon sens
Firmware et flash
- Le firmware est basé sur le firmware ESP-drone d’Espressif, et il faut utiliser la source GitHub de Circuit Digest modifiée pour correspondre à la conception du PCB
- Le code est écrit avec ESP-IDF, et la version utilisée pour la compilation est ESP-IDF 4.4.5
- Il existe trois méthodes pour appliquer le firmware
- Compiler la source avec ESP-IDF
- Installer et configurer ESP-IDF 4.4.x
- Cloner le dépôt avec
git clone https://github.com/Circuit-Digest/ESP-Drone.git - Aller dans le dossier
ESP-Drone/Firmware/esp-drone - Il est possible de modifier la configuration avec
idf.py menuconfig, mais la configuration par défaut suffit - Exécuter
idf.py -p PORT flashpour compiler et flasher
- Utiliser ESPTOOL
- L’exécuter dans le dossier d’image du firmware après avoir installé ESP-IDF
- Flasher avec la commande
esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin
- Utiliser ESP32 Flash Download Tool
- Télécharger et lancer l’outil, puis sélectionner ESP32 comme type de puce
- Sélectionner le fichier
ESPDrone.binet définir l’adresse sur0x00 - Choisir le bon port COM, effacer, puis lancer le flash avec START
- Compiler la source avec ESP-IDF
Connexion à l’application et pilotage
- En plaçant le drone sur une surface plane et en le mettant sous tension, le contrôleur de vol crée un hotspot WiFi
- Sur le smartphone, il faut s’y connecter avec le mot de passe
12345678, puis ouvrir l’application - L’application iOS peut être trouvée sur l’App Store en recherchant
ESP-Drone APP - L’application Android peut être téléchargée via le lien fourni ; comme elle est créée et hébergée par un tiers, l’utilisateur doit décider lui-même de l’installer ou non
- Dans l’application, appuyer sur le bouton connect lance la communication avec le drone
- Si la connexion réussit, la LED du drone clignote en vert
- Le bouton turn lock sert à verrouiller le contrôleur de gauche pour n’utiliser que les mouvements haut-bas, ou au contraire haut-bas-gauche-droite pour la rotation
- Le stick de gauche gère le décollage et l’atterrissage, celui de droite contrôle les déplacements
- Si la connexion à l’application se coupe ou si le drone redémarre au décollage, il se peut que la batterie ne fournisse pas assez de puissance
- Batterie d’exemple : 1300mAh 30C
- Une batterie avec un taux de décharge plus élevé est nécessaire
Vérifications avant vol
- Placer la tête du drone vers l’avant et la queue, où se trouve l’antenne, vers l’arrière
- Poser le drone sur une surface horizontale et l’allumer sans le bouger
- Une fois la communication établie, vérifier que la LED à l’arrière du drone clignote rapidement en vert
- Si la LED rouge clignote, cela indique une batterie faible et il faut la recharger
- Pousser légèrement le contrôleur de gaz vers l’avant pour vérifier que le drone réagit à la commande
- Vérifier avec le contrôleur de droite que le contrôle de direction fonctionne correctement
Principaux composants
- ESP32-WROOM-32E-H4 : module RF BT/WiFi TXRX d’Espressif Systems
- MPU-6050 : IMU accéléromètre/gyroscope 3 axes de TDK InvenSense
- CP2102N-A02-GQFN28R : pont USB-UART de Silicon Labs
- 2N7002DW-G : double MOSFET N-Channel d’onsemi
- MIC5219-3.3YM5-TR : régulateur linéaire 3.3V 500mA de Microchip Technology
- AO3401 : MOSFET P-Channel d’Alpha & Omega Semiconductor
- SI2302DDS-T1-BE3 : MOSFET N-Channel de Vishay Siliconix
- JS102011SAQN : interrupteur coulissant SPDT de C&K
- 1N4148W : diode standard de Diotec Semiconductor
- SS34 : diode Schottky 40V 3A de MDD
1 commentaires
Commentaires sur Hacker News
Pour ceux qui ne connaissent pas, il existe déjà un écosystème de drones FPV à monter soi-même assez actif.
Une configuration courante consiste à combiner une petite PCB carrée avec un MCU de contrôle de vol basé sur STM32 et des capteurs, une PCB de drivers moteur, un châssis en fibre de carbone, une PCB de module radio LoRa, une caméra et un système d’émission vidéo (analogique façon caméras de sécurité des années 90, ou numérique), des moteurs DC brushless et des hélices, etc.
Côté firmware, on peut utiliser Betaflight, ArduPilot, iNav, PX4, ou l’écrire soi-même. Le châssis en PCB de l’article est propre et clairement pratique, mais je me demande s’il aura une rigidité suffisante pour obtenir les caractéristiques de contrôle souhaitées en forte accélération.
Pour les logiciels d’ESC, il y a https://github.com/am32-firmware, https://github.com/mathiasvr/bluejay, et pour les contrôleurs de vol https://github.com/betaflight, https://github.com/ArduPilot, https://github.com/iNavFlight.
Pour la liaison de contrôle, il y a https://github.com/ExpressLRS, qui utilise aussi des puces ESP32/ESP82. Pour les radios, il y a https://github.com/EdgeTX.
Il y a encore cinq ans, la plupart de ces technologies étaient propriétaires et se lancer dans le hobby coûtait plusieurs milliers de dollars ; aujourd’hui, on peut commencer autour de 500 dollars. En FPV, le gros poste de dépense est le masque, mais on trouve des masques analogiques bon marché autour de 100 dollars.
Les logiciels de contrôle de vol se sont améliorés progressivement et le sous-système vidéo est globalement passé de l’analogique au numérique en 2,4/5,8 GHz, mais l’architecture d’ensemble n’a pas beaucoup changé par rapport à il y a cinq ans. Des émetteurs et récepteurs R/C de loisir passent par un contrôleur de vol (souvent un STM32), qui pilote des ESC de loisir via des sorties PWM, et les ESC contrôlent les moteurs. Les ESC étant basés sur des microcontrôleurs, on peut les reflasher, mais c’est pénible et agaçant. La télémétrie est généralement séparée du contrôle, le contrôle est aussi séparé de la vidéo, tout est à courte portée et rien n’est basé sur IP.
À l’inverse, les quadricoptères commerciaux prêts à l’emploi comme ceux de DJI gèrent le contrôle, la vidéo et la télémétrie entre l’appareil et la radiocommande via un seul backhaul, avec une latence vidéo impressionnamment basse. C’est probablement une approche de type best-effort où un chipset de la famille WiFi diffuse des trames brutes propres au fabricant et où le récepteur en récupère autant que possible. On pourrait sans doute faire quelque chose de similaire avec le mode ESP-NOW de l’ESP32. J’ai vu des tentatives de rétro-ingénierie du protocole DJI, mais je ne connais ni implémentation entièrement compatible ni équivalent open source.
Dans le haut de gamme commercial et propriétaire, on trouve même de l’autonomie prête à l’emploi, des backhauls multiples basés sur IP (radio en visibilité directe/hors visibilité directe, LTE, communications satellite, etc.), l’intégration de balises de navigation pour réduire la dépendance au GPS, des moteurs/générateurs hybrides et des systèmes d’alimentation redondants.
Il ne semble pas y avoir de raison, hormis l’intérêt des développeurs, pour qu’un tel écart existe. Presque tous les composants sont disponibles, et un Raspberry Pi avec un bon système d’exploitation temps réel offre bien plus de capacité de traitement qu’un STM32, assez pour faire facilement de la fusion multi-capteurs à la manière des systèmes commerciaux. Les modems LTE sont aussi bon marché, et de plus gros hexacoptères ou des voilures fixes peuvent même soulever une petite antenne Starlink. Des approches comme le « perching », consistant à se poser sur des panneaux solaires pour se recharger, sont tout à fait possibles.
Cela dit, la pointe de l’open source dans les drones semble aujourd’hui se jouer derrière les portes closes de l’Ukraine et de l’Iran. Je serais ravi qu’on me corrige si j’ai manqué de nouvelles technologies, mais l’écart entre ce qui est « possible » et la pratique actuelle paraît important. En même temps, cela signifie aussi qu’il y a beaucoup d’opportunités.
J’ai toujours du mal à trouver des informations sur des drones ouverts qui volent comme les DJI, et j’ai peut-être surtout l’impression de ne même pas savoir quoi chercher.
Le hobby « aéromodélisme / vol radiocommandé » prospère lui aussi depuis des décennies, et il suffit de regarder ces catégories pour voir sa richesse : https://www.rcgroups.com/forums/index.php
En parcourant sérieusement les différents sous-forums, on tombe sur des conceptions étonnantes qui bousculent les idées « normales » de ce à quoi un aéronef est censé ressembler. Des termes de recherche comme Magnus, aerostat ou Fettler sont de bons points de départ.
J’ai l’impression que quelqu’un a simplement remis en ligne esp-drone d’Espressif (https://github.com/espressif/esp-drone) et le présente comme son propre projet. DigiKey l’a en quelque sorte publié sur son site
Ils disent avoir créé un PCB personnalisé, mais ça paraît presque identique. Le dépôt lié dans l’article (https://github.com/Circuit-Digest/ESP-Drone) a aussi une issue signalant la présence de malware, et l’historique des commits paraît un peu suspect. Je peux me tromper
La majeure partie du dépôt est composée de fichiers texte ordinaires, et les zip et bin ne semblent pas nécessaires à la compilation ; si ça vous met mal à l’aise, vous pouvez les supprimer avant de compiler
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
À mon avis, c’est une violation de licence. Ça donne une très mauvaise image que DigiKey ait embauché ces gens
Le timing de cet article est parfait. Aux États-Unis, il y a une sorte d’hystérie collective en cours, et voilà qu’on apprend qu’on peut fabriquer des drones DIY pour 12 à 13 dollars pièce : quelle époque incroyable
Comme certains voient des ovnis séparés partout ces temps-ci, en réalité même des drones bon marché seraient excessifs ; un lot de 20 lanternes chinoises suffirait peut-être à maintenir un quartier américain moyen dans la peur, ou à voir combien de temps il faut pour arriver en première page de /r/UFOs
Intéressant. J’avais fabriqué un Crazyflie[1] à l’époque ; l’ESP32 n’existait même pas encore, donc on utilisait un protocole 2,4 GHz personnalisé, et ceci en est une excellente mise à niveau
Utiliser un unique MOSFET low-side comme contrôleur moteur rend aussi l’ensemble plus simple et moins cher, au prix de l’abandon de certains comportements offerts par les moteurs BLDC. Globalement, pour 10 à 15 dollars, c’est un très bon prix, et je me demande si ça finira dans une Hackerbox[2]. C’est exactement le genre de truc qu’ils feraient
Je me suis beaucoup amusé avec les microdrones CF, et je compte bien en fabriquer un aussi
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
Je suis en train d’étudier l’idée de transformer un vieil iPhone en drone. Il y a déjà un bon matériel pour gérer les tâches de haut niveau, et on peut confier à un ESP32 les aspects plus temps réel, comme piloter effectivement les moteurs en fonction des entrées des capteurs
Même un vieil iPhone 6 dispose d’un GPS, d’un gyroscope, d’un accéléromètre, de plusieurs caméras, d’un processeur assez puissant, du Bluetooth/WiFi/LTE, du son et de l’éclairage, ainsi que de capteurs de luminosité ambiante et de proximité. Une fois sorti de sa coque, ça devient un excellent mini-ordinateur capable de percevoir son environnement et de communiquer
Sur des iPhone plus récents, on pourrait même utiliser des technologies avancées comme ARKit pour obtenir une compréhension spatiale du drone et de son environnement, et fabriquer un drone autonome. Avec un iPhone 15, il y aurait même la vidéo spatiale. Ce serait vraiment génial
J’aimerais qu’Apple propose un moyen simple de lever les restrictions au niveau du système d’exploitation pour permettre d’utiliser d’anciens téléphones dans des projets DIY
Un vieux téléphone serait peut-être plus utile comme radiocommande
Si vous ne voulez pas le construire de zéro, vous pouvez payer un peu plus et acheter un produit fini programmable : https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
La pile logicielle incluse est très basique, et pour l’avionique open source, il faut fouiller le Twitter japonais de nerds
Impressionnant. Même le train d’atterrissage (les supports ?) fait partie du PCB. Ce serait bien que l’auteur vende un kit ou sous-traite la fabrication à un endroit comme Seeed Studio. Je vis dans un pays où les frais de livraison des commandes DigiKey sont assez élevés.
L’auteur estime le coût de la nomenclature à un peu moins de 13 dollars. À ce prix-là, ce serait amusant de fabriquer un essaim pour un light show de drones DIY.
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
Cela dit, avec les fournisseurs que je pourrais utiliser, un exemplaire semble plutôt proche de 50 dollars, et 10 exemplaires autour de 150 dollars.
Il devrait tout de même être possible de réduire un peu les coûts. La puce USB-série coûte presque 6 dollars ; dans un autre boîtier, elle est à 4,40 dollars l’unité, ou 3,99 dollars pièce par 10, et une puce de remplacement qui semble suffisante pourrait être moins chère. Le régulateur de tension choisi est un 500 mA à 1 dollar pièce, alors que ceux que je choisis habituellement sont à 0,22 dollar pièce pour 1000 mA, et descendent à 0,13 dollar pièce par 10.
Ça ne me paraît pas très adapté, vu le nombre limité de cœurs disponibles.
Quelque chose comme le rp2350 serait bien, puisqu’il dispose d’un cœur d’E/S à très basse consommation capable de fonctionner que le cœur principal soit allumé ou non. L’embarqué est l’un des domaines où le multicœur est le plus pertinent, mais il est trop rare de trouver une bonne structure d’offloading et un système d’E/S programmable qui ne soit pas anémique.
Les produits comme les GreenPAK de Silego/Dialog/Renesas méritent aussi d’être mentionnés : une logique programmable mixte très petite mais intéressante, avec pas mal de périphériques.
Pour ce genre d’usage, le coprocesseur ultra basse consommation de l’ESP32 pourrait au contraire convenir parfaitement, mais en pratique ça n’en vaut pas l’effort. La puissance de calcul est négligeable par rapport à celle demandée par le WiFi et les rotors, et faire tourner plusieurs tâches temps réel sur un seul cœur n’a rien de sorcier.
On a envoyé des humains sur la Lune avec du matériel moins puissant que ça. Ajouter des cœurs ne fait qu’augmenter la complexité.
Je me suis amusé avec le drone WiFi pliable à 25 euros de Lidl jusqu’à ce que l’UE exige une redevance annuelle de 30 euros pour les drones avec caméra.
Je ne vois pas trop d’usage pratique pour un drone sans caméra. La pêche à la mouche pourrait en être un, mais il faudrait le programmer pour lâcher la ligne et revenir dès qu’on sent qu’un poisson tire.
https://www.iaa.ie/general-aviation/drones/drone-register
Si on vole assez vite, dès que la ligne se tend, elle sort de la pince et tombe.
C’est bizarre que ce soit un article DigiKey et qu’il n’y ait pas de bouton Buy now.
Si j’étais sûr de pouvoir me faire livrer toutes les pièces et de ne rien avoir oublié, je m’y mettrais tout de suite.
Mais un des composants est déjà obsolète et indisponible, et pour deux autres, la quantité minimale de commande est supérieure à celle nécessaire ici, donc ce n’est pas idéal.