Bonjour Ă tous,
En attendant le retour des beaux jours pour terminer mon projet d’abri motorisé pour l’astro photo, je m’attelle en parallèle au développement d’un tiroir motorisé pour projecteur vidéo UST, pilotable par API avec l’IPX800 V5 de la maison (la finalité sera un scénario « Pop Corn »
avec pilotage du plafond « ciel étoilé » en fibres optiques, éclairage par spots, …) avec commande par X-Display V2.
Tiroir Motorisé Intelligent : Architecture Multi-Tâches FreeRTOS + HMI Tactile Complète
Ce projet implémente un système de commande de tiroir motorisé entièrement automatisé basé sur deux ESP32-S3 N8R16 qui communiquent via ESP NOW, combinant un moteur pas à pas (NEMA 17) piloté sur UART half‑duplex par un driver TMC2209, une interface utilisateur tactile 3,5" haute résolution et une gestion thermique avancée via trois capteurs DS18B20. Le système assure une motorisation précise du tiroir (450 mm de course) avec détection de fins de course, mesure de courant temps réel via INA260, et ventilation PWM intelligente régulée par température.
Architecture multi-tâches FreeRTOS : Son architecture repose sur FreeRTOS, exploitant les deux cores de chaque ESP32-S3 pour une parallélisation maximale.
- La tâche MotorControl (Core 0, priorité 3) exécute le contrôle moteur et la génération des impulsions pas à pas sans interruption ; la tâche Sensor (Core 1, priorité 2) acquiert continuellement les données thermiques et de courant et les envoit par ESP NOW 10 fois par secondes à l’IHM
- L’autre ESP32 S3 (HM) s’occupe de la communication ESP NOW et des événements sur son Core 1 (priorité 1) alors que l’interface LVGL est pilotée par le Core 0.
Cette séparation garantit que l’acquisition sensorielle n’est jamais bloquée par les mouvements moteur, les mouvements ne perturbent pas l’UI, et la HMI reste réactive lors de cycles longs.
J’ai voulu ce projet avec une sécurité approchant ISO 13849 et ISO 13854 afin de minimiser les risques électriques et mécaniques (surchauffe, pincement, …) pour préserver les doigts des chérubins mais aussi pour veiller sur du matériel assez couteux.
Interface HMI avancée sur le thème Dark Cyber pour plus de modernisme, bâtie sur un Waveshare ESP32-S3-LCD-TOUCH-3.5" : Construite avec LVGL + LovyanGFX, l’HMI tactile offre 5 écrans principaux : un tableau de bord affichant en temps réel l’état du système, position, températures (driver/moteur/ambiant), courant RMS/Peak, et tension, vitesse de rotation des ventilateurs PWM ; un écran de configuration des 16 paramètres moteur (Lead, RPM, distance, courant, microsteps, mode TMC StealthChop/SpreadCycle, délais, debounce) avec validation des seuils ; un écran de statistiques et diagnostiques (nombre d’ouvertures/fermetures, temps d’opération, distance totale, maxima thermiques/courant) ; un écran de WiFi avec pairing et mode d’apprentissage du tiroir (calibration distance/temps) ; un écran d’aide interactive documentant les API REST/JSON intégrées (GET /api/status, /api/config, /api/logs, POST /api/control, /api/command). Les polices Montserrat et NotoSans assurent une lisibilité optimale, avec rétroéclairage PWM ajustable et historique complet des défauts en PSRAM pour plus de réactivité.
Un mini gestionnaire sur page web (endpoint /Scan_probes) permet d’installer les sondes DS18B20 à la volée et leur affecter un rôle (ambiant, moteur, Driver). Cela permet une lecture fiable des températures à partir d’un rôle et non à partir d’un index. C’est simple, fiable, et ça évite toute confusion si l’ordre de détection des capteurs change. Les sondes pourront être branchées en étoile sur le bus, peu importe l’ordre de détection.
Intégration IPX800 v5 : Cette architecture permet des mises à jour temps réel (états, telémétrie) sans latence via l’API HTTP/JSON assurant une automation domotique fluide du tiroir motorisé dans l’écosystème GCE.
Voici les prototypes HTML de l’IHM
Ui LVGL en cours de développement (j’ai encore du taff
) :, ux ok
Comme vous pouvez le constater, ce projet atteint un degré de complexité assez élevé, notamment en ce qui concerne l’intégration logicielle avec un Backend avancé. Ce n’est pas un montage “plug‑and‑play”, et il ne sera malheureusement pas à la portée de tout le monde. Le code C++ est particulièrement conséquent — environ 10 000 lignes réparties sur les deux ESP32 — ce qui le rend difficile à partager ici, d’autant plus que je ne pourrai pas en assurer le support. Je préfère donc ne pas le publier pour le moment. Plus tard, lorsque l’ensemble sera finalisé, testé et validé, je le mettrai peut‑être à disposition tel quel, sans garantie et sans support.
Mais si ce projet peut donner des idées, inspirer d’autres réalisations, servir de base à ceux qui souhaitent se lancer dans quelque chose de similaire, ou simplement démontrer que l’interopérabilité avec une IPX800 n’a pratiquement aucune limite, ce sera déjà une belle victoire.
Merci à @gce pour ce bel automate qu’est l’IPX800.














