Contrôleur ESP8266 avec ESPHome et Home Assistant
Ce projet sert à contrôler des relais à partir de Home Assistant pour un ouvre porte de garage automatisé. Cette façon de faire est plus sécuritaire qu’une télécommande RF classique qui est relativement facile à cloner, ce qui donne alors accès à toute la maison. Je voulais aussi une solution réutilisable pour d’autres projets d’automatisation extérieure, sans dépendre d’un assemblage de prises intelligentes et d’adaptateurs.
À ce moment-là, je n’ai trouvé aucun produit qui combinait un ESP8266 et plusieurs relais d’une façon adaptée à ce type de projet. Un PCB sur mesure était donc ma la meilleure option.

Architecture matérielle
La carte est organisée autour de trois blocs fonctionnels principaux.
Contrôle avec ESP8266
Au centre du design se trouve un module ESP-12F (ESP8266). J’ai déjà utilisé ce module dans plusieurs projets et je l’aime bien parce qu’il permet d’intégrer le WiFi facilement dans un prototype, tout en restant soudable à la main. Les modules ne sont pas toujours parfaitement plats, mais avec un peu de patience et une station à air chaud, ça se fait pas trop mal.
La carte inclut aussi un connecteur de programmation en circuit (ISP) ainsi que des interrupteurs pour choisir le mode de démarrage du microcontrôleur, ce qui permet de flasher le firmware directement sur la carte à l’aide d’un programmeur USBTinyISP peu coûteux et facile à trouver.

Régulation d’alimentation
Pour l’alimentation, j’ai réutilisé le régulateur MCP1702, avec lequel j’ai eu de bons résultats dans d’autres projets. Il accepte des tensions d’entrée entre 2.7V et 13.2V et fournit une sortie stable de 3.3V pour l’ESP8266.
Un régulateur flexible permet d’alimenter la carte avec différents types de sources, incluant des adaptateurs avec "barrel jack" standards que j’avais déjà sous la main.

Étape de commande des relais
Les relais sont commandés à l’aide de transistors, puisque les GPIO de l’ESP8266 ne peuvent pas fournir suffisamment de courant directement. Chaque bloc de relais comprend:
- Un relais capable de commuter jusqu’à 5A à 120VAC (le relais lui-même peut aller jusqu’à 10A, mais pas les traces du PCB).
- Un transistor pour enclencher le relay.
- Une diode flyback pour protéger le reste du circuit contre les surtensions inductives.
- Une DEL indiquant l’état du relais, ce qui simplifie l’installation et le débogage.

Contraintes de sélection des broches sur l’ESP8266
Lors des tests de la première révision du PCB, un problème est apparu lié au choix des pins sur l’ESP8266. Les deux GPIO initialement assignés aux relais étaient aussi utilisés comme pins de données pour la mémoire flash, ce qui causait des redémarrages aléatoires et des échecs au démarrage.
Le comportement était assez étrange: parfois la carte fonctionnait brièvement, parfois un seul relais répondait, ce qui rendait le problème moins évident à diagnostiquer.
La correction a consisté à rediriger les signaux de commande des relais vers les GPIO12 et GPIO13, qui sont des broches sécuritaires pour cet usage selon la documentation d’ESPHome. J’ai coupé les traces et modifié le prototype V1 pour valider la solution, puis corrigé le tout dans les révisions suivantes.
J’en ai aussi profité pour déplacer certains composants dans la version finale: la prise d’alimentation a été déplacée vers le bas de la carte et des trous de montage ont été ajoutés.
Intégration avec ESPHome
Toute la partie firmware est gérée à l’aide d’ESPHome. Chaque relais est configuré dans ESPHome avant la programmation avec un choix explicite de la pin correspondant à chaque relai, par exemple :
switch:
- platform: gpio
name: "Board 1 relay 1"
pin:
number: 12
inverted: false
- platform: gpio
name: "Board 1 relay 2"
pin:
number: 13
inverted: falseNote : L’option inverted permet de définir l’état par défaut du relais au démarrage.
La programmation est faite avec le connecteur ISP avec la carte en mode programmation avec les interrupteurs de démarrage. Il faut ensuite changer les interrupteurs pour passer en mode exécution pour l’utilisation normale. Une fois la programmation complétée, chaque relai apparaît dans Home Assistant comme un interrupteur standard, ce qui permet de les contrôler comme n’importe quelle autre entité.
Les schémas complets, le layout du PCB et la liste des composants sont disponibles dans le projet KiCad sur GitHub:
https://github.com/CindyPotvin/WifiRelayESPHome