ESP8266 + Arduino UNO

Bonjour,
Je désespère de faire fonctionner le wifi sur mon Arduino Uno avec la carte ESP8266 (ESP-01).
Je n'arrive pas à avoir le retour des commandes AT.
Comment faire ?

La seule chose que j'arrive à voir est de faire un reboot manuel et là à ce moment là j'ai ce message qui apparait (@74880 bauds)
C'est grave ?

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

Bonjour et Bienvenue

Prendre connaissance des consignes pour ce forum et de la nécessité de décrire complètement , sous tous les aspects, le problème rencontré.

-décrire le montage : liaison Rx/Tx, alimentation, adaptation du niveaux des signaux envoyés à l'ESP
-donner le programme Arduino utilisé (voir l'utilisation des balises pour placer du code dans les messages)

Le message de boot donne" RST cause 2,"

reset causes:
    0: 
    1: normal boot
    [color=red]2: reset pin[/color]
    3: software reset
    4: watchdog reset

ça resemble à un reset par insuffisance de tension et de courant , la tension s'est probablement écroulée quand l'ESP a appelé un courant élevé au démarrage (spontanné) du WiFi

Merci al1fch, effectivement c’est lié au reboot puisque c’est moi qui le fait manuellement.
Je rembobine avec les infos.

Voici le code que j’utilise sur mon Arduino Uno pour relier l’ESP8266 (ESP-01)

#include <SoftwareSerial.h>

// CABLAGE DE L'ESP
//-------------------------------------
//  TX:PIN 10       GND:GND       >>>>
//  CH_PD:VCC       GPIO2         >>>>
//  RST:(GND)       GPIO0         >>>>
//  VCC:VCC         RX:PIN 11     >>>>
//-------------------------------------

SoftwareSerial esp8266(10,11); // RX, TX

long Speed = 74880;

void setup() {
  Serial.begin(Speed);  
  while (!Serial) {}
  Serial.println("Serial ready");
    
  esp8266.begin(Speed);
  while (!esp8266) {}
  Serial.println("esp8266 ready");

  esp8266.println("AT");
}

void loop() {
  while (esp8266.available()) {
    Serial.write(esp8266.read());
  }
  while (Serial.available()) {
    esp8266.write(Serial.read());
  }
}

J’affiche le moniteur série à 74880 bauds et il est bien écrit “Serial ready” et “esp8266 ready”, en revanche aucun retour de la commande AT. Si je la saisie manuellement, rien non plus.
Les 2 diodes rouge et bleue sont allumées en continu.

Lorsque je relis le RST au GND, l’ESP redémarre et affiche le message ci-dessus.
Pendant le reset, la diote rouge reste allumée mais la diote bleue s’éteint, clignotte puis reste allumée en continu.

J’ai testé de relier l’ESP sur les pin 0 et 1 en reliant RX-RX et TX-TX et j’obtiens le même résultat…

Est-ce que quelqu’un a une piste pour me permettre de dialoguer avec l’ESP ??
Merci beaucoup

  1. aucune information sur ce qui alimente en 3,3V l'ESP-01
    Je vois au début du code dans la partie câblage un "VCC-VCC" qui laisserait penser que l'ESP est alimenté en 5V..... si oui il ne fera pas de vieux jours.

ai testé de relier l'ESP sur les pin 0 et 1 en reliant RX-RX et TX-TX

  1. dans une liaison série on relie un emetteur (TX) à un récepteur (RX)
    Il faut donc croiser les TX et RX de l'Arduino et de l'ESP-01

  2. en reliant la sortie TX de l'Arduino (de 0 à 5V) à l'entrée RX de l'ESP-01 tu prends un risque de surtension de ce dernier. Son fabricant ne répond pas de ce qui peut se passer au dessus de 3,3V sur une entrée. Si ton ESP-01 résiste, tant mieux pour toi.

  3. tu évoques l'utilisation de pins 0 et 1 de l'Arduino pour Rx et Tx

  • ça ne correspond pas au code Arduino présenté (pins 11 et 10)
    -les pins 0 et 1 d'une carte Uno sont déjà occupées avec le circuit qui va vers l'USB

Bref pour ce qui est de la 'bonne entente' entre Arduino et ESP-01 tu n'arranges pas les choses.....
As tu fait des recherches ? on dirait là un 'best of' de ce qu'il ne faut pas faire

-> Je te recommande le début de ce tutoriel de J-M-L ou la partie câblage ESP-01 / Arduino est traitée

Je te remercie encore al1fch, ton aide est précieuse !

Je te confirme, j’alimente bien l’ESP en 3.3V.
J’ai essayé à partir de l’Arduino directement et même depuis une alimentation indépendante en 3.3V.
J’ai pris quelques photos du câblage.

Grâce à ton lien j’ai relié le Reset de l’ESP en Pin 7 histoire de le rebooter au démarrage par le code (plutôt qu’à la main) mais le résultat est toujours le même => les commandes AT ne retournent aucune information.

Voici mon code à jour ci-dessous.
Si vous avez une piste ?

#include <SoftwareSerial.h>

//  TX:10          GND:GND    >>>>
//  CH_PD:VCC      GPIO2      >>>>
//  RST:7          GPIO0      >>>>
//  VCC:3,3V       RX:11      >>>>

const byte hardResetPIN = 7;

SoftwareSerial esp8266(10,11); // RX, TX
long Speed = 74880; // bauds


void setup() {
  pinMode(hardResetPIN, OUTPUT);

  Serial.begin(Speed);  
  while (!Serial) {}
  Serial.println("Serial ready");
    
  esp8266.begin(Speed);// 74880 : port de retour de l'ESP
  while (!esp8266) {}
  Serial.println("esp8266 ready");

  // Reboot de l'ESP
  digitalWrite(hardResetPIN, LOW);
  delay(500);
  digitalWrite(hardResetPIN, HIGH);
  delay(1000);
  
  // Appel des commandes AT
  esp8266.write("AT");  
}

void loop() {
  while (esp8266.available()) {
    Serial.write(esp8266.read());
  }
  while (Serial.available()) {
    esp8266.write(Serial.read());
  }
}

Je ne sais pas si ça aidera, mais ceci doit être un unsigned long

unsigned long Speed = 74880; // bauds

Bonsoir

Le débit de atypique de 74880 bauds est 'provisoire' il n'est utilisé brièvement que par le bootloader, tout le dialogue en commandes AT se fait a un autre débit dépendant de la version du firmware .

Essayer 9600 bauds et 115200 bauds

D'autre part certains firmwares attendent une terminaison de ligne après la commande AT.
essayer esp8266.println(AT)

De toutes façons esp8266.write () ne peut envoyer une commande entière