WiDC : Robot FPV Wi‑Fi – Contrôle à distance avec vidéo en direct
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Module ESP8266 ESP-01 (Espressif) | 1 |
| Shield de prototypage Arduino | 1 |
| Moteur DC avec roue | 1 |
| Pont en H (H-bridge) | 1 |
Applications et services en ligne
- Autodesk Fusion 360 (conception CAO)
- Arduino IDE (programmation)
À propos de ce projet
Et si vous utilisiez un robot télécommandé pour explorer votre environnement, accéder à des zones inaccessibles, surveiller, prendre des photos, filmer ou diffuser de la vidéo ? Ce tutoriel vous montre comment réaliser un robot abordable pour toutes ces applications !
Ce guide améliore mon tutoriel précédent (robot rover FPV piloté par Wi‑Fi) en proposant un robot fait maison plus rapide. Il explique comment concevoir un robot à deux roues piloté à distance via un réseau Wi‑Fi, en utilisant deux moteurs DC, un Arduino Uno et un module Wi‑Fi ESP8266.
Le robot se contrôle depuis un navigateur web ordinaire grâce à une interface HTML. Un smartphone Android peut diffuser la vidéo et l'audio du robot vers l'interface de contrôle.
Comme dans le tutoriel précédent, je montre comment concevoir et construire un châssis peu coûteux pour un projet robotique, avec de simples outils courants (pas d'imprimante 3D, de découpe laser ou de routeur CNC nécessaire).
On notera que les composants utilisés ne sont pas nécessairement optimaux. Un NodeMCU pourrait remplacer la combinaison Arduino + ESP8266. Un Raspberry Pi avec caméra remplacerait le smartphone et piloterait aussi les moteurs. Il est même possible d'utiliser un smartphone Android comme « cerveau » du robot.
Ce tutoriel dérive d'un autre projet dont je fais partie : Joy Robot (Hackaday / Hackster). Le même matériel a été réutilisé pour simplifier. L'Arduino Uno a été choisi pour son accessibilité et sa facilité d'utilisation, et nous voulions concevoir un shield simple. Dans le projet original, nous contrôlions aussi des servomoteurs et des matrices de LEDs, et interfacions avec l'ESP. Le smartphone est en fait remplacé par une tablette qui exécute d'autres applications. Vous trouverez d'autres tutoriels liés à ce robot dans les liens ci-dessous :
- Contrôle d'une matrice de LEDs avec Arduino Uno : Instructables
- Servomoteurs pilotés par navigateur Wi‑Fi : Instructables
- Robot piloté par Wi‑Fi avec Wemos D1 (ESP8266) et Blynk : Hackster
Ce guide peut être adapté et son châssis ou son interface de contrôle modifiés selon vos besoins.
Étape 1 : Outils
Les outils suivants ont servi à la construction du prototype :
- Scie à main (découpe de plaques d'acrylique)
- Tournevis (vissage boulons/écrous)
- Règle (mesures)
- Cutter (découpe structure, perçage trous)
- Perceuse (perçage acrylique pour vis)
- Papier de verre (finitions bords)
- Fer à souder (bornes moteurs)
- Ordinateur (compilation/téléversement code Arduino)
Ces outils servent à la structure mécanique, l'assemblage et le câblage électronique. Certains sont inutiles si vous achetez un châssis tout fait. Vous pouvez aussi utiliser d'autres équipements (imprimante 3D, découpe laser…) selon votre makerspace.
Étape 2 : Structure mécanique et matériaux
Matériaux mécaniques :
- Plaque acrylique 2 mm
- Moteur DC avec réducteur et roue (×2)
- Roue libre 30 mm (×1)
- Vis M2 × 10 mm (×5)
- Écrous M2 × 1,5 mm (×5)
- Vis M3 × 10 mm (×9)
- Vis M3 × 40 mm (×4)
- Écrous M3 × 1,5 mm (×12)
- Vis 5/32" × 1" (×4)
- Écrous 5/32" (×12)
- Support universel pour smartphone
- Équerres métalliques en L 30 × 30 mm (×4)
Étape 3 : Composants électroniques
- Arduino Uno
- Module ESP8266
- Protoshield (version compacte) ou breadboard ordinaire
- Résistances 1 kΩ (×2)
- Résistance 10 kΩ (×1)
- Moteurs DC avec réducteur et roue (×2)
- Module pont en H
- Fils de câblage (jumper wires)
- Power bank 5V USB
Tous ces composants se trouvent aisément en ligne. Le choix des composants provient d'un autre projet et peut être optimisé (autre microcontrôleur, etc.).
Étape 4 : Conception de la structure
J'ai d'abord modélisé en 3D les composants principaux pour définir leur agencement. Certains modèles proviennent de la bibliothèque GrabCAD Community :
- Arduino Uno
- Moteur avec réducteur
- Pont en H (L9110)
- Power bank
- Support smartphone universel
Les composants électroniques ont été disposés en plan pour déterminer l'emprise au sol. Puis j'ai choisi la position des moteurs/roues pour une structure stable. La structure principale se compose de trois plaques (base + deux plaques latérales) reliées par des équerres.
Fichiers fournis : base.pdf, base.svg
Étape 5 : Fabrication et assemblage de la structure
1. Découpe de la base acrylique : Transférez les cotes du dessin 2D sur la plaque. Imprimez le dessin sur papier adhésif, collez-le sur l'acrylique. Avec un cutter et une règle, rayez l'acrylique sur les traits. Placez la plaque sur une surface plane, maintenez-la avec des serre-joints et appliquez une pression pour la casser net. Poncez les bords. Une scie à main peut aussi servir.
2. Perçage des trous : Percez aux emplacements indiqués sur le dessin (masque). L'acrylique se perce facilement. Sans perceuse, un outil pointu (cutter) peut faire l'affaire. Retirez le masque.
3. Montage des composants : Vissez selon le modèle 3D et la vidéo. Vis M3 pour équerres et moteurs DC. Vis M2 pour l'électronique. Vis 5/32" pour roue avant et pince smartphone.
Fichier : base.pdf
Étape 6 : Assemblage de l'électronique
Le circuit utilise l'Arduino Uno comme contrôleur principal, interfacé avec l'ESP8266 pour le Wi‑Fi. L'Arduino pilote les moteurs DC via un pont en H capable de commander deux moteurs indépendamment dans les deux sens.
Une power bank alimente l'électronique via le port USB de l'Arduino : simple à recharger, remplaçable, tension 5V sûre.
Câblez selon le schéma. Des fils jumper relient l'ESP8266 (non compatible breadboard), le pont en H et les moteurs. Utilisez un protoshield (circuit compact), une breadboard, ou concevez votre propre shield Arduino.
Fichiers : wiDC_Esquem_C3_A1tico.pdf, wiDC.fzz, wiDC_bb.pdf
Étape 7 : Code Arduino
Installez le dernier Arduino IDE. Aucune bibliothèque n'est requise pour la communication ESP8266 ou le contrôle moteurs. Vérifiez le baudrate de votre ESP8266 et réglez-le dans le code. Téléchargez WiDC.ino, remplacez XXXXX par le SSID de votre routeur Wi‑Fi et YYYYY par son mot de passe. Branchez l'Arduino en USB et téléversez.
Explication du code
Le code utilise un port série pour la communication Arduino ↔ ESP8266, et un autre pour Arduino ↔ ordinateur. Comme l'Uno n'a qu'un port série hardware, la bibliothèque SoftwareSerial crée un second port sur les broches numériques 2 (TX) et 3 (RX).
Au setup(), les deux communications série sont initialisées à 9600 bauds (mon ESP8266 était configuré ainsi ; par défaut souvent 115200 bauds, mais SoftwareSerial ne supporte pas cette vitesse). Les commandes AT standard de l'ESP8266 sont utilisées :
AT+RST: reset moduleAT+CWMODE=1: mode stationAT+CWJAP="SSID","PASS": connexion Wi‑FiAT+CIPMUX=1: connexions multiplesAT+CIPSERVER=1,80: serveur web sur port 80
Une fonction auxiliaire sendData() envoie les commandes, lit et affiche la réponse sur le moniteur série.
Dans loop(), l'Arduino attend les commandes du serveur web. Cinq commandes sont définies (cm1 à cm5) correspondant à cinq états : avancer, reculer, tourner droite, tourner gauche, arrêt. À chaque commande reçue, l'Arduino passe à l'état correspondant et y reste jusqu'à une nouvelle commande.
Chaque état définit les signaux sur les broches moteurs. digitalWrite(pin, LOW) met la broche à 0V, analogWrite(pin, motorSpeed) active la broche en PWM pour moduler la vitesse. Les moteurs fonctionnent entre 3 et 6V ; avec une source 5V, le PWM permet de varier la tension moyenne entre 3 et 5V.
Fichier : WiDC.ino
Étape 8 : Interface de contrôle web
Une interface HTML a été conçue. Téléchargez interface.rar, extrayez les fichiers dans un dossier, ouvrez index.html dans Firefox. Un formulaire permet d'entrer l'adresse IP du module ESP et celle du serveur vidéo/audio (application IP Webcam sur Android). Un bouton « Test » fait tourner le robot jusqu'à une autre commande. Les flèches du clavier pilotent le robot.
Un smartphone Android diffuse la vidéo/audio via l'application IP Webcam (Google Play).
Structure HTML
Deux zones :
- Vidéo/Audio : formulaire avec champ IP (défaut 192.168.0.5) et bouton « Load ». Vidéo et audio chargés dans des balises
<object>. - Commandes : formulaire pour l'IP de l'ESP8266, image clavier, instruction « Maintenez les flèches pour déplacer le robot ».
JavaScript
La fonction readUrlAV() lit l'IP du formulaire et met à jour les objets vidéo/audio.
Un écouteur clavier (onkeydown) détecte les flèches (haut=38, bas=40, gauche=37, droite=39) et envoie la commande correspondante (cm1 à cm4) via requête HTTP GET ($.get()) vers l'IP de l'Arduino. Un verrou (latch) évite les envois répétés.
Au relâchement (onkeyup), doNothing() envoie cm5 (arrêt) et réinitialise le verrou.
Fichier : interface.rar
Étape 9 : Utilisation
Au redémarrage, l'Arduino se connecte automatiquement au Wi‑Fi. Utilisez le moniteur série pour vérifier la connexion et obtenir l'IP assignée à l'ESP8266. Ouvrez le fichier HTML dans Firefox, saisissez cette IP. Débranchez l'Arduino de l'ordinateur, branchez la power bank. Attendez la reconnexion. Lancez IP Webcam sur le smartphone fixé au robot. Saisissez l'IP vidéo/audio dans l'interface de contrôle, connectez-vous au serveur. Réduisez la résolution vidéo dans l'application pour diminuer la latence. Maintenez les flèches du clavier pour piloter le robot et explorez !
Note : Le robot fonctionne en boucle ouverte. Difficile de le faire avancer parfaitement droit (différences moteurs, alignement… causent des dérives cumulatives). Parfois l'ESP8266 perd des messages ; si un cm5 est perdu, le robot continue de bouger après relâchement des touches. N'hésitez pas à modifier la logique de commande pour éviter ce problème.
Code source
- Code Arduino (
WiDC.ino) - Interface web (
interface.rar)
Pièces personnalisées et boîtiers
base_7JLgOpcox6.svg
Schémas
Voir fichiers fournis dans l'étape 6.
Processus de fabrication
- Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
- Créez un robot suiveur de ligne autonome avec Arduino UNO
- Robot commandé par la voix avec Arduino Nano et Bluetooth
- MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android
- Pixel Chaser : Jeu LED interactif à une touche avec Arduino Nano
- Lévitation magnétique répulsive avec Arduino : circuit simple et guide DIY
- PiBot : Robot pianiste Arduino pour performance musicale de précision