📽 Tiroir motorisé pour Vidéoprojecteur UST, API pour ipx800 V5

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 Â» :popcorn: 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 :sweat_smile: ) :, 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.

5 « J'aime »

Bonjour @fgtoul ,

Super projet… cela fait plus d’un an et demi que je repousse la motorisation de mon tiroir qui accueille un UST Formovie Theater, dans un un meuble que j’ai fabriqué.

Ayant d’autres projets à terminer, j’ai repoussé celui-là en dernier (je termine ma maison d’abord :slightly_smiling_face:).

Je me suis un peu « fourvoyé » sur la taille du tiroir qui me laisse que 2 cm d’espace de chaque côté et m’oblige à élever le plateau du projecteur parce que je ne voulais de meuble hyper profond avec l’écran ust intégré. Par contre j’ai besoin d’une distance différente de sortie. Mais ça je pense que c’est ajustable à discrétion connaissant la qualité du travail de @fgtoul.

J’ai donc un projet un peu plus complexe puisqu’il ajoute l’élévation du plateau du projecteur après que le tiroir soit d’une certaine distance.

Nous, les utilisateurs de GCE, avons énormément de chance de faire partie d’une communauté avec @fgtoul comme meneur, nous faisant part de ses projets perso mais qui nous concernent tous, @grocrabe aussi très actif et de très bon conseils, et tous les autres qui nous aident à devenir meilleurs…

Bonne journée à tous

2 « J'aime »

Aujourd’hui le meuble sur mesure n’est pas encore fabriqué, mais j’ai opté pour une partie du plateau supérieur du meuble qui s’escamote automatiquement lorsque le tiroir s’ouvre. La façade du tiroir emmène une autre partie du plan supérieur avec elle :slight_smile:
Beaucoup plus facile à mettre en œuvre qu’une élévation du plateau avec 10kg de matériel dessus.

la mécanique permet une translation de 450mm maxi (le meuble fera 500mm de profondeur), mais pour un écran de 110-120’’ je n’ai pas besoin de l’ouvrir à fond.
Le tiroir fera 80cm de largeur pour permettre une bonne ventilation.

Avant de mettre un Nema17 (ce qui complexifie grandement le système), mon prototype de tiroir avait un simple motoréducteur DC à couple élevé qui se mettait en route dès l’allumage du projecteur. La course était réglée par des FDC sur rails T.
Mais j’ai trouvé ce mécanisme peu précis et beaucoup trop bruyant (engrenages), d’où le moteur pas à pas.
Le positionnement est à quelques microns (µm) près et se fait en silence ! :rofl:
De plus, l’ESP32 permet un pilotage par API et une IHM sur écran tactile à la place d’un bandeau avec boutons.
J’ai encore beaucoup de taff concernant le pilotage du Nema et les sécurités (notamment thermique avec le refroidissement du proj avant fermeture du tiroir, …) , mais l’intégration dans le meuble sera plus facile (alimentation 12v moins volumineuse, …).


Schéma provisoire : non testé et susceptible d’évoluer.

J’ai fabriqué ce meuble qui fait 500mm de profondeur avec le FloorRising intégré de 120 pouces. Je ne voulais pas de ces meubles mastocs qui font plus de 600 mm de profondeur. Leur seul avantage réside dans le fait de ranger l’ust dans un tiroir dont seul le plateau supérieur est rétractable. Et j’aime bien que tout soit nickel et rangé, protégé … des petits enfants surtout :smiley:

J’ai, comme vous, acheté le matériel : vis sans fin, moteur 12 Vdc et courroie crantée, pour éviter les bruits d’engrenage. Mais je vais faire comme vous, utiliser des NMEA, beaucoup plus précis et avec un couple plus élevé aussi.

Par contre je planche encore sur la cinétique du plateau élévateur (certainement avec bras de levier et câbles) car le tiroir doit être sorti d’au moins 10 cm pour qu’il commence à s’élever. Et je n’ai pas la place de positionner des petits vérins électriques ou hydrauliques (mais là ça devient une usine à gaz​:rofl:).

Mais j’aimerais que ça reste aussi automatisé avec l’allumage du projecteur même si la maîtrise totale par ihm reste indispensable

cinétique ou cinématique?

1 « J'aime »

L’IHM est surtout nécessaire pour la configuration (distance à parcourir, vitesse des mouvements, limite de courant et tension du driver, seuils de température pour la ventilation, …)
Pour le fun j’ai fait le choix d’une IHM (utilisation et configuration) sur dalle tactile en plus des automatismes et de l’API, mais on peut se contenter de l’API ou d’une page web sur serveur Web embarqué et supprimer le second ESP32.

Exemple avec ma page embarquée permettant la config mécanique et électrique :

Bonjour @2hash ,

Cinétique (ensemble des mouvements de divers éléments permettant de se déplacer d’une position À à une position B… kinêtikos en grec)

c’est le motoréducteur lui-même qui est bruyant (même s’il est monté sur silent-blocks) vu que le réducteur de vitesse est une boite à engrenages multi-étage, .

Bonjour,
voici un mouvement guidé avec effet lift par un seul moteur, l’élévation étant assurée par un guide et des roulements.

Pull up shelf 2

avec une vis Trapézoïdale, un moteur de 2N.m devrait être assez coupleux pour un proj de 10kg.

1 « J'aime »

Bonsoir @fgtoul ,

Merci beaucoup pour ce lien et cet avis qui me seront très précieux. Je pensais à quelque chose de ce type sans le concrétiser réellement. Super…

Bonne soirée