Skip to main content

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.

tip

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.