Firmware et PCB open source pour robot mobile différentiel basé sur ESP32-S3. Conçu pour la Coupe de France de Robotique (PAMI — Petit actionneur mobile independant).
- Firmware : ESP-IDF, FreeRTOS, contrôle différentiel, odométrie, navigation par waypoints
- Interface : API REST + WebSocket, GUI Python, éditeur de waypoints visuel
- PCB : KiCad 9, ESP32-S3-DevKitC, DRV8833, ICM-20948, VL53L0X, TCS34725, SSD1306
PAMI/
├── main/ # Firmware ESP-IDF (code source principal)
│ ├── app_main.c
│ ├── robot_config.h # Configuration centralisée (GPIO, PID, WiFi)
│ ├── motion/ # Contrôle mouvement (cmd_vel, waypoints)
│ ├── localization/ # Odométrie + fusion IMU
│ ├── drivers/ # Moteurs, encodeurs, capteurs
│ ├── sensors/ # IMU, ToF
│ ├── net/ # WiFi AP, HTTP server
│ ├── ws/ # WebSocket (logs, télémétrie)
│ ├── mission/ # Séquences de waypoints
│ ├── config/ # Configuration persistante (NVS)
│ └── ota/ # Mise à jour Over-The-Air
├── components/ # Composants ESP-IDF
│ └── icm20948/ # Driver ICM-20948 (IMU 9 axes)
├── hardware/
│ └── PCB_Pami_V2/ # PCB KiCad 9 (auto-suffisant)
│ ├── PCB_Pami.kicad_pcb
│ ├── PCB_Pami.kicad_sch
│ ├── footprints/ # Empreintes non-standard incluses
│ └── symbols/ # Symboles non-standard inclus
├── tools/ # Outils Python
│ ├── robot_gui.py # GUI de contrôle et mission planner
│ ├── robot_client.py # Client REST/WebSocket
│ ├── waypoint_editor.py # Éditeur de trajectoires
│ └── requirements.txt
├── docs/ # Documentation
│ ├── GUIDE_ROBOT.md # Guide complet de mise en route
│ ├── CLIENT_PYTHON_README.md
│ └── table.png # Carte de la table de jeu
├── .devcontainer/ # Dev container ESP-IDF (Docker)
├── CMakeLists.txt # Projet ESP-IDF
└── sdkconfig.defaults # Configuration flash/mémoire
La conception mécanique 3D est disponible sur OnShape : OnShape
# Prérequis : ESP-IDF v5.x installé (ou utiliser le devcontainer)
idf.py build
idf.py -p /dev/ttyUSB0 flash monitorConfiguration dans main/robot_config.h :
#define WIFI_SSID "Robot-ESP32"
#define WIFI_PASS "robot123"
#define WHEEL_DIAMETER_CM 6.43
#define WHEEL_BASE_CM 13.34cd tools
pip install -r requirements.txt
python robot_gui.py # GUI complet
python waypoint_editor.py # Éditeur de missionsDocumentation complète : docs/GUIDE_ROBOT.md
Le dossier hardware/PCB_Pami_V2/ est auto-suffisant : toutes les empreintes et symboles non-standard sont inclus. Ouvrir directement PCB_Pami.kicad_pro dans KiCad 9.
| Composant | Rôle |
|---|---|
| ESP32-S3-DevKitC | Microcontrôleur principal (dual-core, WiFi) |
| DRV8833 | Driver moteurs DC (2 canaux) |
| ICM-20948 | IMU 9 axes (gyro + accéléro + magnéto) |
| VL53L0X | Capteur distance ToF (détection obstacles) |
| TCS34725 | Capteur couleur (détection ligne/zone) |
| SSD1306 | Afficheur OLED 128x64 |
| MP1584EN | Convertisseur DC-DC 5V → 3.3V |
| SG90 | Servomoteur (mécanisme de jeu) |
| Signal | GPIO |
|---|---|
| MOTOR_LEFT_IN1 | 2 |
| MOTOR_LEFT_IN2 | 1 |
| MOTOR_RIGHT_IN3 | 9 |
| MOTOR_RIGHT_IN4 | 8 |
| ENCODER_LEFT_A/B | 11/10 |
| ENCODER_RIGHT_A/B | 13/12 |
| I2C SDA/SCL | 7/6 |
Base URL : http://192.168.4.1/api/v1
| Endpoint | Méthode | Description |
|---|---|---|
/cmd_vel |
POST | Commande vitesse {v, w, timeout_ms} |
/motion/stop |
POST | Arrêt immédiat |
/pose |
GET | Pose courante {x, y, theta} |
/pose/reset |
POST | Réinitialise la pose |
/imu/calibrate |
POST | Calibration gyroscope |
/ota/update |
POST | Mise à jour firmware OTA |
/ws/telemetry |
WS | Télémétrie temps réel (stub, non implémenté) |
/ws/logs |
WS | Logs temps réel (stub, non implémenté) |
Un environnement de développement Docker est disponible dans .devcontainer/ avec ESP-IDF pré-installé. Compatible VS Code (extension Dev Containers).
Ce projet est distribué sous licence GNU GPL v3 — les modifications et améliorations doivent rester open source.
Voir LICENSE pour les détails.


