Dans ma cuisine, au dessus de l’évier, j’ai rajouté deux lampes basses consommation. Cependant cette solution est loin d’être idéale : il est facile d’oublier d’éteindre ces lumières, l’éclairage est soit éteint, soit à fond (éblouissant en pleine nuit), et je préfère éviter d’avoir du 220V au dessus de l’évier. Je pourrais couvrir avec de l’acrylique, mais ces lampes chauffent, et il faut pouvoir y accéder pour les changer. Pour résoudre ces problèmes, je vous propose de me suivre pour la réalisation d’une rampe à LED intelligente, économique, basée sur du code libre, programmable et extensible.
Le principe général de la rampe à LED intelligente
Pour notre rampe à LED intelligente, nous souhaitons tout d’abord avoir un allumage et une extinction progressifs. On veut également pouvoir utiliser un capteur de présence pour pouvoir allumer et éteindre automatiquement l’éclairage. Enfin on doit pouvoir passer du mode automatique au mode manuel à tout moment, et ainsi allumer/éteindre à tout moment.
Pour ce faire, nous utiliserons un micro-contrôleur qui surveillera l’état d’un capteur PIR (J’ai écrit un article sur le sujet ici : Capteur PIR et Arduino : Tutoriel ). Ce dernier détectera la présence d’humains dans son champ de “vision”. En fonction de ce qui est détecté ou non, le contrôleur allume ou éteint l’éclairage.
L’autre mode d’interaction avec le système est un bouton poussoir, qui permet via une pression courte d’allumer ou d’éteindre le système. Une pression longue permet de passer du mode manuel au mode automatique (en mode manuel, la lumière reste dans l’état défini par l’utilisateur).
Allumage et extinction progressifs
Par allumage progressif, on entend le fait que l’on ne passe pas de complètement éteint à complètement allumé d’un coup. Au contraire, cela se fait de façon progressive pour laisser aux yeux le temps de s’habituer. En pratique, on passe par 255 niveaux de luminosité.
Pour l’allumage, le processus prend quelques secondes, alors que pour l’extinction, c’est plus long (environ 20s). L’idée est qu’on profite de l’allumage progressif sans avoir à attendre trop longtemps pour avoir la lumière. La valeur est réglable dans le code, j’ai déterminé de façon empirique la valeur qui me convenait.
Pour l’extinction c’est plus long, pour laisser le temps de quitter la pièce quand on éteint la lumière (encore une fois, c’est réglable, dans mon cas, 20s suffisent pour arriver à la prochaine porte sans se presser). L’extinction progressive permet de s’habituer à l’obscurité et d’avoir confirmation de la prise en compte de la commande..
Le hardware
Le micro-contrôleur : une carte Arduino Nano
Pour ce projet, on veut du open hardware et du logiciel libre. On s’appuie donc sur un micro-contrôleur Arduino Nano, compact, économique, open hardware. Il utilise une “toolchain” libre pour sa programmation. Les clones chinois du Arduino Nano se trouvent pour 2-3€ sur aliexpress et sont de bonne qualité (pour plus de détails sur ces clones du Arduino Nano, voyez mon article ici).
Commander des LEDs 12/24V depuis le Nano via un MOSFET : le IRF3708.
Nous contrôlons une bande de LEDs 12V, ce que ne peut faire d’office le Arduino Nano. En effet, ses sorties sont en 5V. Dans tous les cas, même avec des LEDs en 5V, le courant délivrable par les GPIO aurait été trop faible pour cette application.
Pour y remédier, nous allons contrôler un courant électrique élevé, à une tension différente en utilisant un transistor. Avec un transistor, on peut contrôler le passage du courant entre deux des trois pattes de celui ci en envoyant ou non du courant à la troisième.
Fonctionnement général d’un transistor
De façon schématique, c’est comme si nous avions un interrupteur contrôlé par une sortie numérique du Arduino. Ainsi, sii la sortie est à 0 (LOW), le courant ne passe pas; si la sortie est à 1 (HIGH) le courant passe. Et le courant commandé peut être en 12V, 24V, ou n’importe quelle tension supportée par le transistor. L’intensité électrique commutable dépend aussi du transistor.
Notre MOSFET: le IRF3708
Ici, nous utiliserons un MOSFET, le IRF3708, qui est un composant que j’utilise souvent. En effet, il peut être commandé par des signaux en 3.3V et 5V sans problème (d’autres transistors requièrent du 12V pour commuter le courant maximal), sa résistance interne est très faible, ce qui implique qu’il peut commuter des courants élevés sans radiateur. Je l’utilise en pratique pour commuter plusieurs ampères, en 12V, et il est reste à température ambiante.
Les tensions commutables sont aussi dans une large plage, puisqu’il peut accepter des tensions jusqu’à 30V, donc parfait pour des LEDs en 12 ou 24V.
Sa vitesse de commutation est élevée, on peut donc s’en servir en PWM (c’est ce que je fais pour mes aquariums, comme l’explique très bien le blog hackquarium ici ).
Un détecteur d’humains : le capteur PIR
Un tel système s’appuie fortement sur la qualité du capteur qui indique la présence ou non d’humains dans la pièce. Un capteur PIR mesure les différences de température détectées dans l’infrarouge, et renvoie un 0 ou un 1 selon l’absence ou la présence d’un humain dans le champ de détection.
Équipés d’une lentille Fresnel, ces capteurs ont un champ de 180° et peuvent donc, s’ils sont positionnés de façon adéquate, couvrir facilement une pièce.
La sortie est déjà traitée, et renverra un signal logique continu d’une durée ajustable, ce qui nous évitera d’avoir à faire du post-traitement pour éliminer le bruit. La sensibilité est également réglable, à l’aide d’un potentiomètre.
Comme dit plus haut, vous pourrez approfondir le sujet en consultant mon tutoriel sur les capteurs PIR et leur utilisation sur un Arduino.
L’interface utilisateur : un bouton poussoir avec LED intégrée.
On veut une rampe à LED intelligente pour une cuisine, donc ça doit être simple à utiliser, et intuitif. Pour cela, on utilise un unique bouton, de type anti-vandalisme, avec “angel eye“. Il s’agit de boutons en inox, waterproof, résistants aux chocs, et avec un anneau lumineux sur le bouton.
Mode manuel
Le principe est simple : si j’appuie brièvement, l’état de la lumière est inversé. On passe d’allumé à éteint, ou d’éteint à allumé. Ceci, c’est en mode manuel. L’utilisateur sait que le système est en mode manuel si l’anneau lumineux est allumé de façon continue.
Mode automatique
Si en revanche on fait un appui long (plus d’une seconde), on change le mode, et on passe de manuel à automatique, ou l’inverse. Une fois en mode automatique, la lumière s’allume automatiquement quand un humain est détecté, et s’éteint 120s après la dernière fois qu’un humain ait été détecté.
En mode automatique, l’utilisateur peut quand même forcer l’allumage ou l’extinction par un appui court. Cependant, une fois la procédure d’allumage/extinction terminée, le système tentera d’allumer ou d’éteindre la lumière selon son programme.
Indicateur du mode automatique
Dans ce mode, la luminosité de la LED varie de façon cyclique, avec un effet de type “fade in/fade out”, aussi appelé “breathe”.
Construction du système
Pour me simplifier la vie, j’utilise un circuit imprimé que j’ai conçu au départ pour la gestion de l’éclairage de mes aquariums. Il permet d’installer deux MOSFETs pour deux canaux indépendants. Il embarque un support pour le Arduino Nano et diverses prises pour ajouter des capteurs ou d’autres périphériques. On pourra rajouter par exemple des écrans I2C, un module RTC, etc…
En pratique, il s’agit donc de souder les composants sur la plaque, et ensuite d’installer le Arduino sur son support. On branche alors la bande de LEDs, l’alimentation externe 12V, le capteur PIR, le bouton poussoir et la LED de celui ci.
Dès lors, si l’on a téléversé le code source, il suffit de déployer le module pour s’en servir. Dans un billet ultérieur, je détaillerai la construction du même système sur une breadboard pour ceux qui voudraient reproduire la même chose chez eux sans le circuit imprimé (mais c’est plus simple avec 😉 )
Utilisation et conclusions
Le système est en fonction chez moi depuis quelques mois, et plait beaucoup aux invités. J’ai pu l’intégrer à mon meuble au dessus de l’évier, et la majeure partie du système est invisible. Les seuls éléments visibles sont le bouton (forcément) et le capteur infrarouge (je devrais percer un trou pour l’encastrer dans le meuble, mais j’ai un peu la flemme ^^).
En pratique, tout fonctionne bien, l’éclairage est supérieur à ce qu’on avait avec les deux lampes basse consommation, pour un système plus ergonomique, discret, et intelligent.
Sur la consommation électrique, justement : le système consomme moins que les deux lampes lorsqu’il est en fonction. En plus, avec l’extinction automatique on gagne encore davantage sur la consommation électrique. Lorsque les LEDs sont éteintes, le Arduino consomme très peu. C’est d’ailleurs négligeable par rapport à la consommation des LEDs. Avec environ 250mW, contre 15-30W pour les LEDs, 1h d’éclairage consomme autant que 60h-120h de veille.
En clair, je suis très satisfait du système. Je compte en mettre à d’autres endroits (par exemple sur la terrasse pour éclairer l’allée quand je rentre le soir).
Améliorations
Cela ne signifie pas que le système est parfait, en effet il est encore améliorable:
- une fonction jour-nuit serait intéressante. Le système passerait ainsi en mode automatique à la tombée de la nuit, et en mode manuel (par défaut éteint) la journée. Il faut toutefois faire en sorte que ça n’importune pas l’utilisateur. Pour cela, on peut installer le module RTC sur l’emplacement prévu, et modifier le programme;
- avec plusieurs systèmes, une commande à distance, centralisée serait souhaitable, mais pour cela il faudrait des capacités sans fil. Pour cet aspect, l’idée serait de remplacer le Arduino par un ESP8266 ou mieux un ESP32. Dès lors il serait possible de commander le tout depuis un smarphone en bluetooth (si ESP32). Ce serait également possible depuis n’importe quel ordinateur, tablette, téléphone connecté au wifi local (pour les deux ESP). C’est la prochaine version prévue, mais il faut que je fasse une carte;
- diverses petites améliorations du système actuel me sont venues à l’esprit. Cependant, la version réseau permettrait d’office d’apporter ces améliorations, donc je ne développerai pas davantage.
Dans un prochain billet, nous verrons plus en détail la partie logicielle du système.
[…] un précédent billet, nous avons décrit une rampe à LED intelligente utilisable dans la maison ou dehors. Aujourd’hui, nous nous pencherons sur la construction et […]
bonjour
merci pour ce post qui me sera tres utile prochainement pour developper
pour partage, je te soumets mon experience pro de la gestion des eclairages des salles de réunion a mon boulot. c’est ce qui se fait de mieux sur le marché en l’état des capacités des domotiques pro.
le matériel installé : pavé à led dimmable en faux plafond (1er circuit), spots led dimmable en faux plafond (2ème circuit), détecteurs de luminosité ambiante et de présence (intégrés proprement dans un boitier) en faux plafond, interrupteur deux modules : 1 module type inter deux positions (allumer/éteindre), 1 module type bouton poussoir deux positions (+/- positionné à chaque porte de la salle. Pour info le tout est en KNX et coute un bras à l’installation.
le mode de fonctionnement est le suivant :
– mode auto : détection de présence et de luminosité faible > allumage 100% des 2 circuits d’éclairage. Détection d’absence après tempo > extinction 100%
– mode manuel : appui sur ‘allumer’ du module inter > allumage 100% des 2 circuits d’éclairage. Appui sur ‘éteindre’ du module inter > extinction 100%. Appui sur ‘+’ module bp > variation luminosité 10%>100%. Appui sur ‘-‘ module bp > variation 100%>10%. Absence après tempo > extinction.
C’est très fonctionnel, simple, économique en énergie et intuitif. Le top. Suffit que qq’un montre une fois aux autres et ça roule. Au niveau intégration rien n’est visible et tout est propre : l’inter ressemble à un inter lambda, les capteurs sont intégrés enfaux plafond dans des boitiers encastrés, accessibles pour maintenance, on voit juste une plaque blanche diamétre standard avec 2 trous minuscules derriere lesquels sont les sondes de lumière (et de température car on gère aussi la clim mais c’est pas le sujet) + la lentille de fresnel qui dépasse légérement sous le faux plafond pour avoir son champ de vision complet.
Tout ça pour dire que tu as développé une amélioration à ce système car tu as intégré la variation de lumière à l’allumage et à l’extinction. Cependant, ce système est peut être plus complet et en même temps plus intuitif que le tien.
Je pense que si tu voulais améliorer ton système comme tu l’évoques, tu pourrais avantageusement t’inspirer de celui-ci, en particulier pour la cmde manuelle. Encore une fois, c’est le top de ce qui se fait fin 2017 dans les immeubles de bureau les plus performants du pays.
Ces systèmes s’amélioreront encore à l’avenir et je pense de la façon suivante :
– on n’aura plus qu’un seul bp standard qui assurera toutes les fonctions en un (appui bref = changement d’état ; appui prolongé = variation perpetuelle 100%>10%>100% (c’est l’utilisateur qui relache la pression qd la luminosité lui convient)
– on aura un allumage et une extinction graduels comme tu l’as fait (idée de génie)
Conclusion :
– sur le fonctionnel, on peut faire mieux que ce système je pense, chez soi et avec arduino en mettant un seul bp, et en programmant l’allumage/extinction que tu as développé
– sur le matériel il faudrait être capable de mieux intégrer les capteurs Arduino, parce que de mes recherches sur le net, personne n’a règlé ce gros problème. donc il faut soit acheter les boitiers vierges qui accueilleront les capteurs, soit les fabriquer avec une imprimante 3D. faut aussi avoir un faux plafond style plaque de BA13 avec de l’espace derrière sinon c’est mort. le souci c’est que des boitiers vierges j’en ai pas trouvé sur le net et qu’il faut alors les fabriquer avec une imprimante 3D (si tu as une piste je prends)
– sur le déploiement et le code, il faudrait développer une config générique unique qui s’adapterait
à toutes les pieces de la maison. Genre config sans sonde de lumière pour une pièce borgne ; ou encore config sans inter pour un escalier ; etc.
j en suis a commander le matos pour faire une maquette sur table et valider (ou pas) le concept d’une config générique.
je suis preneur de tout avis, experience sur le sujet.
k8r752
dw85x5
evgwuy
pt2iz2
ocdpre
cxl30t