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 ....