Différences entre les versions de « ESP8266 : RELAIS WIFI 1 CANAL »
Ligne 75 : | Ligne 75 : | ||
==L'environnement de programmation : Easycoding== | ==L'environnement de programmation : Easycoding== | ||
Nous allons utiliser Easycoding pour éditer le code du projet. | |||
===Chargement du projet=== | ===Chargement du projet=== |
Version du 3 juillet 2018 à 08:52
| |||
---|---|---|---|
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 spécifique à l'ESP8266.
Je vous invite à lire ce tutoriel : ESP8266 : Installation de l'environnement
Présentation
Difficulté de mise en oeuvre : ★★☆☆☆
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.
Attention :
ce ne sont pas des relais de puissance. Limite = 10A (résistif).
Ne pas utiliser pour piloter un ballon d'eau chaude ou tout appareil à forte consommation.
Réservez ce type de matériel aux circuits de commande (faible consommation) ou pour piloter des appareils basse tension (caméras, ...).
Pour faire les branchements électriques, veillez à toujours respecter les règles de sécurité.
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 ou Velleman VMA406)
COÛT : une dizaine d'Euro
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
S
est connectée à la sortieD7
du NodeMCU.
- (Nous aurions pû utiliser n'importe quelle autre entrée digitale, sauf la D0 qui a un comportement spécial au moment du Reset du module)
- 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 Leds LED_Link et LED_Relais sont optionnelles.
Repérez le sens des Leds. Les cathodes (méplats) sont connectées à la borne Gnd
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. Il pourra également répondre par une autre requête permettant ainsi d'accuser réception de la consigne.
- 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.
En D4
, si la Led nommée LED_Link est présente, elle clignotera à la place de la Led embarquée lors de la connexion au Wifi ou de la réception des requêtes.
En D5
, si la Led nommée LED_Relais est présente, elle s'allumera lorsque le relais passera à l'état ON, puis s'éteindra lorsque le relais passera à l'état OFF.
L'environnement de programmation : Easycoding
Nous allons utiliser Easycoding pour éditer le code du projet.
Chargement du projet
- Téléchargez et décompressez ce fichier : ESP8266_Relais.zip
- Validez par OK pour charger le fichier.
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)
- Les Leds optionnelles
La configuration du réseau
Modifiez la valeur de chaque variable :
- NOM_DISPOSITIF : remplacez
RelaisIPCAM1
par le nom que vous souhaitez attribuer à votre module - WIFI_SSID : remplacez la valeur
MON_SSID
par le SSID de votre réseau wifi - WIFI_SECURITE : remplacez la valeur
Ma_Cle_WPA
par la clé WPA de votre réseau Wifi
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), 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)
- 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) - APIKEY_SECURE : renseignez 1 si vous avez activé la protection de l'API, sinon renseignez 0
- IPX800_KEY : remplacez
apikey
par votre clé API.
- 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.
La configuration des Leds optionnelles
- LED_Link : remplacez
1
par0
si la Led n'est pas installée enD4
. La Led embarquée sera utilisée.
- LED_Relais : remplacez
1
par0
si la Led n'est pas installée enD5
.
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
Cliquez sur pour sauvegarder votre projet.
Exportez votre code vers Arduino IDE :
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
Branchement du module au PC
Connectez le module au port USB de votre PC. Vous pouvez laisser le relais et les leds connectés.
Si vous devez intervenir dans le code C++, c'est le moment .
L'espace de travail
1 : Barre d'outils
2 : espace programmation
3 : console
4 : Sélection en cours (type de carte et port COM)
La barre d'outil en détail :
Vérification 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"
Cliquez sur le bouton afin de vérifier le code.
Vérifiez les éventuelles erreurs dans la console.
Téléversement vers le module
- suivez la progression du téléversement dans la fenêtre console
- 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 tout risque d'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.
Cas d'une URL comprenant une requête incorrecte. Les instructions sont rappelées dans la page Html.
Cas d'une requête comportant une commande ON correcte
Cas d'une requête OFF correcte
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.
Pilotage depuis l'IPX800 V4
Comme nous l'avons vu, le relais wifi est piloté par des requêtes Http ON ou OFF, un retour d'état se fait sur une sortie virtuelle.
Récupération des requêtes à émettre
A partir d'un navigateur, entrez l'adresse IP du module http://IP_Relais
Dans la page Web retournée par l'ESP8266, relevez les deux requêtes attendues.
Création du widget pour émission de l'ordre "ON"
Sur le dashboard de l'IPX800, créez un widget de type PUSH qui émettra la requête ON au module.
=> capture PUSH ON vers module
Création du widget pour émission de l'ordre "OFF"
Créez un second widget qui émettra la requête de type OFF
=> capture PUSH OFF vers module
Création du widget pour visualisation du retour d'état
Pour visualiser sur l'IPX800 l'état du relais wifi, nous allons créer un widget de pilotage de sortie sur le dashboard. Nous désactiverons le contrôle.
=> capture widget sortie virtuelle.