communication Arduino-ESP8266

bonjour,
je viens de recevoir mes ESP8266-01
L’ESP communique avec la UNO par SoftwareSerial sur les broches 10 et 11, comm. initialisée à 115200 bauds (j’ai essayé d’autres baudrates et là il n’y a plus aucune comm)

J’envoie quelques commandes AT pour voir, l’ESP répond, mais c’est bien bizarre:

envoi:
AT+RST
reçoit:
AR)RSjCH⸮H⸮j⸮H⸮
 d⸮s Jan  8 1013,rst cauq⸮:2, boot mode:(3,7)
envoi:
AT+CIFSR
reçoit:
- <Pե⸮⸮⸮*⸮⸮Hd%F*-⸮P⸮
⸮⸮őq⸮⸮⸮r⸮r⸮j
+CIFSR:APMAC,"53:02:91:b0:4

Donc il semble que l’ESP comprenne mes commandes, réponde, mais des parties de ses réponses sont souillées.
Si c’était un problème global de baudrate, tous les caractères seraient abimés, mais là des bouts de trame semblent corrects (on voit une adresse MAC … enfin un bout).

C’est un montage sur breadboard, l’ESP est relié à la UNO par des fils de 15 cm.

Déjà vu ? un avis ?

J’ajoute que j’ai bien alimenté l’ESP en 3.3V, je n’ai pas divisé la tension sur le RX de l’ESP car j’ai lu qu’il était protégé et qu’on pouvait câbler TX(Uno)->RX(ESP) direct, en 5V donc.
De même la liaison TX(ESP)-RX(Uno) est directe … donc la Uno reçoit du 3.3 V. Pareil, j’ai lu que ça marchait quand même.

Bonsoir

SoftwareSerial fonctionne mal à 115200 bauds

Concernant le 5V sur l'entrée RX d'un ESP8266 on lit sur le web 'tout et son contraire'
Aucun document officiel d'Espressif n'annonce "5V tolerant' pour les GPIO (ce serait un 'plus' pour le composant et tout fabricant de composant 3,3V mentionne cela quand il en est certain )

Il semble que ce composant résiste assez bien aux mauvais traitements.... de là à généraliser et dire que tous les ESP8266 supportent indéfiniment 5V sur des entrées conçues pour 3,3V .........

Comme d'autres sur ce forum je me cale en général sur les 'Datasheet' pour assurer le fiabilité des montages mais chaucun fait comme il l'entend avec ses composants :slight_smile:

d⸮s Jan 8 1013,rst cauq⸮:2, boot mode:(3,7)

Ceci semble indiquer un reset de l'esp8266.

Oui et la cause la plus fréquente est un reset par manque d'alimentation
Un ESP8266 peut par moment avoir besoin de plus de 300mA, il lui faut un régulateur 3,3V 500mA dédié.
Celui de la carte Arduino ne permet pas à un ESP8266 de fonctionner d emanière stable WiFi allumé...... malgré ce que laissent croire certains 'tutos'

lesept:
Ceci semble indiquer un reset de l'esp8266.

Normal après une commande AT+RST !

Bon je vais essayer d'intercaler cet appareil pour adapter les niveaux. Parce qu'en fait on dirait que l'ESP comprend les questions (malgré le 5V) et que l'arduino comprend certains octets et pas d'autres, probablement du fait du 3.3V

OK, j’ai installé ce convertisseur 5V<->3.3V , apparement ça ne change rien !
J’ai aussi utilisé un 2nd ESP8266 … pareil.

al1fch:
SoftwareSerial fonctionne mal à 115200 bauds

Aïe. Difficile d’utiliser la ligne série hard (UNO), j’en ai besoin pour déboguer, y-a-t-il une technique ?

Sinon je peux demander à l’ESP de passer en 9600 bauds

SoftwareSerial Esp8266 ( 10, 11 );
Esp8266.begin ( 115200 );
Esp8266.print ( "AT+CIOBAUD=9600\r\n" );
delay ( 10 );
Esp8266.begin ( 9600 ); // AI-JE LE DROIT DE REPROGRAMMER CET OBJET ??

J’ai essayé, ça ne donne rien (la Uno ne reçoit plus rien).

Et puis aussi, il y a une part de reproductibilité dans les réponses de l’ESP. Voici 2 boots successifs, → est la question, ← est la réponse

********************************
-> AT+RST
<- AR)RSjCH⸮d⸮m⸮H⸮
 ets Jan  8 3013,rst cause:2, boot mode:(3,7)

-> <AT+CIFSR
<- AZ⸮⸮R⸮*⸮⸮Ht%F*5
AIX.!0927168.4.1"
+CIFSR:APMAC,"53:02:91:b0:4
********************************
-> AT+RST
<- <AR%⸮)U⸮H⸮H⸮j⸮H⸮
 ets Jan  8 3013,rst cause:2, boot m⸮V⸮'ib⸮Jj

-> AT+CIFSR
<- AR)⸮ICQR
Ch%F*5⸮P⸮
⸮⸮⸮ʒr⸮⸮⸮r⸮r⸮j
+CIGSR:APMAC,"53:02:91:b0:4

Si le driver série marche mal, c’est bizarre qu’il le fasse à peu près toujours au mêmes endroits `?

Bonjour

D'où sort le 3,3 Volts qui alimente l'ESP01 ?

bin, de la Uno pardi... je crois savoir ce que tu vas répondre ... mais j'ai pas d'alim 3.3 Volts, va falloir que j'en commande une..

Et si tu ajoutes un petit delay avant l’affichage de la réponse (celle qui commence par ← ) ?

Je fais déjà ça. J’ai essayé 10 ms, puis 1s, c’est pareil.

// ==================================================
void SendEsp ( const char* command, char* reponse, const int maxsize, unsigned long timeout_ms )
{
  Serial.print ( "-> <" ), Serial.print ( command ); Serial.println ( ">" );

  Esp8266.print ( command );
  delay ( 1000 );
  memset ( reponse, 0, maxsize );
  char* p = reponse;
  *p = '\0';
  long int starttime = millis(); 
  while ( ( millis() - starttime ) < timeout_ms )
  {
    while ( Esp8266.available() )
    { 
      char c = Esp8266.read();
      if ( p - reponse < maxsize )
        *p++ = c;
    } 
    reponse[maxsize-1] = '\0';
  }
  
  Serial.print ( "<- <" ), Serial.print ( reponse ); Serial.println ( ">" );
}

Tu peux essayer de modifier ton code en t'inspirant du tuto de Nick Gammon, mais ça ressemble déjà pas mal...

Bonjour, Je ne comprend pas .

Pas possible de passer une commande AT sur mes cartes NODEMCU esp8266 ou uno D1 Wemos 8266. pas possible d écrire un texte sur la console ,sur une carte nano sans wifi sa fonctionne , si je verse le programme scan de l exemple j ai bien le wifi de ma box détecté . J ai lu et relu tout le forum pour comprendre mais je ne trouve pas le problème .
SI je rentre le programme blinc la lette du wiffi clignote

Merci d avance pour le renseignement

Quand vous téléversez un sketch, vous écrasez ce qu'il y avait avant. En téléversant le sketch pour scanner, vous avez écrasé le firmware d'origine qui fournissait les commandes AT.

NODEMCU et Wemos, connais pas.

Pour récupérer les commandes AT j'utilise esptool.py. Il y a peut-être plus simple.

hello,
j'ai reçu cette alimentation 3.3V pour breadboard, je l'ai installée.
Mon ESP8266 est maintenant alimenté par cette alim, et non plus par la carte UNo.

Ca ne change rien !
comme vous m'avez dit, je soupçonne SofwareSerial de pédaler dans la semoule à 115200 baud.
en utilisant Serial à la place (broches 0 et 1), ça communique bien. Mais c'et pénible à déboguer !

Tu peux essayer une autre bibliothèque, je crois qu'il existe un truc comme altsoftserial

lesept:
Tu peux essayer une autre bibliothèque, je crois qu’il existe un truc comme altsoftserial

Tout comme un aveugle peut essayer une autre paire de lunettes!

:sunglasses: