Domotique – où comment gérer mes volets et ma chaudière…..

IMG_0378

La machine inutile n’était qu’un galop d’essai pour aborder l’arduino… pour  notre nouvelle maison, j’avais comme projet de gérer la future chaudière à granulés ainsi que l’ensemble des volets roulants (à commandes radios – cf photo)

– pour gérer la chaudière, un ou deux capteurs de température font l’affaire (un par étage, pour leur facilité d’utilisation et un nbr restreint de fils -2- j’ai opté pour des capteur DS18B20 sur bus Dallas Onewire). La commande de son coté est gérée par un simple relais. La chaudière à granulés ayant une inertie importante (mise en route sur 10minutes, temps de chauffe d’au moins 3/4 d’heure, extinction en 15 minutes), une régulation évoluée est inadaptée et pour tout dire, plutôt néfaste à ce type d’installation, donc pas de PID mais une simple régulation par hystérésis (ex: pour une consigne à 19°, déclenchement à 18.5° et arrêt à 19.5°)
– pour gérer les volets…rien de plus simple, en tout cas sur le papier ! Les télécommandes comprennent trois boutons poussoirs (monter-arret-descendre) donc 3 relais par télécommande, mais comme il y a 9 télécommandes….il faut 27 relais !!!!! Il est temps de IMG_0382penser à industrialiser les relais….le choix c’est donc porté sur deux cartes 16 relais pour microcontrôleur. Achat bien pratique sur Ebay, par contre le gros défaut est quelles fonctionnent en logique inversée. Il faut penser dès l’initialisation de l’arduino à placer toutes les sorties pilotant les cartes en HIGH, ce qui place les relais en OFF (un peu bête quand même)
Maintenant que la gestion de fond est faite, il est temps de penser à l’IHM…..est surtout d’éviter de poluer le salon (où se trouve la chaudière/poêle à granulés) avec des fils, des cartes, des alims et autre relais et LEDs. Un panneau de commande décorrélé de la partie « électronique » est la meilleure solution. Toujours dans un soucis de simplicité d’esthétique et d’utilisation, j’ai préféré me tourner vers un simple moniteur 10 pouces 16/9eme équipé d’un touchscreen resistif. Bon ok pour le touchscreen, le concept n’est pas trop compliqué, 4 fils à alimenter d’une certaine manière pour obtenir la valeur en X et d’une autre manière pour obtenir la valeur en Y en fonction de l’endroit où se situe la pression sur la dalle. Les convertisseurs analogique->numérique (ADC) des arduino’s savent très bien lire une valeur de tension en entrée (pont de résistance -> diviseur de tension généré par le touchscreen). Le problème est comment envoyer un signal sur le moniteur (qui accepte du composite, VGA ou HDMI). Là, oh miracle, d’autres ont déjà résolus le problème !!!! Il s’agit de la carte vidéo la plus basique du monde :  la Tellymate de chez Batsocks. Le concept est d’une simplicité déconcertante: on envoie sur un port série les textes à afficher (ainsi que leur emplacement sur une grille 38×25 caractères) et en sortie un signal vidéo composite est généré. Ce n’est pas très sexy, plutôt TTY, mais efficace (je pense néanmoins à faire évoluer la chose en utilisant un raspberry Pi en guise de carte video HDMI. l’article qui m’a mis la puce à l’oreille ).

Assez de blabla… un peu de photos

IMG_0377

– un arduino mega (bcp de ram de flash et surtout suffisamment d’entrées/sorties pour gérer les 32 relais)
– une horloge temps réel sur bus I2C de chez snootlab à  très faible dérive (10sec à 1minute max de décalage par an). Ce n’est pas le point fort des arduino, il faut donc en passer par là.

– un petit afficheur LCD 4×20 sur bus I2C, comme répéteur des infos vitales (puisque nous ne sommes pas dans la même pièce que le panneau de commande…).
– une carte vidéo tellymate
– 2 carte 16 relais
– 2 capteurs de température DS18B20

IMG_0380

le répéteur LCD

IMG_0381

un petit zoom, à droite l’horloge temps réel

Comme le programme est conséquent (un peu plus de 2700 lignes), il pèse 38ko compilé.
le code source sur mon espace GitHub: https://github.com/Chnalex/arduino/blob/master/domotique.ino

une petite vidéo de démo de l’IHM: