ESP32 RC Cars
Vidéo de démonstration
- Ce projet présente un système de caméra télécommandé basé sur ESP32
- Il permet de transmettre un flux vidéo en temps réel via WebSockets et de contrôler le moteur et le servo
- Une application serveur Python gère la communication WebSocket et fournit une interface web permettant de piloter l’appareil ESP32
Fonctionnalités
- Streaming vidéo en temps réel depuis l’ESP32-CAM vers le serveur web
- Contrôle à distance du moteur et du servo via des commandes WebSocket
- Fonction de timeout automatique qui réinitialise le moteur et le servo à leur état par défaut
- Mise à disposition côté serveur d’un canevas dynamique de flux vidéo multi-clients
Exigences matérielles
- ESP32-CAM (module AI Thinker ou carte compatible)
- Moteur et servo connectés aux broches GPIO appropriées
- Alimentation 5V stable pour l’ESP32-CAM
- Optionnel : carte SD pour des fonctionnalités supplémentaires
- Réseau Wi‑Fi pour la communication
Matériel
- Tous les kits peuvent être achetés sur aliexpress
- Châssis de voiture, contrôleur électronique de vitesse, support de batterie, cellules 18650 ou pack batterie 7.4v, ESP32-CAM, manette de jeu Bluetooth (utilisation d’une manette PS4)
Exigences logicielles
Code ESP32
Bibliothèques
WiFi.h : connexion Wi‑Fi
ArduinoWebsockets.h : communication WebSocket
esp_camera.h : contrôle de la caméra ESP32-CAM
ServoControl.h et Esc.h : contrôle du servo et du moteur
Arduino.h : fonctions Arduino standard
Serveur Python
Dépendances
- Installer les bibliothèques Python suivantes :
aiohttp, opencv-python, numpy
Configuration
Firmware ESP32
- Modifier le fichier
secrets.h pour inclure les identifiants Wi‑Fi et l’URL du serveur WebSocket
- Vérifier que les broches GPIO du module caméra, du moteur et du servo correspondent à la configuration matérielle
Serveur Python
- Placer le script serveur dans un répertoire avec le fichier
index.html pour l’interface web
- Démarrer le serveur :
python3 server.py
Utilisation
ESP32
- Téléverser le sketch fourni sur l’ESP32-CAM avec l’Arduino IDE ou une plateforme compatible
- Surveiller la sortie série pour vérifier la bonne connexion au Wi‑Fi et au serveur WebSocket
Serveur
- Exécuter le script serveur Python
- Ouvrir l’interface web dans le navigateur pour voir le flux vidéo en temps réel
- Envoyer des commandes de contrôle via la connexion WebSocket
Commandes WebSocket
MOTOR:<speed> : définit la vitesse du moteur (-255 à 255)
SERVO:<angle> : définit l’angle du servo (0 à 180)
CONTROL:<speed>:<angle> : contrôle simultanément la vitesse du moteur et l’angle du servo
Détails techniques
Initialisation de l’ESP32
- Wi‑Fi : connexion au réseau Wi‑Fi spécifié
- Caméra : configuration de l’ESP32-CAM avec les paramètres adaptés au streaming vidéo
- WebSocket : établissement d’une connexion WebSocket avec le serveur
Gestion du timeout
- Si aucune commande de contrôle n’est reçue pendant la période de timeout prédéfinie, la vitesse du moteur est réinitialisée à
0 et l’angle du servo à 90
Serveur Python
- Gère la communication WebSocket avec plusieurs clients ESP32
- Traite les images vidéo reçues et les organise dynamiquement en grille
- Diffuse la grille des images vidéo vers l’interface web
Dépannage
Problèmes de connexion
- Vérifier les identifiants Wi‑Fi dans
secrets.h
- Vérifier que le serveur WebSocket est en cours d’exécution et accessible
Problèmes de flux vidéo
- Vérifier l’alimentation correcte de l’ESP32-CAM
- Vérifier les paramètres d’initialisation de la caméra
Licence
- Ce projet est proposé en open source sous licence MIT
Contribution
- Les issues et pull requests pour améliorer l’application sont les bienvenues
1 commentaires
Commentaires Hacker News
Il y a 12 ans, à l’époque où Arduino existait mais pas encore l’ESP32, j’avais mené un projet utilisant un téléphone HTC Magic comme caméra et émetteur Wi‑Fi, relié à un Arduino pour piloter des servos et des LED RGB. La connexion n’était pas très stable, mais c’était amusant.
Si l’automatisation des voitures RC vous intéresse, c’est une lecture amusante. Les informations datent de quelques années, mais il existe peut-être aujourd’hui des méthodes plus simples.
Avant d’acheter une ESP32 CAM, il vaut mieux envisager un modèle avec antenne externe. J’ai suivi des conseils sur Reddit concernant les problèmes de fréquence d’images.
J’ai récemment réalisé un projet similaire avec Rust et un Steam Deck.
Le gros problème du FPV, c’est la latence, et je me demande quelle est la latence de ce projet.
J’ai contrôlé un char RC propulsé par un ESP32 via Bluetooth avec une manette PlayStation 4.
Sur AliExpress, une bonne voiture RC de 2,5 pouces coûte 30 dollars, et une caméra analogique autonome en 5,8 GHz coûte 25 dollars.
J’envisage un projet similaire et je suis curieux d’avoir des retours sur la latence. J’aimerais savoir s’il est possible de piloter à distance en regardant le flux vidéo. J’ai l’impression que la latence poserait problème pour l’évitement d’obstacles.
Je voulais fabriquer un jouet pour chat qui évite automatiquement les obstacles. Ce projet pourrait constituer une meilleure base que celle que j’avais choisie auparavant.