ARDUINO et WIFI via le MODULE ESP 8266 esp 01
dans cette rubrique intitulée WIFIDROIDUINO , nous allons voir comment faire dialoguer une tablette ou un telephone ANDROID ou un PC en WIFI avec un ARDUINO UNO via un module ESP 8266 esp01 !....
pour cela , dans un premier temps, nous allons développer une application ultra simple qui va permettre d'allumer / eteindre , une diode LED, connectée sur l'ARDUINO UNO et ceci a partir d'une tablette d'un telephone ANDROID ou d'une connection internet en utilisant la connection WIFI de l'appareil ANDROID.
le materiel de base:
- une tablette ou un telephone android ainsi que l' IDE necessaire ( Interface de Développement ANDROID)
- un module ARDUINO UNO et l' IDE associé ( version PC ou tablette suivant vos preferences)
- un module WIFI ESP8266 ESP 01 => a commander sur internet ( cout moyen environ 5 a 7 euros piece)
- une LED de la couleur que vous voulez ainsi qu'une resistance d'au moins 200 ohms
- des cables de connexion
pour bread board
commentaires préliminaires :
l'objet de cette rubrique WIFIDROIDUINO est de vous donner quelques idées et solutions que j'ai utilisé pour ratteindre l'objectif recherché.
il n'est donc pas question
de vous former a la programmation ANDROID ni a la programmation ARDUINO ,
il vous faudra donc bien evidemment acquérir ces competences de base
indispensables par vous memes si ce n'est pas déja le cas.
le module emeteur recepteur wifi ESP8266:
connexion a l'arduino UNO:
quelques infos sur le ESP8266 :
liens utiles:
http://www.electrodragon.com/w/ESP8266
https://nurdspace.nl/ESP8266#Main_SI_.2F_SPI_control_.28optional.29
l' ESP8266 utilise des commandes AT pour les communications avec l'arduino , voici la liste des commandes principales:
connection a un point d'acces WIFI
AT+RST:
reinitialise le module ESP
AT+CWMODE=3:
passe l 'ESP8266 en mode 3 ( emetteur et recepteur a la fois), toujours
choisir ce mode , c'est plus simple
AT+CWLAP:
cherche les bornes WIFI actives
AT+CWJAP:
permet de se connecter a un point WIFI synthaxe : AT+CWJAP="nom
du point wifi","mot de passe securisé"
AT+CWJAP=?: verifie si la connexion a reussie
TCP Client
AT+CIPMUX=1
: permet laconnexion multiple
AT+CIPSTART=4,"TCP","192,168.1.104",9999
: connecte au serveur TCP distant ici avec adresse TCP : 192.168.1.104 (le
PC par exemple)
AT+CIPMODE=1: rentre en mode transmission de
données
AT+CIPSEND=4,5 :envoi des données via
le canal 4, données de 5 bits de longueur
TCP Serveur
AT+CIPSERVER=1,9999
: configure en mode serveur TCP sur le port 9999, (1 signifie Autoriser
)
AT+CIFSR : verifie l'adresse IP du module
premiere application simple
nous allons maintenant , charger dans l'ARDUINO un petit programme qui va permettre de tester la connexion WIFI a l'arduino avec un PC muni d'une carte WIFI et l'explorateur internet ( Firefox dans mon cas).
1°) le programme ARDUINO:
charger le programme ( ci contre a droite) dans votre interface ARDUINO puis compilez et telechargez le programme dans l'arduino ( connecté via le portUSB). vous pouvez copier coller le programme "webserver.ino" en cliquant sur ce lien webserver.ino
#include <SoftwareSerial.h>
#define DEBUG true
// broche 10 de l'arduino en RX et broche 11 en TX
: vous pouvez choisir d'autres broches
// connectez votre ESP8266 en mode croisé RX<=>TX
SoftwareSerial esp8266(10,11);
void setup()
{
Serial.begin(9600); // com serie de l' ARDUINO a 9600
bauds
esp8266.begin(9600); // ESP8266 a 9600 bauds
sendData("AT+RST\r\n",2000,DEBUG);
// reinitialise le module ESP8266
sendData("AT+CWMODE=2\r\n",1000,DEBUG);
// configure en TCP
sendData("AT+CWSAP?\r\n",2000,DEBUG);
// recupere nom et mot de passe de l' ESP
sendData("AT+CIFSR\r\n",1000,DEBUG);
// recupere l'adresse IP de l' ESP
sendData("AT+CIPMUX=1\r\n",1000,DEBUG);
// configure en connexion multiple
sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
// ouvre le serveur sur le port 80
}
void loop()
{
if(esp8266.available()) // teste si l'ESP envoi un message
{
if(esp8266.find("+IPD,")) // avance jusqu'a
trouver +IPD
{
delay(1000);
int connectionId = esp8266.read()-48;
// soustrait 48 parceque la fonction read() retourne
la valeur ASCII decimale , zero (0) par exemple vaut 48 en ASCII decimal
// ci dessous serie de commande qui renvoie du texte
sur le port serie (page web)
String webpage = "<h1>HELO</h1><h2>WORLD</h2><button>LED1</button>";
String cipSend = "AT+CIPSEND=";
cipSend += connectionId;
cipSend += ",";
cipSend +=webpage.length();
cipSend +="\r\n";
sendData(cipSend,1000,DEBUG);
sendData(webpage,1000,DEBUG);
webpage="<button>LED2</button>";
cipSend = "AT+CIPSEND=";
cipSend += connectionId;
cipSend += ",";
cipSend +=webpage.length();
cipSend +="\r\n";
sendData(cipSend,1000,DEBUG);
sendData(webpage,1000,DEBUG);
String closeCommand = "AT+CIPCLOSE=";
closeCommand+=connectionId; // fermer la connexion
closeCommand+="\r\n";
sendData(closeCommand,3000,DEBUG);
}
}
}
// fonction sendData utilisee pour initialiser l'
ESP
String sendData(String command, const int timeout,
boolean debug)
{
String response = "";
esp8266.print(command); // envoi le caractere a l' esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
char c = esp8266.read(); // lit le caracter suivant
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}
2°) ouvrir le moniteur serie de l'arduino:
la communication débute et une serie de caracteres et d'infos apparaissent, dont l'identifiant et le mot de passe de connexion ( ici ESP8266 et pswd:0123456789 ) ainsi que l'adresse IP du serveur : 192.168.4.1
3°) connectez vous en wifi a partir de votre PC:
ouvrez votre configurateur WIFI et lancer une recherche de reseau. vous devriez voir apparaitre un reseau appelé " ESP8266". le cas echeant , connectez vous a celui ci , le menu devrait ensuite vous demander le mot de passe securisé , tapez : 0123456789 et connectez vous .
4°) ouvrir votre navigateur internet et dans la barre de saisie taper l'adresse IP du ESP 8266 : 192.168.4.1
vous devriez voir apparaitre l'ecran ci contre a gauche:
si tout est OK , vous venez de faire votre premiere connexion WIFI entre votre PC et l'arduino via l'ESP8266 ....
en resumé , l'arduino UNO a envoyé un message WIFI via l'ESP, message que nous sommes allé consulter avec un PC en utilisant la connection WIFI du PCet le navigateur pour se connecter a l'adresse IP de L' ESp .
nous avons ici une ebauche des possibilité d'echanger avec l'arduino en utilisant le PC , on peut a l'inverse , a partir du PC faire agir l'arduino a distance va une connection WEB en cliquant par exemple avec la souris du PC sur le Bouton LED1 qui commanderai un relai via l'arduino . Bienvenu dans le monde de la Domotique et de l'Automatisme via le WIFI ... ce sera l'objet des prochains chapitres et tutos ....