Piloter un chauffage avec Arduino et NRF24L01

J’avais déjà construit un petit montage autour d’un Nano, une matrice de LED 8×8, une horloge temps réel (RTC) et un capteur de température DHT22.

C’était sympa, j’avais l’heure et la température, et du coup je pouvais mettre en marche ou arrêter mon radiateur à la main, et ne pas oublier de le couper la nuit. Du coup je me suis dit que ce serait bien que mon montage le fasse à ma place, une charge mentale en moins 😉

Après un peu d’expérimentation avec succès sur des cartes à base de NRF24L01 je me lance dans le projet. L’idée est donc que le module à l’autre bout de la pièce déclenche et arrête le chauffage pour le garder dans une plage « confort » autour de 20 degrés.

J’avais pensé au départ à utiliser un relais directement sur le fil d’alimentation, même si j’avais moyennement confiance dans la gestion d’un 230V de puissance. Et finalement je découvre que mon radiateur est équipé comme la plupart des modèles récents d’un fil pilote.

Le fil pilote permet de basculer entre plusieurs modes de fonctionnement en modifiant « simplement » le signal comme suit :

Pour mon besoin (j’ai une chauffage de base par le sol, le radiateur n’est qu’un appoint) je retiens « pas de signal » pour mettre en marche et « demi-alternance positive » pour l’arrêt.

Pour le premier pas de problème, suffit de couper (contact ouvert), pour le deuxième tout étudiant en électronique basique pensera immédiatement : diode. Et si on a besoin d’une seule demi-alternance une simple diode en série suffit. Bref plutôt que jouer sur l’alimentation j’utilise simplement le relais pour alimenter le fil pilote, off avec contact fermé au repos qui file du 230V via une diode, et on avec ouverture du contact.

Pour alimenter le tout plutôt que partir sur une pile ou une alimentation séparée je trouve un boîtier qui prend du 230V en entrée et donne du 5V continu en sortie. Comme ça le montage est alimenté par le radiateur. Hélas je me rappelle que le NRF24L01, malgré ses qualités, fonctionne lui en 3,3V. Je dois donc mettre une petit convertisseur linaire pour l’alimenter.

Bref côté récepteur ça fait un peu de quincaillerie :

  • un Digispark Pro (ATTiny167)
  • un NRF24L01 antenne piste qui ne servira qu’en réception
  • un relais 240V
  • une alimentation 230V alternatif -> 5V continu
  • un convertisseur 5V -> 3,3V
  • une diode 1N4007.

Côté émetteur je rajoute « simplement » un NRF24L01 – qui utilise SPI pour la communication – sur le montage existant. Le module radio nécessite en effet pas moins de 7 branchements : alimentation 3,3V et masse, MOSI et MISO, SCK (horloge), sélection et activation. Pour l’alimentation je profite du Nano alimenté en USB qui me donne un 3,3V tout prêt, pas besoin de convertisseur. Enfin presque tout prêt, il est recommandé de mettre un gros condensateur sur les bornes d’alim car le NRF crée des pics de consommation que le régulateur 3,3V du Nano peut avoir du mal à fournir, on accumule donc une charge dans le condensateur pour absorber les demandes ponctuelles. Dans mon cas avec une émission courte (2 octets) et peu fréquente (toutes les minutes) ça sera largement suffisant. Je devrai aussi pousser la puissance d’émission à HIGH car l’antenne piste intégrée est peu efficace.

Bilan après quelques semaines : ça marche nickel !