SkyBot
Robot piloté en Wi-Fi avec caméra, détection d’obstacles et interface web embarquée
Ce dépôt contient SkyBot, un projet robotique basé sur ESP32 permettant de piloter un robot à distance via une interface web locale.
Le système regroupe :
- un serveur web embarqué hébergé sur l’ESP32
- une interface de pilotage accessible depuis un navigateur
- une caméra ESP-EYE pour le retour vidéo
- deux capteurs ultrasoniques HC-SR04 pour mesurer les distances
- deux anneaux NeoPixel pour visualiser la proximité d’obstacles
- une communication Serial2 entre l’ESP32 et l’Arduino pour les commandes moteurs
L’objectif est de proposer une solution de pilotage temps réel, simple à utiliser, avec un retour visuel clair sur l’environnement du robot.
Fonctionnalités
Pilotage du robot
- déplacement avant / arrière
- rotation gauche / droite
- gestion de la vitesse
- bouton arrêt d’urgence
- commandes envoyées sans rechargement de la page
Interface web embarquée
- page servie directement depuis l’ESP32
- design responsive
- boutons de contrôle rapides
- mise à jour automatique de l’état des capteurs
Caméra embarquée
- affichage d’un flux MJPEG
- retour vidéo en direct depuis une ESP-EYE
- accès direct à l’interface caméra et au stream
Détection d’obstacles
- lecture de 2 capteurs ultrasoniques
- mesure de la distance à gauche et à droite
- seuil d’alerte pour détecter un obstacle proche
- API
/obstacle retournant les distances en JSON
Retour visuel NeoPixel
- un anneau pour le côté gauche
- un anneau pour le côté droit
- plus l’obstacle est proche, plus l’affichage est intense
- dégradé de couleur vert → jaune → rouge
Architecture du projet
Partie ESP32
L’ESP32 gère :
- la connexion au réseau Wi-Fi
- le serveur web embarqué
- le système de fichiers LittleFS
- la lecture des capteurs ultrasoniques
- le pilotage des anneaux NeoPixel
- l’exposition des routes HTTP de commande
- l’envoi des ordres à l’Arduino via Serial2
Partie Arduino / moteurs
L’Arduino reçoit des commandes série envoyées par l’ESP32 pour gérer le déplacement du robot.
Exemples de commandes transmises :
z → avancer
s → reculer
q → gauche
d → droite
r → plus vite
f → moins vite
x → arrêter
Partie interface web
L’interface utilisateur est stockée dans data/index.html puis servie par l’ESP32.
Elle permet :
- d’envoyer les commandes de déplacement
- d’afficher le flux caméra
- de consulter les distances mesurées
- de visualiser le danger via une jauge dynamique
Stack utilisée
Firmware
- C++
- Arduino framework
- PlatformIO
Interface
- HTML
- CSS
- JavaScript vanilla
Bibliothèques utilisées
- ESPAsyncWebServer
- AsyncTCP
- Adafruit NeoPixel
- PubSubClient
Matériel
- ESP32 DevKit V1
- Arduino
- 2 capteurs HC-SR04
- 2 anneaux NeoPixel
- caméra ESP-EYE
- système moteur du robot
Structure du projet
```bash
PROJET-SKYBOT-BS2CIEL-main/
├── data/
│ ├── index.html
│ └── w3.css
├── include/
├── lib/
├── src/
│ └── main.cpp
├── test/
└── platformio.ini