Architecture du Firmware
Ce firmware pilote une manchette haptique à base d’ESP32, assurant la connexion WiFi, l’échange de données via MQTT, la gestion des moteurs haptiques (DRV2605 via multiplexeur I2C) et la configuration de patterns stockés en mémoire. Il est développé avec PlatformIO, et les fichiers sources se répartissent comme suit :
.
├── include
│ └── README
├── platformio.ini
├── README.md
├── src
│ ├── I2C
│ │ ├── i2c.cpp
│ │ └── i2c.h
│ ├── main.cpp
│ ├── Mqtt
│ │ ├── Mqtt.cpp
│ │ └── Mqtt.h
│ ├── README.md
│ ├── Sequences
│ │ ├── Sequences.cpp
│ │ └── Sequences.h
│ └── Wifi
│ ├── wifi.cpp
│ └── wifi.h
└── test
└── README
main.cpp
Le point d’entrée du programme regroupe les objets principaux :
- Wifi pour la connexion réseau,
- Mqtt pour la communication MQTT,
- I2c pour la détection et la commande des moteurs DRV2605,
- Sequences pour charger et manipuler les schémas de vibration.
Dans la fonction setup()
, l’ESP32 initialise ses ressources (série, capteur de température, WiFi, MQTT, I2C) et charge les séquences enregistrées. La fonction loop()
vérifie ensuite périodiquement la connexion WiFi et MQTT, relance l’I2C si nécessaire et écoute les messages entrants.
Module Wifi
Les fichiers wifi.cpp
et wifi.h
gèrent la configuration WiFi (scan des réseaux, connexion au SSID avec mot de passe, vérification du signal et état de la liaison).
Module Mqtt
Les fichiers Mqtt.cpp
et Mqtt.h
implémentent la logique MQTT (connexion au broker, abonnement aux topics, réception et publication de messages).
Les trois topics clés sont :
.../config/
pour ajouter ou modifier des patterns en mémoire,.../pattern/
pour exécuter un pattern,.../request_patterns/
pour renvoyer la liste des patterns enregistrés.
Module I2C
Les fichiers i2c.cpp
et i2c.h
assurent l’initialisation du multiplexeur TCA9548A, la détection des DRV2605 et l’exécution des séquences de vibrations. Chaque triplet [moteur, effet, délai]
est appliqué moteur par moteur, avec un réglage de l’effet haptique avant la mise en vibration.
Module Sequences
Les fichiers Sequences.cpp
et Sequences.h
définissent la structure Sequence
(répétitions, délai, tableau d’effets) et assurent la sauvegarde/lecture depuis la NVS (Non-Volatile Storage). Les patterns sont récupérés ou modifiés via un JSON transmis par MQTT sur /config/
, puis exécutés dès qu’un nom de pattern est reçu sur /pattern/
.
Cycle de fonctionnement
Au démarrage, l’ESP32 se connecte au WiFi et au broker, charge les patterns stockés, puis attend les commandes entrantes. Lorsqu’un message arrive sur le topic /config/
, un pattern est ajouté ou mis à jour en mémoire ; sur /pattern/
, le firmware recherche et lance la séquence correspondante. Une requête sur /request_patterns/
renvoie la liste de tous les patterns disponibles.
N’oubliez pas de mettre à jour les identifiants WiFi (ssid
, password
) et le broker MQTT (mqtt_broker
, mqtt_port
) en fonction de votre réseau.