Jauge analogique CO₂ avec moteur pas à pas et Tasmota
Nous avons développé un appareil pour surveiller les niveaux de CO₂, affiché sur une jauge à aiguille imitant les instruments automobiles ou aéronautiques. Il utilise le capteur SenseAir S8, le moteur pas à pas X27-168 avec driver VID6608, et le firmware Tasmota. L'appareil s'intègre aux systèmes domotiques et supporte une interface web pour la configuration et les mises à jour OTA. Tous les composants sont disponibles dans le monde entier, et l'assemblage ne nécessite aucune pièce rare.
Exigences de l'appareil : mesures précises de CO₂, température, humidité et pression ; indicateur analogique avec rétroéclairage ; options de style (aéronautique/rétro) et rétroéclairage (filament/RGB) ; utilisation par l'utilisateur final sans programmeur.
Sélection des composants et mécanique
Le moteur pas à pas X27-168 est standard pour les tableaux de bord automobiles (OPEL, VAZ-2110). La famille de moteurs inclut des variantes sans capteur zéro et des modèles à double aiguille. Le driver VID6608 implémente le micro-stepping (division 1/12, ~0,028° par pas), réduisant le bruit et améliorant la précision selon la fiche technique.
Les alternatives comme les servomoteurs ont été rejetées en raison du bruit, de la faible précision et de l'angle de rotation limité. Les voltmètres analogiques ne conviennent pas : petit angle (90°), fragilité, pièces exotiques. Les jauges prêtes à l'emploi d'AliExpress visent le street racing et sont inconfortables pour l'intégration.
Capteur CO₂ : SenseAir S8 (standard industriel). Capteurs climatiques supplémentaires (température, humidité, pression). Sans capteurs, l'appareil fonctionne sur des commandes domotiques.
Prototypage du driver :
- Testé initialement via H-Bridge : faible précision, bruit élevé.
- Avec VID6608 : mouvement fluide, dynamique naturelle de l'aiguille.
Intégration Tasmota
La bibliothèque SwitecX25 pour ESP32 a des bugs : débordement char (non signé sur ESP32), absence de timeouts selon la fiche technique VID6608. Une nouvelle bibliothèque basée sur SwitecX25 a été développée :
- Support uniquement pour les drivers de type VID6608 (contrôle direct inefficace).
- Courbes d'accélération configurables.
- Timeouts corrects et micro-stepping.
- Intégration directe dans Tasmota (sans sous-modules).
Tasmota a été choisi pour son support domotique intégré (MQTT, HTTP), son interface web et OTA. Ajout du support pour les moteurs pas à pas d'instruments.
Exemple de configuration Tasmota de base (via interface web) :
SwitecX25:
enable: true
driver: VID6608
steps: 28800 # Rotation complète
acceleration: 500
Boîtier et impression 3D
Boîtier basé sur des alarmes-montres donneuses. Pièces imprimées sur Ender-3 : échelles (aéronautique/rétro), aiguille, supports. Angle de rotation ~300° assure la lisibilité.
Options de configuration :
- Style : aéronautique (aspect métallique) / rétro (vintage).
- Rétroéclairage : aucun / filament (imitation incandescente) / RGB (bande adressable).
- Capteurs : CO₂ + climat / climat seulement / CO₂ seulement / sans capteurs.
Assemblage : PCB avec ESP32, driver, connecteurs. Disponibilité mondiale : moteurs ~2€, drivers ~1,5€, SenseAir S8 ~25€.
Fonctionnalités et calibration
L'affichage montre le CO₂ actuel (400-2000 ppm, échelle avec zones : normal/aérer/critique). Mises à jour toutes les 5-10 s avec lissage pour un mouvement fluide.
Algorithme de mouvement de l'aiguille :
- Calcul des pas :
target_pos = map(co2_ppm, 400, 2000, 0, max_steps). - Accélération/décélération via courbe en S pour une inertie réaliste.
- Micro-stepping minimise les vibrations.
Intégration : topics MQTT pour CO₂, température, humidité. Interface web : graphiques, calibration zéro, mode test.
Points clés
- Précision : SenseAir S8 ±50 ppm ±3% à 30°C, réponse <20 s.
- Compatibilité : Tasmota + Home Assistant/MQTT sans firmware supplémentaire.
- Reproductibilité : toutes les pièces sur DigiKey/AliExpress, Gerbers dans le repo.
- Licence : GNU GPLv3, code/3D/STL open source.
- Extensibilité : aiguille affiche n'importe quelle métrique via MQTT.
— Editorial Team
Aucun commentaire pour le moment.