Arduino Ep.16 - Installation du module Wifi ESP8266

Schéma pour commençer

Schéma pour initialiser automatique l'ESP8266

Code pour initialiser automatique l'ESP8266

#include <SoftwareSerial.h>

SoftwareSerial ESP8266(10, 11);

String NomduReseauWifi = "Entrez le nom de votre Box ou point d'accès Wifi"; // Garder les guillements
String MotDePasse      = "Entrez le nom du mot de passe de votre Box ou point d'accès Wifi"; // Garder les guillements

/****************************************************************/
/*                             INIT                             */
/****************************************************************/
void setup()
{
  Serial.begin(9600);
  ESP8266.begin(9600);  
  initESP8266();
}
/****************************************************************/
/*                        BOUCLE INFINIE                        */
/****************************************************************/
void loop()
{
   while(ESP8266.available())
   {    
     Serial.println(ESP8266.readString());
   }   
}
/****************************************************************/
/*                Fonction qui initialise l'ESP8266             */
/****************************************************************/
void initESP8266()
{  
  Serial.println("**********************************************************");  
  Serial.println("**************** DEBUT DE L'INITIALISATION ***************");
  Serial.println("**********************************************************");  
  envoieAuESP8266("AT+RST");
  recoitDuESP8266(2000);
  Serial.println("**********************************************************");
  envoieAuESP8266("AT+CWMODE=3");
  recoitDuESP8266(5000);
  Serial.println("**********************************************************");
  envoieAuESP8266("AT+CWJAP=\""+ NomduReseauWifi + "\",\"" + MotDePasse +"\"");
  recoitDuESP8266(10000);
  Serial.println("**********************************************************");
  envoieAuESP8266("AT+CIFSR");
  recoitDuESP8266(1000);
  Serial.println("**********************************************************");
  envoieAuESP8266("AT+CIPMUX=1");   
  recoitDuESP8266(1000);
  Serial.println("**********************************************************");
  envoieAuESP8266("AT+CIPSERVER=1,80");
  recoitDuESP8266(1000);
  Serial.println("**********************************************************");
  Serial.println("***************** INITIALISATION TERMINEE ****************");
  Serial.println("**********************************************************");
  Serial.println("");  
}

/****************************************************************/
/*        Fonction qui envoie une commande à l'ESP8266          */
/****************************************************************/
void envoieAuESP8266(String commande)
{  
  ESP8266.println(commande);
}
/****************************************************************/
/*Fonction qui lit et affiche les messages envoyés par l'ESP8266*/
/****************************************************************/
void recoitDuESP8266(const int timeout)
{
  String reponse = "";
  long int time = millis();
  while( (time+timeout) > millis())
  {
    while(ESP8266.available())
    {
      char c = ESP8266.read();
      reponse+=c;
    }
  }
  Serial.print(reponse);   
}

Fichier attaché: 

Commentaires

Portrait de beboxes

Bonsoir,

J'ai réussi à connecté mon ESP à mon arduino. Je souhaiterai simplement appelé une URL (webservice) qui effectuerait un insert dans ma base de donnée et renvoyer un réponse.

La partir serveur est crée et fonctionne lorsque j'appelle mon URL.

Cependant, j'ai des difficultés à appeler l'URL depuis m'on arduino. Auriez-vous des conseils à me donner?

Je suis en train de considéré l'achat d'un shield WIFI qui, à première vue, me simplifierai ce type d'échange. Qu'en pensez vous?

Merci par avance,

Cdt,

Boris

Portrait de Georges

Bonjour à tous...

Alors je suis un passionné des systèmes embarqués et je me suis procurer un module ESP8266 esp-07, pour un projet et j'arrive pas à le faire fonctionner. J'ai essayé de suivre les étapes du tuto mais toutes les commandes que je rentre dans le moniteur serie ne passent pas
Si je pourrais avoir de l'aide svp

Portrait de Dennissking

Salut georges,moi ca ne marchais pas la premiere étapes,les commande ne passait pas non plus.Passe ala 2ieme étape et suis le code modifié de cyril.pour moi ca fonctionné.bye bonne chance.

Portrait de Nazer

Bonjour,

J'ai un soucis, le code précédant fonctionne mais les valeurs renvoyées par l'ESP sont incompréhensibles... Si quelqu'un connaît la solution à ce problème je suis preneur ! Merci d'avance

Bonne journée

Florian

**********************************************************
**************** DEBUT DE L'INITIALISATION ***************
**********************************************************
**********************************************************
)kßÊÿ**********************************************************
)1I;ø)kßÊÿ**********************************************************
**********************************************************
)1I;ø**********************************************************
**********************************************************
***************** INITIALISATION TERMINEE ****************
**********************************************************

)kßÊÿ
)1I;ø

Portrait de Dennissking

désolé pour le poste en double,je croyais qu'il n'était pas partie,bye tlm.

Portrait de Domi94

Bonjour à tous et merci à Alex pour ses riches vidéos. Je suis ingénieur retraité et débutant en IT et qui dispose maintenant de plus de temps pour découvrir les nouvelles technologies de systèmes et de programmations.

Moi aussi je n'arrive pas à faire communiquer la carte ESP8266 à l'Arduino Uno et n'ai aucun retour lorsque je rentre la première ligne de test AT + RST. L'alim est en 3.3 V à partir de la carte Arduino, les connexions RX et TX st biens croisées, le pgm blink test est chargé et fonctionne, le port USB reconnu est COM6 etc...et le cablage est Ok. J'ai acheté un mini module ESP8266 (version améliorée) par le site Les Elec.com.... Merci pour votre aide afin de faire avancer mon projet ....

Portrait de Mouraps

Bonjour Domi,

J'ai eu exactement le problème et j'ai inversé le câblage de Tx Rx faut pas les croisés comme indiqué dans la vidéo et ça marche. Je sais c'est bizzare et c'est pas logique c'est uen astuce que j'ai lu dans le premier commentaire de la vidéo .

Tiens moi au courant si vous avez réglé le problème.

Portrait de Domi94

Bonsoir Mouraps et autres adhérents à ce blog,

Tout d'abord, merci pour ton aide et aussi désolé pour ma réponse tardive. Depuis j'ai acheté 2 nouveaux ESP01 -8266 car le tout premier m'indiquait un affichage fixe de la Led bleue depuis quelques jours et peu d'info lisibles sur le moniteur série. Je n'ai pourtant pas fait de fausse manip, ni de court-circuit ... Je vais essayé de flasher l'eeprom pour l'utiliser sans la carte Uno, si tu as une reco, je suis preneur, mais peut être que la carte est définitivement HS, si c'est le cas, ce n'est pas la catastrophe.

Donc j'ai refait mes expériences méthodiquement comme spécifié par Alex et euréka la connexion Wifi fonctionne  et est bien reconnu autour de ma plate forme d'essais, donc ça progresse doucement ...

Maintenant j'aimerai passer à la phase 2 et trouver les codes qui vont bien pour réaliser 2 projets en mode dépendant (càd connecté au PC)  et en mode autonome Wi Fi (càd sans PC à proximité, mais accroché à  un routeur ) connectés ds les 2 cas à un réseau local. Nous pourrons envisager par la suite une connexion distante en utilisant le réseau internet, mais attention il faut rester prudent pour bien sécuriser le système contre les acte de malveillance.

Le pb en mode autonome c'est de disposer d'espace mémoires ds les micro-contrôleurs pour stocker en mode serveur les fichiers HTML et accéder au URL avec les smart phones ou tablettes ...

Je regarde également les appli de commande et de contrôle existantes disponibles et faciles à mettre en oeuvre, mais je pense qu'un outils comme "app inventor" est probablement plus performant, mais pas facile à assimiler de prime abord pour ma part....

Peut être que d'autres adhérents st intéressés par ces sujets passionnants et développements afin  de constituer un groupe de travail et qu' Alex pourra nous donner quelques conseils avisés.

J'aurai aimé trouver sur ce forum davantage d'info et de suites aux différentes vidéos sur les modules ESP qui malheureusement ne sont pas totalement terminés .... Merci de ton (ou de vos) éclairage et de m'indiquer si il y a d'autres demandeurs intéressés par ces expériences en "Open Source" et de les partager tous ensembles.

Donc à très bientôt j'espère ...

Bien cordialement à tous .

Portrait de Gekido

Salut a tous. 

J'ai connecté mon ESP8266-01 à mon arduino et les premières commandes 

fonctionnent bien. 

Mais au moment de connecter a mon WIFI il me renvoi bien WIFI CONNECTED mais au bout de 

quelques secondes il me renvoi

WIFI DISCONNECTED 

+CWJAP:1 

FAIL

Est ce que quelqu'un sait de quoi ça vient ?

Merci

Portrait de Julius

Salut,

Je veux configurer mon esp8266 version 1 comme acess point(AP) et j ai quelques questions.
1) Est il posssible de configurer directement mon ESP8266 à l aide de la memoire Flash de mon ESP8266 sans utiliser l arduino ou soit un MCU ? si oui  comment?
2)est ce que je peut utiliser CoolTerm comme Tools?

Portrait de Dionysos

Bonjour,

Merci pour ce tuto, un des rares à proposer un échange de données en utilisant le sketch sur Arduino et non pas sur l'ESP8266 et pour les commentaires.

Si ça peut servir, je raconte ma démarche, après 2 jours de Doliprane..

Comme je suis candide en robotique, j'avais fait l'acquisition d'un shield ESP-13, soit-disant "prêt à l'emploi" comme celui-ci XC4614 chez Jaycar (puce Wifi 8266MOD de AI-THINKER), en croyant m'épargner quelques soucis. Mais comme il y a peu d'infos sur cette carte, je tourne en rond.
Je reliais l'Arduino Mega (5V, Gnd, pin 10 Rx et pin 11 Tx) au shield, sur les pin UART (5V, G, Rx et Tx) du côté inscrit "Arduino". Les switch bleus du shield étant bien sûr basculés sur OFF (sur 1 et 2). Et comme pour d'autres ici, le moniteur série affrichait une série de lignes étoilées qui me laissaient rêveur, dans les étoiles, sans information en retour de la part de l'ESP.

Depuis que j'ai relié l'Arduino Mega (3.3V, Gnd, pin 10 Rx et pin 11 Tx) au shield, respectivement sur les pin UART (3.3V, G, Tx0 et Rx0) du côté inscrit "ESP13" sur le shield, tout va bien. Je reçois correctement les infos de l'ESP.

Pour info :

  • J'ai utilisé intégralement le sketch proposé par Cyril.
  • Données du firmware initiales (non mis à jour) : AT version:0.40.0.0(Aug  8 2015 14:45:58) ; SDK version:1.3.0 ; Ai-Thinker Technology Co.,Ltd. ; Build:1.3.0.2 Sep 11 2015 11:48:04

 

Concernant d'autres causes potentielles de non communication (et donc d'absence d'affichage des réponses ou présence de caractères incompréhensibles entre les lignes étoilées),  il me semble qu'on peut évoquer

  • un mauvais contact des pins : source de hiéroglyphes ;
  • une vitesse inadaptée : tous les modèles/versions d'ESP ne comprennent pas toutes les instructions AP. C'est le cas du mien qui répond ERROR à l'instruction AT+CIOBAUD? !! On croit paramétrer la vitesse alors qu'elle reste inchangée. La vitesse a pu être modifiée (malencontreusement) antérieurement (le mien était à 115200 Bds et a mémorisé 9600 Bds) et on a tout faux ! Dans ce cas, tester avec les vitesses les plus fréquentes : 115200, 9600... Ou bien, pour partir sur un bon pied, si la connexion est établie bien évidemment, on peut restaurer les paramètres d'origine avec AT+RESTORE.
  • La tension aux bornes des pins : avec mon shield qui accepte 5V et 3.3V, je fais le même constat ci-dessus que Nazer (des hiéroglyphes reçus au milieu du texte correct) si je branche du 5V au lieu de 3.3v et inversement, aux pins de communication Rx et Tx.
Portrait de Dionysos

Suite...

Finalement, j'ai pu embrocher le shield sur la Mega et simplifier les connexions :

esp8266.jpg

Pin 10 (Rx) côté "Arduino" du shield -> pin Tx0 côté "ESP13" du shield
Pin 11 (Tx) côté "Arduino" du shield -> pin Rx0 côté "ESP13" du shield

C'est beaucoup plus simple. Ceci dit, la Mega possède plusieurs Rx et Tx, elle ne nécessite pas d'occuper inutilement les pins 10 et 11 ;)

Portrait de Dionysos

Je regarde également les appli de commande et de contrôle existantes disponibles et faciles à mettre en oeuvre, mais je pense qu'un outils comme "app inventor" est probablement plus performant, mais pas facile à assimiler de prime abord pour ma part....

Pour répondre à Domi94, j'ai utilisé en Bluetooth l'app Virtuino (actuellement seulement disponible pour Android) qui est d'une mise en oeuvre enfantine, une fois qu'on assimilé les subtilités des pins virtuels qui permettent de tout suivre : les valeurs des entrées sorties, digitales, analogiques ou des variables personnalisées en tous genres (mesures, états...) avec des widgets conviviaux et ultra-paramétrables.

Virtuino peut aussi se connecter en Wifi. J'espère que ce sera pour moi aussi aisé qu'en BT.

Portrait de QUENTIN HUYS

Bonjour tout le monde ! 
Merci pour ce tuto très bien fait ! 
 

Après avoir passé l'étape 1 avec succès ( tout a bien fonctionné) je suis coincé à la seconde étape où on doit définir les pins 10 et 11 RX et TX. 
Pareil que pour d'autres la voie série m'indique : 
**************** DEBUT DE L'INITIALISATION ***************
**********************************************************
**********************************************************
**********************************************************
**********************************************************
**********************************************************
**********************************************************
**********************************************************
***************** INITIALISATION TERMINEE ****************

J'ai alors essayé de changer les rx et tx: sans succes.  Je ne comprend toujours pas pourquoi nous avons besoin d'une alimentation externe ? J'ai pourtant réussie à la première étape grace aux AT, de communiquer avec L'ESP-01 : se servir de L'ESP en serveur. J'arrive a recevoir des messages que j'envoi grâce a mobiltel.net sur ma voie série. Tout ma l'aire correct et tout fonctionne à pars le second programme 
<incompréhension>

Merci de votre aide !!!

Portrait de Gantfasia

Bonjour,

Est ce que quelqu'un sais à quoi sert la broche CH_PD ?

merci d'avance

Portrait de panter
  1. GND (Ground from power supply)
  2. GPIO2 (Digital I/O programmable)
  3. GPIO0 (Digital I/O programmable, also used for BOOT modes)
  4. RX – UART Receiving channel

On the bottom (second row) you can find:

  1. TX – UART Transmitting channel
  2. CH_PD (enable/power down, must be pulled to 3.3v directly or via resistor)
  3. REST  – reset, must be pulled to 3.3v)
  4. VCC  -3.3v power supply
Portrait de panter

j'ai trouvé cela

//always high
int CH_PD_8266 = 53;

void setup() {
  Serial.begin(9600);
  Serial3.begin(9600);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LEDst);
  pinMode(CH_PD_8266, OUTPUT);
  digitalWrite(CH_PD_8266, HIGH);
}
Portrait de panter

ou en es tu de ton montage ?

Portrait de panter

Bjr

Tout est ok pour les connexions  le prog a l'air de fonctionner  je vois le SSID    le prog boucle est ce normal ?

sinon  et après  comment peut on voir une utilisation concrète ?   merci 

Portrait de kamal

BONJOUR,merci infiniment pour ce petit tuto qui a bien expliquer le fonctionnement de esp8266 mini sur UNO3, toute est bon, c'est vous permit de vous demendez  un petit code pour le code que vous avez publier on a joutons une LED ou un RELAIS  que on peut comander par 192.168.x.x/on1 pour allumer la LED et 192.168.x.x/off1 pour eteindre la LED. merci infifniment pour votre aide

Portrait de christuf

Bonsoir et merci beaucoup pour ces tutos géniaux !
Je n'arrive pas à avoir un retour sur des commandes AT :(
J'arrive juste à avoir ce message (@74880 baud) lorsque je fais un reset manuel de l'ESP.
=> est-ce que ça vous dit quelque chose ?
Merci d'avance,

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 2408, room 16 
tail 8
chksum 0xe5
load 0x3ffe8000, len 776, room 0 
tail 8
chksum 0x84
load 0x3ffe8310, len 632o tail 8
chksum 0xc 8
 ten 
Spd  z  d  O Il zM:b5B2 mo e 0
rf cal sector: 249
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 2.0.0(5a8aci u91::p r5pe1

Portrait de Desquiens Gabriel

bonjours désoler de vous déranger mais je n arrive pas a faire fonctionner l'esp8266 .  je fait tou biens comme dans le tuto  que ca soit les branchement ou les commande AT mais je n'arrive pas a faire la premier partie je voudrais bien comprendre pourquoi . 

cordialement gabreil 

Portrait de Glaeyr

Super article! Par contre j'ai l'impression que sur certains ESP les TX/RX sont inversés, et donc les deux cables sont a échanger.

J'ai aussi trouvé cet article sur le sujet https://www.atrakeur.com/blog/diy/wifi-avec-arduino-et-esp8266/

En gros on utilise le même montage que sur ta video pour flasher nodeMCU sur l'esp8266 et avoir toute la puissance du lua au lieu de se compliquer avec les commandes AT.

Portrait de Anonyme

Je ne comprends comment cela peut marcher, ces modules, pour être programmés doivent être mis sous tension avec la pin GPIO0 à la masse ce qui n'est pas dit ici donc j'ai un gros doute sur le fonctionnement suivant la vidéo !

Pour ceux qui ont eu le problème mettez un fil entre GPIO0 et le masse avant de mettre la carte Arduino sous tension puis retirez ce fil pour lancer le programmation !

Portrait de beny3501

Je viens de faire l'acquisition d'une ESP8266 et après de multiples essais ma carte est en 115200 et du coup j'essayais de la passer en 9600 mais a chaque fois j'obtenais "ERROR" avec la commande AT+CIOBAUD. Après reharche sur internet il faut dans certains cas remplacer la commande AT+CIOBAUD par AT+IPR

Ce qui donne dans l'init du programme : envoieAuESP8266("AT+IPR=9600");

Portrait de 3000

bonjour  je souhaiterai envoyé une commande get à mon serveur avec CPISEND. Mon site est en https://......fr 

j'ai un retour : "the plain HTTP request was sent to HTTPS port" que puis faire ?

merci d'avance pour votre aide

Portrait de Christophe M

Bonjour a tous

Merci pour tous vos commentaires. Je suis parvenu a faire fonctionner arduino avec esp8266.

Je souhaite faire communiquer ensemble plusieurs arduino ensemble par wifi.

Qu elles sont les commandes at necessaires?

Merci

Portrait de Gilles54

Bonjour, je conseille à ceux dont les commandes AT ne fonctionne pas d'essayer ce tuto :

https://projetsdiy.fr/esp-01-esp8266-flasher-firmware-origine/

c'était mon cas j'avais installé un programme d'essai dans la ram de l'esp8266 du coup cela remplace la possibilité d'executer les commandes AT du sketch du présent tuto ...

On les réinstalle avec esp8266 flasher (le mode d'emploi est dans le tuto:projetsdiy.f)

Voilà j'espère que cela va aider certains d'entre vous. Pour moi cela a réglé tous mes problèmes...

A+

Pages