RoboTank — Robot de surveillance et de mesure WiFi
Un robot mobile connecté, conçu et réalisé de A à Z : navigation autonome ou télécommandée en Zigbee, détection d'obstacles, capture d'images et cartographie de la couverture WiFi sous forme de heatmap. De l'analyse fonctionnelle à la démonstration physique.
Contexte et objectifs
La SAÉ6.IOM.01 est le projet intégrateur de fin de BUT R&T parcours IOM : elle mobilise l'ensemble des compétences de la formation — systèmes embarqués, réseaux sans fil, programmation, électronique et gestion de projet.
Le sujet n°10, « Robot de surveillance et de mesure », impose la réalisation d'un système autonome capable de naviguer dans un environnement intérieur, de détecter des obstacles, de capturer des images et de produire une cartographie de la qualité du signal WiFi.
Fonctionnalités réalisées :
- Navigation — mode autonome (exploration) et mode télécommandé via manette Zigbee
- Détection d'obstacles — capteur ultrason HC-SR04, arrêt automatique à 20 cm
- Vision — caméra PiCamera IR 1080p, capture horodatée sur événement
- Mesure WiFi — RSSI mesuré en continu, stocké en CSV/JSON
- Cartographie — heatmap exportable (PNG) par dead reckoning
- Feedback — écran OLED I2C + LEDs d'état
- Interface web — tableau de bord Flask accessible en WiFi
Contraintes imposées
Usage indoor · tension max 12 V · autonomie minimale de 20 minutes · matériel prioritairement issu du stock IUT · solution présentable, proche d'un produit commercialisable.
Architecture matérielle
Une architecture hybride : le Raspberry Pi 4 assure l'intelligence (serveur, caméra, cartographie), le module XIAO ESP32-C6 gère la liaison radio Zigbee avec la manette.
Raspberry Pi 4
Serveur Flask, caméra CSI, GPIO moteurs, mesure RSSI WiFi
2 × XIAO ESP32-C6
Liaison Zigbee 802.15.4 : coordinator (manette) + end device (robot)
HC-SR04
Détection d'obstacles par ultrasons, arrêt automatique
PiCamera IR 1080p
Streaming MJPEG et capture horodatée sur événement
Steppers 28BYJ-48
Motorisation pas à pas, base du dead reckoning
Powerbank USB 5 V
Alimentation stable, autonomie théorique de 39 minutes
Une évolution assumée : de l'Esplora/Bluetooth au Zigbee
La télécommande initiale reposait sur une Arduino Esplora et un module Bluetooth HC-05. Les limites rencontrées (portée, fiabilité de l'appairage) m'ont conduit à faire évoluer l'architecture vers une liaison Zigbee 802.15.4 entre deux XIAO ESP32-C6 : latence plus faible, portée suffisante et consommation réduite. Savoir remettre en cause un choix technique en cours de projet a été l'un des apprentissages majeurs.
Conception mécanique & impression 3D
Le châssis et l'ensemble des supports ont été entièrement modélisés en CAO (Shapr3D) puis imprimés en 3D : une solution originale, légère et modulable.
Architecture logicielle & interface web
Un serveur Flask multi-threadé sur le Raspberry Pi expose une API REST et un tableau de bord web complet, accessible depuis n'importe quel navigateur du réseau.
Côté serveur (Python) :
- Serveur Flask multi-threadé : moteurs, capteurs, caméra et scan WiFi tournent en parallèle sans se bloquer
- API REST : commande des moteurs, état du robot, scan RSSI, génération de la carte
- Dead reckoning : estimation de la position par comptage des pas moteurs, pour associer chaque mesure RSSI à une position
- Heatmap WiFi : rendu de la cartographie sur canvas HTML5 et export PNG
- Streaming vidéo MJPEG de la caméra IR
Côté interface web : 4 modes de contrôle — joystick virtuel, D-PAD, mode autonome et mode scan WiFi — avec retour vidéo en direct et panneau d'état (RSSI, distance obstacle, mode actif).
Côté radio : protocole de commande maison sur Zigbee entre la manette (coordinator) et le robot (end device), programmé en C++ sur les deux ESP32-C6.
Exigences & validation
Chaque exigence du cahier des charges a été formulée de manière testable, avec un critère d'acceptation mesurable — puis validée lors du plan de tests.
| ID | Exigence | Critère d'acceptation | Priorité |
|---|---|---|---|
| EX-01 | Autonomie ≥ 20 min | Chronométrage ≥ 20 min (39 min théoriques atteintes) | MUST |
| EX-02 | Pilotage manuel via manette Zigbee | Téléopération 5 min sans coupure | MUST |
| EX-03 | Évitement d'obstacle à 20 cm | 0 collision sur 10 essais | MUST |
| EX-04 | RSSI mesuré toutes les 2 s | API /api/scan/status ≤ 2 s | SHOULD |
| EX-05 | Stockage hors-ligne si perte WiFi | Logs CSV/JSON présents hors connexion | MUST |
| EX-06 | Heatmap rendue en HTML5 canvas | API /api/map + visualisation web | SHOULD |
| EX-07 | Photo horodatée sur événement | Image avec timestamp | SHOULD |
| EX-08 | Arrêt d'urgence logiciel | STOP immédiat | MUST |
Le plan de tests complet, l'analyse des risques et la notice d'utilisation figurent dans le rapport technique.
Bilan et analyse réflexive
Compétences mobilisées :
- Systèmes embarqués — Raspberry Pi OS, Python, GPIO, I2C, CSI, threads
- Réseaux sans fil — WiFi, Zigbee 802.15.4, RSSI, cartographie de couverture
- Programmation — Python (Flask, Picamera2, threading), HTML5/CSS3/JS, C++
- Électronique — câblage, bilan de puissance, PCB Fritzing
- Conception mécanique — CAO Shapr3D, impression 3D FDM
- Gestion de projet — planification, BOM, devis, documentation, rapport
Points forts du résultat : architecture logicielle robuste, interface web complète, châssis 100 % imprimé 3D, communication Zigbee fiable, autonomie de 39 minutes (presque le double du minimum requis), et une documentation exhaustive : CAO, BOM, schémas, cahier des charges, rapport.
Analyse réflexive
La principale difficulté a été l'intégration de la chaîne complète : faire coopérer simultanément le Zigbee, le Raspberry Pi, les moteurs pas à pas, la caméra IR et l'interface web sans instabilité. J'ai commis des erreurs — sous-estimer la fiabilité du Bluetooth initial, par exemple — mais chacune a débouché sur une solution mieux pensée. Si je devais refaire ce projet, j'intégrerais des encodeurs dès le départ pour fiabiliser l'odométrie plutôt que de compter uniquement sur le dead reckoning.
Perspectives d'évolution
Court terme : heatmap temps réel, mode waypoints, export CSV depuis l'interface. Moyen terme : encodeurs magnétiques (AS5600) et centrale inertielle (BNO055) pour une odométrie fusionnée. Long terme : LiDAR 2D et SLAM sous ROS2 pour une cartographie précise à 360°.
Traces & preuves
Photographies du robot réalisé et documents produits au cours du projet.