ESP32 + relais + alimentation 230V AC intégrés + capteurs
Dans une installation domotique, on a souvent besoin au niveau local d’un ensemble comprenant des senseurs comme :
- un détecteur de présence,
- une mesure de luminosité
- une mesure de la température
Un ou plusieurs relais comme actionneur.
Un microcontrôleur pour le traitement.
On trouve sur le marché de nombreux relais pilotables avec leur logiciel propriétaire, mais difficile d’y rajouter un senseur ou capteur.
Les 2 cartes présentées ici rassemblent un ESP32, 1 ou 4relais, et un bloc alimentation sur la même carte.
On les trouve chez Aliexpress :
Avantages
- regroupement ESP32, relais et alimentation. Cela simplifie le câblage
- Trous de fixation de la platine
- Entrées/Sorties GPIO ou IO à câbler en dessous ou au-dessus, ce qui est très pratique
- Nombreuses pins GND, 5V et 3.3V pour connecter les senseurs
Défauts
- Pas d’accès USB pour la première programmation. Il faut une interface USB/TTL
Connexions Hardware (carte 1 relais)
Cette carte dispose d’une entrée 230V AC pour son alimentation.
4 connecteurs * 10 pins
3V3 | CLK | 5V | GND |
SD0 | SD1 | SD3 | CMD |
IO15 | IO2 | IO13 | SD2 |
IO0 | IO4 | IO14 | IO12 |
IO16 (Relais) | IO17 | IO26 | IO27 |
IO5 | IO18 | IO33 | IO25 |
IO19 | GND | IO35 | IO32 |
IO21 | RXD0 | SVN | IO34 |
TXD0 | IO22 | EN | SVP |
IO23 (LED bleue) | GND | GND | 3V3 |
Connecteur programmation
IO0 | GND | GND | RX | TX | 5V |
Autres
Relais | IO16 |
LED bleue | IO23 |
Bouton EN (Reset) | EN |
Bouton IO0 | IO0 |
Connexions Hardware (carte 4 relais)
Cette carte dispose de 3 entrées au choix pour l’alimentation :
- 230V AC
- 7V à 30V DC
- 5V DC
4 connecteurs * 10 pins
3V3 | CLK | 5V | GND |
SD0 | SD1 | SD3 | CMD |
G15 | G2 | G13 | SD2 |
G0 | G4 | G14 | G12 |
G16 | G17 | G26 (relais) | G27 |
G5 | G18 | G33 (relais) | G25 (relais) |
G19 | GND | G35 | G32 (relais) |
G21 | RXD | SVN | G34 |
TXD0 | G22 | EN | SVP |
G23 (LED ) | GND | GND | 3V3 |
La disponibilité des GPIO est bien détaillée dans de document : https://www.upesy.fr/blogs/tutorials/esp32-pinout-reference-gpio-pins-ultimate-guide
Connecteur programmation
IO0 | GND | GND | RX | TX | 5V |
Autres
Bouton EN (Reset) | EN |
Bouton IO0 | IO0 |
Programmation
Pour télécharger du code, il faut connecter une interface USB / TTL avec le strap d’alimentation sur 3V3.
Pour l’alimentation de la carte ESP32 pendant la programmation, on a 2 choix :
- alimenter par l’adaptateur série sortie VCC vers le 5V de la carte ESP (bien que l’on soit en 3.3V et ne fonctionnera que pour la programmation)
- alimenter l’ESP32 en 230V et pas de liaison série sortie VCC vers carte ESP32
Pour lancer la programmation, il faut :
- rester appuyé sur le bouton IO0
- appuyez sur EN (Enable/Reset)
- relâchez les 2 boutons
Ainsi l’ESP attend la programmation. Une fois la programmation faite, re – appuyer sur EN pour relancer l’ESP32 sur le nouveau programme.
Logiciel
Ce module a l’avantage de ne pas être propriétaire, vous pouvez y mettre ce que bon vous semble.
Arduino
Avec l’outil IDE Arduino, vous pouvez développer votre propre code. Choisissez la carte ESP32 DEV module. Vous trouverez des détails sur la mise en route ici : https://f1atb.fr/programmation-de-lesp32-application-au-routeur-photovoltaique/
Avec l’Arduino, intégrez dans votre code le mode OTA permettant de mettre à jour le code à distance via le WIFI. Ainsi vous n’aurez plus besoin de l’interface USB/TTL
ESP Easy
Firmware permettant de programmer des ESP8266 ou ESP32 et disposant du code pour de nombreux capteurs sur le marché. Cela simplifie la programmation
https://espeasy.readthedocs.io/en/latest/index.html
ESPHome
Firmware puissant permettant de programmer son ESP32 avec de simples descriptions d’interfaces, actions; évènements etc. dans un fichier yaml. Souvent associé au système domotique Home Assistant.
https://esphome.io/index.html
Exemple de réalisation
Pilotage lumière, buzzer et mesure de température et luminosité
Ici un exemple regroupant :
- Capteur de présence Infra Rouge
- Capteur de luminosité
- Capteur (DHT22) de température et humidité
- Buzzer comme sonnette
- Interface vers un interrupteur A/M
- Relais pour la lumière
Pilotage lumières,climatisation Airton , et mesure de température.
Autre exemple avec la version 4 relais qui pilote des lumières et dispose de 4 senseurs ou effecteurs:
- Détecteur de présence PIR Infra rouge
- Mesure de la luminosité sur une entrée analogique
- Un émetteur Infra-Rouge pour piloter une climatisation Airton
- Un capteur de température et humidité DHT22
En plus 2 entrées connectées à des interrupteurs pour allumer/éteindre manuellement la lumière
Le code en yaml pour ESPHome / Home Assistant est disponible ici : https://github.com/F1ATB/Climatisation-Airton
Attention, le diagramme de directivité du IR Transmitter (disponible chez Aliexpress) est étroit, il faut pouvoir ajuster sa position afin de bien viser le climatiseur.
Bonsoir André,
Ce composant peut il être utilisé pour le routeur ? Y a t’il une limitation par le logiciel ? Je ne vois pas de problème du point de vue Hardware.
Il possède déjà un relais et surtout l’alim 220v; c’est un plus
J’en ai commandé un et je vais tester. J’ai mis en stby le développement du CI pour ça.
Bravo pour votre réactivité pour les debugs soft (V5.02, gestion du capteur de température)
Vous avez raison. C’est une solution intéressante pour le routeur avec son alimentation integrée.
Cdlt
Sympa ce module !!
Je vois une version 6 du routeur qui pointe son nez 😉.
En tout cas, André je suis admiratif devant votre capacité à produire autant de nouveaux projets en si peu de temps ! j’ai vu que vous aviez repris mon code auto discovery home assistant dans les dernières version routeur. Vous l’avez magnifiquement optimisé. Une vraie machine ! Épatant !
Merci pour ces nouveautés prometteuses et votre partage.
Votre code de l’auto discovery est parfait. C’est moi qui vous remercie
Re- bonsoir André, oubliez le PS de mon message précédent j’ai retrouvé l’article en question.
Encore merci
Jean michel
Bonjour et merci pour tous ces articles.
Cependant je me permets quelques nota bene issues de mon expérience sur ce type de carte avec relais embarqués.
1- Il vaut mieux oublier l’alimentation (en 3 ou 5V ) les deux fonctionnent mais le risque est très grand d’oublier à un moment que l’alim 230 est présente ce qui au mieux peut détruire la carte ESP, au pire votre PC…
2 – Si le relais alimente une charge inductive, (pompe par exemple), cela engendre des comportements bizarre sur la carte qui souvent la mettent en rideau… (je n’ai pas l’expertise pour développer mais j’ai du mettre un second relais, un comble 🙁 )
3 – la qualité de fabrication, sur 3 cartes achetées, 2 seulement fonctionnent… a peu près… j’ai beaucoup de soucis pour maintenir en fonctionnement ces cartes sur le long terme, malgré des routines d’auto-surveillance du code, soucis que je n’ai pas avec les cartes « standards » ESP. (là aussi, je ne sais pas diagnostiquer le pourquoi…).
4 – Attention, c’est du 230V qui se ballade dans la carte, mettre un film isolant sur le dessous peut éviter quelques secousses… 😉
bref je suis revenu à l’utilisation des cartes standards avec relais externes.
Bonne année 2024
Intéressant votre retour d’expérience. Pour l;instant j’ai 2 modules qui tournent depuis 3 mois.
Cdlt
Bonsoir André,
j’ai voulu faire un téléversment sur la carte avec un relai mais j’ai cette erreur : MD5
Compressed 18992 bytes to 13112…
Writing at 0x00001000… (100 %)
Wrote 18992 bytes (13112 compressed) at 0x00001000 in 0.2 seconds (effective 678.9 kbit/s)…
File md5: 03b32c0cabcc0c857bc2ae029a696d68
Flash md5: d5cb4735e5d52a4f26019d113b36e207
MD5 of 0xFF is fb0d8f08f299b9d5a5a87d75bdfef241
A fatal error occurred: MD5 of file does not match data in flash!
Failed uploading: uploading error: exit status 2
une idée du problème?
Cdlt
Retéléchargez le zip. Il a peut-être été corrompu.
Cdlt
Bonjour André,
j’ai essayé même avec vos anciennes versions, rien ni fait, vous n’avez pas eu cette erreur sur les votres?
je vais chercher sur le net
Cdlt
Essayez déjà de chargez le plus simple des logiciels en partant d’un exemple dans l’IDE Arduino.
Cdlt
André, c’est fait pareil toujour la même erreur
j’ai uploader en .bin un ESP 32 à partir de mon terminal puis fait un download sur la carte ça téléverse jusqu’à 100% puis toujour l’erreur qui revient
je me demande si l’esp n’ a pas un problème ou bien la carte :
esptool.py v4.5.1
Serial port /dev/cu.usbserial-A50285BI
Connecting…
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: e4:65:b8:82:46:e8
Stub is already running. No upload is necessary.
Configuring flash size…
Erasing flash (this may take a while)…
Chip erase completed successfully in 0.0s
Compressed 4194304 bytes to 737690…
Wrote 4194304 bytes (737690 compressed) at 0x00000000 in 71.1 seconds (effective 472.0 kbit/s)… (il a bien écrit le fichier .bin)
File md5: 50779a339f3bcdcb10b44e14e08ae595 (mais toujours les trois lignes ! !)
Flash md5: 9e638ae6ff5a3f62b17b73d14fb5218d
MD5 of 0xFF is 2b7a70fa59f8173635bcbe956bad56c6
A partir de l’IDE Arduino, arrivez vous à télécharger un petit programme?
André,
J’ai enfin trouvé c’est la tension en 3,3V après mesure elle était que 2,9V j’ai mis le pont en 5V sur la carte USB/TTL et la bingo j’ai pu téléversé sans erreur et créer un fichier .bin
si cette info peut servir à d’autres.
Cdlt
Uploading stub…
Running stub…
Stub running…
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x00000000 in 393.8 seconds (85.2 kbit/s)…
Hard resetting via RTS pin…
Pour tout ceux qu’ils veulent utiliser cette carte pour faire le routeur il faut impérativement changer la ligne 88 (#define zeroCross 23) en 21 dans le code avant de téléverser car le 23 est pour une led bleu sur la carte