ESP8266 : RELAIS WIFI 1 CANAL
| |||
---|---|---|---|
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.
le schéma
- Le module NodeMCU est alimenté directement en 5V par son port USB.
- Le module relais est un modèle avec Trigger. La broche Signal ("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
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++
Afin de ne pas effrayer les débutants, nous utiliserons un générateur de code en ligne, qui permet une représentation simple et graphique du code, à la façon Google Blockly (bibliothèque logicielle javascript, Open Source de Google, créée 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 avoir injecté le code 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 bouton de vottre choix, afin d'accéder à l'interface dans votre langue préférée.
L'outil prend un peu de temps pour s'ouvrir, mais devient très performant par la suite. Ne vous impatientez pas.
Voici l'interface, prête à recevoir le code.
Téléchargez et décompressez ce fichier : ESP8266_Relais.zip
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.
Le programme
La configuration
Dans la boucle SETUP, nous trouvons tous les éléments de configuration, ainsi que le code qui ne sera exécuté qu'une fois lors du démarrage du module.
La configuration du réseau
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.
- 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)
La configuration des commandes API
- 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.
- APIKEY_SECURE : renseignez 1 si vous avez activé la protection de l'API
- IPX800_KEY : remplacez
apikey
par votre clé API.
Connexion au Wifi et Nom d'hôte et adresse IP statique
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), cliquez sur le bloc "IP Statique" puis appuyez la touche Suppr
de votre clavier.
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.
Les autres variables
Démarrage du Serveur Http
Démarrage du serveur Http et envoi des informations sur le port série (USB)
Mise en place de l'API Key s active
Création des commandes API à envoyer à l'IPX800 (retour d'état)
Création des requêtes attendues par le module
Les requêtes sont composées avec le nom du dispositif afin de sécuriser le process.
interprétation de la requête reçue par le module
En fonction de la valeur de la requête reçue, le module active ou désactive le relais, émet des informations sur le port série puis envoie un retour d'état à l'IPX800 via les commandes API. La réponse de l'IPX800 sera affichée via le port série également.
La réponse par le serveur Web
Le code restant s'occupe d'émettre une réponse au client qui a émis la requête vers le module. La réponse se fait sous la forme d'une page web contenant toutes les informations sur la requête et les erreurs éventuelles. La réponse de l'IPX800 à la commande API reçue (retour d'état) sera également affichée dans la page Web.
Sauvegarde et Transfert du programme sur le module
Sur l'interface de Easycoding, cliquez sur le bouton d'exécution.
Validez par OK
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"
Connectez le module au port USB de votre PC.
Si vous devez intervenir dans le code C++, c'est le moment .
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 Rendez vous dans votre navigateur internet, et entrez l'adresse IP du 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é.
Le serveur Web intégré au module devrait vous renvoyer une page Html comportant les instructions de base.
Utilisation
Alimentez le module en 5V par son port
Cas d'une requête absente (en url de navigation, vous avez entré l'adresse IP seule) Voici la page Web retournée par le module, ainsi que les informations remontées sur le port USB.
Cas d'une URL comprenant une requête incorrecte. Les instructions sont renvoyées dans la page Html.
Cas d'une requête comportant une commande ON correcte
Cas d'une requête OFF correcte