MicroPython : Serveur Web du module relais ESP32/ESP8266

MicroPython : Serveur Web du module relais ESP32/ESP8266

Ce didacticiel est un guide étape par étape qui explique comment créer un serveur Web autonome ESP32 ou ESP8266 NodeMCU qui contrôle n’importe quel module de relais à l’aide du micrologiciel MicroPython. Nous allons créer un serveur Web ESP32/ESP8266 qui est mobile et accessible avec n’importe quel appareil avec un navigateur sur votre réseau local.

MicroPython ESP32 ESP8266 Module de relais NodeMCU Serveur Web Appareils AC

Si vous voulez savoir comment fonctionne un module de relais, lisez notre Guide MicroPython : Module de relais avec ESP32/ESP8266.

Nous avons des guides similaires utilisant Arduino IDE :

Conditions préalables

Pour suivre ce tutoriel, vous avez besoin du firmware MicroPython installé dans vos cartes ESP32 ou ESP8266. Vous avez également besoin d’un IDE pour écrire et télécharger le code sur votre carte. Nous vous suggérons d’utiliser Thonny IDE ou uPyCraft IDE :

En savoir plus sur MicroPython : eBook de programmation MicroPython avec ESP32 et ESP8266.

Présentation des relais

Un relais est un interrupteur à commande électrique et comme tout autre interrupteur, il peut être allumé ou éteint, laissant passer ou non le courant. Il peut être contrôlé avec des basses tensions, comme le 3,3V fourni par les GPIO ESP32/ESP8266 et nous permet de contrôler des hautes tensions comme le 12V, 24V ou la tension secteur (230V en Europe et 120V aux États-Unis).

Il existe différents modules de relais avec un nombre différent de canaux. Vous pouvez trouver des modules relais avec un, deux, quatre, huit et même seize canaux. Le nombre de canaux détermine le nombre de sorties que vous pouvez contrôler.

Modules de relais avec un nombre différent de canaux 1, 2, 4, 8, 16 canaux

Obtenir un module relais:

Câblage d’un module de relais à l’ESP32/ESP8266

Avertissement: dans cet exemple, nous avons affaire à la tension secteur. Une mauvaise utilisation peut entraîner des blessures graves. Si vous n’êtes pas familier avec la tension secteur, demandez à quelqu’un de vous aider. Lors de la programmation de l’ESP ou du câblage de votre circuit, assurez-vous que tout est déconnecté de la tension secteur.

Alternativement, vous pouvez utiliser une source d’alimentation 12V pour contrôler les appareils 12V.

Schéma de principe ESP32

Connectez le module relais à l’ESP32 comme indiqué dans le schéma suivant. Le schéma montre le câblage d’un module relais à 2 canaux, le câblage d’un nombre différent de canaux est similaire.

Câblage d'un module de relais au circuit schématique ESP32

Dans cet exemple, nous contrôlons une lampe. Nous voulons juste allumer la lampe de temps en temps, il est donc préférable d’utiliser une configuration normalement ouverte.

Nous connectons la broche IN1 à GPIO 26, vous pouvez utiliser n’importe quel autre GPIO approprié. Voir le guide de référence ESP32 GPIO.

Schéma de principe de l’ESP8266 NodeMCU

Suivez le schéma suivant si vous utilisez un ESP8266 NodeMCU.

Câblage d'un module de relais au circuit schématique ESP8266

Nous connectons la broche IN1 au GPIO 5, vous pouvez utiliser n’importe quel autre GPIO approprié. Voir le guide de référence ESP8266 NodeMCU GPIO.

Les meilleures broches ESP8266 à utiliser avec les relais sont : GPIO 5, GPIO 4, GPIO 14, GPIO 12 et GPIO 13.

Code de serveur Web de relais MicroPython (Script)

Le code pour contrôler un relais avec l’ESP32 ou l’ESP8266 est aussi simple que de contrôler une LED ou toute autre sortie. Dans cet exemple, comme nous utilisons une configuration normalement ouverte, nous devons envoyer un signal BAS pour laisser passer le courant et un signal HAUT pour arrêter le courant.

Contrôler une lampe avec l'ESP32 ou ESP8266 NodeMCU à l'aide d'un module de relais

Copiez le code suivant dans le main.py fichier et téléchargez-le sur votre tableau. Il allume votre lampe pendant 10 secondes et l’éteint encore 10 secondes.

# Complete project details at https://Raspberryme.com

from machine import Pin
from time import sleep

# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)

# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)

while True:
  # RELAY ON
  relay.value(0)
  sleep(10)
  # RELAY OFF
  relay.value(1)
  sleep(10)

Afficher le code brut

Comment fonctionne le code

Importer le Épingler classe de la machine module pour interagir avec les GPIO. Nous importons également les sommeil() méthode de la temps module pour ajouter des délais.

from machine import Pin
from time import sleep

Ensuite, nous définissons un Épingler objet appelé relais au 26 (si vous utilisez un ESP32) et définissez-le comme une sortie.

# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)

Si vous utilisez un ESP8266, utilisez GPIO 5 plutôt. Commentez la ligne précédente et décommentez la suivante.

# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)

Dans la boucle while, envoyez un signal LOW pour allumer la lampe pendant 10 secondes.

# RELAY ON
relay.value(0)
sleep(10)

Si vous utilisez une configuration normalement fermée, envoyez un signal HAUT pour allumer la lampe.

Arrêtez le flux de courant en envoyant un signal HAUT à la broche du relais. Si vous utilisez une configuration normalement fermée, envoyez un signal BAS pour arrêter le flux de courant.

# RELAY OFF
relay.value(1)
sleep(10)

Module de relais de contrôle avec serveur Web MicroPython

Relais de contrôle avec serveur Web - MicroPython ESP32 et ESP8266

Dans cette section, nous avons créé un exemple de serveur Web qui vous permet de contrôler un relais à distance via un serveur Web.

boot.py

Copiez le code suivant dans votre boot.py déposer.

# Complete project details at https://Raspberryme.com

try:
  import usocket as socket
except:
  import socket

from machine import Pin
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'

station = network.WLAN(network.STA_IF)

station.active(True)
station.connect(ssid, password)

while station.isconnected() == False:
  pass

print('Connection successful')
print(station.ifconfig())

# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)

# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)

Afficher le code brut

Insérez vos identifiants réseau dans les variables suivantes :

ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'

Décommentez l’une des lignes suivantes en fonction du tableau que vous utilisez. Par défaut, il est configuré pour utiliser le GPIO ESP32.

# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)

# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)

main.py

Copiez ce qui suit dans votre main.py déposer.

# Complete project details at https://Raspberryme.com

def web_page():
  if relay.value() == 1:
    relay_state=""
  else:
    relay_state="checked"
  html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"><style>
  body{font-family:Arial; text-align: center; margin: 0px auto; padding-top:30px;}
  .switch{position:relative;display:inline-block;width:120px;height:68px}.switch input{display:none}
  .slider{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#ccc;border-radius:34px}
  .slider:before{position:absolute;content:"";height:52px;width:52px;left:8px;bottom:8px;background-color:#fff;-webkit-transition:.4s;transition:.4s;border-radius:68px}
  input:checked+.slider{background-color:#2196F3}
  input:checked+.slider:before{-webkit-transform:translateX(52px);-ms-transform:translateX(52px);transform:translateX(52px)}
  </style><script>function toggleCheckbox(element) { var xhr = new XMLHttpRequest(); if(element.checked){ xhr.open("GET", "/?relay=on", true); }
  else { xhr.open("GET", "/?relay=off", true); } xhr.send(); }</script></head><body>
  <h1>ESP Relay Web Server</h1><label class="switch"><input type="checkbox" onchange="toggleCheckbox(this)" %s><span class="slider">
  </span></label></body></html>""" % (relay_state)
  return html

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

while True:
  try:
    if gc.mem_free() < 102000:
      gc.collect()
    conn, addr = s.accept()
    conn.settimeout(3.0)
    print('Got a connection from %s' % str(addr))
    request = conn.recv(1024)
    conn.settimeout(None)
    request = str(request)
    print('Content = %s' % request)
    relay_on = request.find('/?relay=on')
    relay_off = request.find('/?relay=off')
    if relay_on == 6:
      print('RELAY ON')
      relay.value(0)
    if relay_off == 6:
      print('RELAY OFF')
      relay.value(1)
    response = web_page()
    conn.send('HTTP/1.1 200 OKn')
    conn.send('Content-Type: text/htmln')
    conn.send('Connection: closenn')
    conn.sendall(response)
    conn.close()
  except OSError as e:
    conn.close()
    print('Connection closed')

Afficher le code brut

Nous n’expliquerons pas comment fonctionne ce code car nous avons déjà un tutoriel très similaire avec une explication détaillée de chaque ligne de code. Lire le prochain projet :

Manifestation

Après avoir apporté les modifications nécessaires, téléchargez le boot.py et main.py fichiers sur votre tableau. Appuyez sur le bouton EN/RST et dans le Shell, vous devriez obtenir l’adresse IP ESP.

Adresse IP du serveur Web de relais ESP32 ESP8266

Ensuite, ouvrez un navigateur sur votre réseau local et saisissez l’adresse IP ESP pour accéder au serveur Web.

Vous devriez obtenir une page Web avec un bouton à bascule qui vous permet de contrôler votre relais à distance à l’aide de votre smartphone ou de votre ordinateur.

Contrôler un relais avec un serveur Web à l'aide d'ESP32 ou ESP8266 NodeMCU à l'aide du micrologiciel MicroPython

Boîtier pour la sécurité

Pour un projet final, assurez-vous de placer votre module relais et ESP à l’intérieur d’un boîtier pour éviter que les broches AC soient exposées.

Boîtier en plastique pour la sécurité et masquer les broches CA exposées du module de relais

Emballer

L’utilisation de relais avec l’ESP est un excellent moyen de contrôler à distance les appareils électroménagers AC. Vous pouvez également lire nos guides complets sur les modules relais :

En savoir plus sur MicroPython avec l’ESP32 et l’ESP8266 avec nos ressources :

Merci d’avoir lu.

  • AZDelivery ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board avec CP2102 (successeur de ESP8266) Compatible avec Arduino incluant Un E-Book!
    ✅ Que vous soyez débutant ou expert, AZDelivery ESP32 NodeMCU Module WLAN WiFi est le microcontrôleur qu’ il vous faut! ✅ Il vous assure un prototypage facile grâce à une programmation simple via le script Lua ou dans Arduino-IDE et un design compatible breadboard. Vous aurez ainsi la l’opportunité de développer des projets uniques et étonnants en rapport avec l’IoT, des horloges décoratives à LED, des outils de mesures de la qualité de l’air à l’intérieur. ✅ Cette carte est équipée de puces Wi-Fi et Bluetooth bimode 2,4 GHz de TSMC ainsi que de la technologie 40nm basse consommation. ✅ Le module a 38 broches et offre plus de fonctions qu'un module à 30 broches. Il est également plus petit et plus pratique à utiliser. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • ARCELI Relais ESP8266 avec Module d'émetteur-récepteur sans Fil WiFi série ESP8266 ESP-01S pour Arduino UNO R3 Mega Nano Raspberry Pi
    Ce relais ESP-01 / 01S basé sur le module WIFI ESP-01 / 01S. Il est conçu pour la maison intelligente, Internet et d’autres projets de bricolage. Avec ce relais intelligent, il est facile de créer votre commutateur intelligent pour contrôler n’importe quel appareil avec votre téléphone, où que vous soyez. Tension de fonctionnement: DC5V-9V Distance de transmission: distance maximale de transmission de 400 m (environnement ouvert, téléphone mobile équipé d'un module WIFI) Contenu: 1 module ESP8266 ESP-01S, 1 adaptateur ESP8266 relais.
  • AZDelivery ESP8266-01S ESP-01S WLAN WiFi 5V Module avec Relais Adaptateur (successeur de ESP01) Compatible avec Arduino et Raspberry Pi incluant Un E-Book
    ✅ Le module AZ-Delivery ESP-01S avec microcontrôleur et 1 Relais pour un maximum de 50V AC / 5A ou 30V DC / 5A dans un ensemble pratique et avantageux ! Dimensions (Lxlxh) : 45 x 28 x 19 mm ✅ Le module ESP01S AZ-Delivery est entièrement compatible avec divers micrologiciels à source ouverte, tels que Tasmota, qui sont disponibles en ligne ✅ Contrôle des relais via WLAN 802.11 b/g/n. Le contrôleur dispose d'une mémoire flash de 1 Mo et le processeur d'une vitesse de 80 MHz pour un travail autonome. Le module est pratique à utiliser et peut être commuté avec une seule broche GPIO ✅ De même, le module dispose d'un Relais généreusement dimensionné pour effectuer en toute fiabilité de nombreuses opérations de commutation. Facile à utiliser grâce à une entrée numérique, donc pas besoin de bibliothèque ou de programmation ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.