ESP8266 : RELAIS WIFI 1 CANAL

De GCE Electronics
Aller à la navigation Aller à la recherche

Relais WIFI

ESP8266 Relais presentation.png
Nom Relais WIFI
Famille Objets connectés
Wiki créé le 22/05/2018
Wiki mis à jour le 22/05/2018
Auteur fgtoul

Prérequis

Avant de pouvoir programmer le module NodeMCU, vous devez avoir installé l'environnement de développement.

Je vous invite à lire ce tutoriel

Présentation

Le montage que nous allons réaliser, permet de piloter un relais à distance avec l'ESP8266.

Nous utiliserons le module NodeMCU dans sa version LoLin, pour une programmation simplifiée par le port USB et la possibilité d'alimenter un relais 5V directement sur l'une de ses broches.

Matériel nécessaire

1 cable micro USB Type B vers USB Type A (câble fréquemment utilisé pour les smartphones et les tablettes)

1 module NodeMCU V3 (LoLin) Lua WIFI basé sur ESP8266 ESP-12E

1 module relais 5V avec Trigger (Keyes relay 5V module)

COÛT : une dizaine d'Euro

le schéma

Esp8266 Relais Schema.PNG
  • Le module NodeMCU est alimenté directement en 5V par son port USB.
  • Le module relais est un modèle avec Trigger. La broche S est connectée à la sortie D0 du NodeMCU.
Il suffira de piloter cette sortie via le programme afin d'activer ou désactiver le relais.
Le relais est alimenté par la sortie VU, qui est un report de la tension appliquée sur le port USB (5V).

Les fonctionalités

Grâce à sa connectivité Wifi intégrée, le module se connecte à un réseau wifi, via lequel il pourra communiquer avec le reste de l'installation domotique. A la fois client et serveur, notre module recevra des consignes sous la forme de requêtes Http et pourra répondre par une page HTML.

  • client Wifi. Le module se connecte automatiquement au réseau. Il est possible de lui appliquer une adresse IP statique.
  • informations (adresse IP locale) et retours d'état via le port série (USB) lorsqu'il est connecté à un PC.
  • Serveur Http activé au démarrage. Le client connecté au serveur recevra une réponse à chacune de ses requêtes, sous forme de page web.
  • la Led embarquée peut retourner des informations sur le statut des communications :
    • clignotement lent (5 fois) pour signaler une connexion correcte au réseau Wifi,
    • clignotement simple (1 fois) pour signaler la réception d'une requête correcte,
    • clignotement rapide (3 fois) pour signaler la réception d'une requête erronée.

L'environnement de programmation : Easycoding

Logo googleblockly.png

La programmation du module NodeMCU se fait soit en script LUA, soit en langage C++ via Arduino IDE.

Pour cette réalisation, nous écrirons un programme en langage C++ (vous n'allez pas vous en rendre compte ...)

Afin de ne pas effrayer les débutants, nous utiliserons un générateur de code nommé Easycoding, qui permet une écriture simplifiée et graphique du code.

Easycoding a été développé avec Google Blockly
(bibliothèque logicielle javascript, Open Source, créée par Google en 2012).

Cet outil permettra aux débutant de configurer l'application, sans avoir à se préoccuper du langage.

Les lecteurs plus férus de programmation, pourront intervenir dans le code C++, après l'avoir injecté dans Arduino IDE.

Easycoding.tn

Pour accéder à l'interface de développement, rendez-vous sur le site Easycoding.tn

Dans le sous-menu TUNIOT FOR ESP8266, cliquez sur le drapeau de vottre choix, afin d'accéder à l'interface dans votre langue préférée.

Easycoding.tn.png

L'outil prend un peu de temps pour s'ouvrir, mais devient très performant par la suite. Ne vous impatientez pas.

Premiers pas

Easycoding présente une interface comportant 5 zones

Easycoding interface.png

1 : Menu permettant la sélection du mode

  • Blocs : mode permettant la saisie du programme par glisser/déposer des blocs.
  • Code : mode permettant la consultation du code C++ généré en temps réel. Lecture seule.
  • XML : mode permettant la consultation du code XML généré automatiquement.

2 : Menu principal de gestion du projet

  • Easycoding clipboard.png copie du code C++ dans le presse-papier
  • Easycoding tutoriaux.png accès à des tutoraux vidéos (en français)
  • Easycoding vidage.png vidage de la surface de travail et du code
  • Easycoding arduinoIDE.png Lancer le programme (bascule dans Arduino IDE pour compilation et téléversement)
  • Easycoding modeles.png chargement de modèles de code.
  • Easycoding save.png sauvegarde du projet au format EasyCoding (XML)
  • Easycoding load.png chargement d'un projet au format EasyCoding (XML)

3 : Menu d'accès aux blocs de programmation, positionnables par Glisser/Déposer

4 : Zone de travail.

5 : Menu d'affichage.

  • Recentrer
  • Zoomer +
  • Zoomer -
  • Corbeille (suppression de blocs par glisser/déposer)

Chargement du projet

  • Cliquez sur le bouton Load XML et sélectionnez le fichier XML précédemment téléchargé.
  • Validez par OK pour charger le fichier.
Load XML

Programmation

Le programme se décompose en deux parties :

  • Setup : Le code n'est exécuté qu'une fois au démarrage du module.
    • Configuration du réseau
    • Définition des variables
    • Connexion au réseau Wifi
    • Démarrage du serveur Http
  • Boucle Principale : Le code de cette boucle est répété jusqu'à extinction du module
    • attente d'une connexion sur le serveur Web embarqué
    • interprêtation de la requête reçue et pilotage du Relais (ON ou OFF)
    • réponses sur port série et http
    • envoi d'une commande API vers IPX800 pour le retour d'état du Relais.

La configuration

Dans la boucle SETUP, vous devez configurer

  • le réseau
  • Les commandes API qui seront envoyées vers IPX800 (retour d'état)
La configuration du réseau
ESP8266 Code Wifi.png

Modifiez la valeur de chaque variable :

  • WIFI_SSID : remplacez la valeur MON_SSID par le SSID de votre réseau wifi
  • WIFI_SECURITE : remplacez la valeur Ma_Cle_Wep par la clé WEP de votre réseau Wifi
  • IPX800_IP : remplacez 192.168.000.112 par l'adresse IP de l'IPX800 V4. Les séparateurs sont des points.
Cette adresse IP sera utilisée pour le retour d'état via l'API IPX800.
  • IPX800_Port : remplacez la valeur 80 par le port paramétré sur l'IPX800 (port http)
Nom d'hôte et adresse IP statique
ESP8266 Code connexion2.png

Si vous souhaitez affecter une adresse IP fixe au module, renseignez les valeurs

  • IP : Remplacez 192,168,0,64 par l'adresse à attribuer. Attention, les séparateurs sont des virgules, et non des points.
  • Passerelle : Remplacez 192,168,0,254 par l'adresse IP locale de votre routeur (box adsl), les séparateurs sont des virgules.
  • Masque : Remplacez 255,255,255,0 par le masque de votre réseau, les séparateurs sont des virgules.

Si vous souhaitez que votre module conserve une adresse IP dynamique (DHCP), sélectionnez le bloc "IP Statique" puis appuyez la touche Suppr de votre clavier. Les blocs situés en dessous, doivent remonter.

La configuration des commandes API

Après pilotage du relais, le module envoie une commande API à l'IPX800 pour confirmer l'état du relais (ON ou OFF)

ESP8266 Code API.png
  • NOM_DISPOSITIF : remplacez RelaisIPCAM1 par le nom que vous souhaitez attribuer à votre module
  • API_Commande_ON : remplacez SetVO par une autre commande si vous ne souhaitez pas activer une sortie virtuelle sur l'IPX800 (SetR par exemple pour activer un relais)
  • API_Commande_OFF : remplacez ClearVO par une autre commande si vous ne souhaitez pas désactiver une sortie virtuelle sur l'IPX800 (ClearR par exemple pour désactiver un relais)
  • IPX800_SV_Retour : remplacez 05 par le numéro de la sortie virtuelle ou physique qui recevra le retour d'état.
ESP8266 Code API2.png
  • APIKEY_SECURE : renseignez 1 si vous avez activé la protection de l'API
  • IPX800_KEY : remplacez apikey par votre clé API.

Le reste du code

Aucune modification n'est nécessaire dans les blocs décrits dans ce paragraphe.
Nous les survolons juste pour en comprendre la fonction. Cliquez sur [Afficher] si vous êtes curieux.

Sauvegarde et Transfert du programme sur le module

Cliquez sur Save XML pour sauvegarder votre projet.


Exportez votre code vers Arduino IDE : Sur l'interface de Easycoding, cliquez sur le bouton d'exécution Lancer le programme défini par les blocs dans l'espace de travail.

Validez par OK

ESP8266 Code Transfert2.png


ESP8266 Code Transfert3.png

Choisissez l'option "Ouvrir avec" et choisissez le logiciel par défaut "Arduino IDE" installé au préalable.

Validez,

le logiciel Arduino IDE s'ouvre et charge votre programme.

Arduino IDE : compilation & téléversement du code

Dans l'interface du logiciel Arduino IDE, vérifiez les prérequis

  • Configuration du Port COM (menu Outils)
  • Installation des bibliothèques ESP8266 (Gestionnaire de cartes)
  • Sélection du Type de Carte (menu Outils)

Pour plus d'information, voir plus haut le paragraphe "Prérequis"


Branchement du module au PC

Connectez le module au port USB de votre PC.

ESP8266 Televersement.png

Si vous devez intervenir dans le code C++, c'est le moment .

Vérification du code

Téléversement vers le module

  • Cliquez sur le bouton pour compiler et téléverser le code compilé dans la mémoire flash du module, et ouvrez le moniteur Série.
  • A la fin du téléversement, le module démarre. Les informations arrivent par le port USB.
  • Notez l'adresse IP attribuée au module
Après programmation par le port série (USB) il est conseillé de redémarrer manuellement le module (débranchez/rebranchez) pour éviter toute instabilité.

Utilisation

Alimentez le module en 5V par son port USB.

Accès au module

Pour démarrer, dans votre navigateur, entrez l'adresse IP de votre module (relevée précédemment dans Arduino IDE).

Le serveur http du module vous envoie une page Html comportant les commandes attendues.

Les commandes de pilotage du relais par le module sont sous la forme

http://<IP_Module>:<Port_Module>/ON_<NomDispositif>
http://<IP_Module>:<Port_Module>/OFF_<NomDispositif>
<IP_Module> représente l'adresse IP locale du module (fixe ou dynamique)
<Port_Module> représente le port Http du serveur Web intégré au module.
<NomDispositif> représente le nom d'hôte que vous avez attribué au module.


Le retour d'état se fait sur l'IPX800 avec les commandes API mises en place dans le programme. Ces commandes sont également affichées dans la page réponse du module.

Voici la page Web retournée par le module, ainsi que les informations remontées sur le port USB.

ESP8266 Web NoRequest.PNG

Cas d'une URL comprenant une requête incorrecte. Les instructions sont renvoyées dans la page Html.

ESP8266 Web ErrorRequest.PNG

Cas d'une requête comportant une commande ON correcte

ESP8266 Web OnRequest.PNG

Cas d'une requête OFF correcte

ESP8266 Web OffRequest.PNG

La Led embarquée

Au démarrage,

  • la Led clignote 5 fois pour signaler que le module est connecté au réseau Wifi.

A la réception d'une requête,

  • la Led clignote 1 fois rapidement pour signaler qu'une requête correcte a été reçue.
  • la Led clignote 3 fois rapidement pour signaler qu'une requête incorrecte a été reçue.