Question:
Arduino génère des valeurs de déchets sur un moniteur série avec ESP8266
abdul rahuman
2015-11-25 19:49:28 UTC
view on stackexchange narkive permalink

J'ai connecté mon Arduino à un ESP8266.

Quand je vérifie l'ESP8266, en entrant manuellement des commandes sur le moniteur série, j'obtiens des résultats corrects.

Cependant, lorsque je lance ce programme

  # include<SoftwareSerial.h>SoftwareSerial esp8266 (2,3); void setup () {Serial.setTimeout (5000); Serial.begin (115200); esp8266.begin (115 200); delay (1000);} void loop () {delay (2000); Commande de chaîne = "AT"; esp8266.println (commande); if (esp8266.available ()) {while (esp8266.available ()) {char c = esp8266.read (); Serial.write (c); }}}  

J'obtiens des valeurs inutiles là où il y a parfois un OK entre la sortie:

"Reçu:" ÁT OK "Reçu:" AÔ ÏË "Reçu:" AÔ OK "Reçu:" ÁT ÏË "Reçu:" ÁT OË "Reçu:" ÁÔ OK "Reçu:" Á¬ OK "Reçu:" ÁT OË "

Quelqu'un pourrait-il m'aider?

Votre moniteur série est-il configuré pour 115200? Avez-vous vérifié l'ESP avec un moniteur série à 115200? Pouvez-vous poster les ordures? Avez-vous regardé les fils avec un oscilloscope?
Ouais frarugi87. J'ai gardé le moniteur série à 115200.
Ok @abdul rahuman, essayez d'utiliser `if (esp8266.available ()) {Serial.print (" Received: \ ""); while (esp8266.available ()) {char c = esp8266.read (); Serial.write ( c);} Serial.println ("\" "); } `et renvoyez la sortie du moniteur série
@frarugi87 j'ai ceci sur votre code. «Reçu:« ÁTOK »Reçu:« AÔÏË »Reçu:« AÔOK »Reçu:« ÁTÏË »Reçu:« ÁTOË »Reçu:« ÁÔOK »Reçu:« Á¬OK »Reçu:« ÁTOË »
@frarugi87 comme vous pouvez le voir, il imprime parfois OK mais il imprime une combinaison de déchets avec OK. alors aidez-moi s'il vous plaît.
Comment alimentez-vous votre ESP8266? est-ce de 3.3v d'arduino. Je recommanderais de l'alimenter séparément. J'ai eu ces problèmes et quand je l'ai alimenté en utilisant le régulateur LM1117, cela a fonctionné. De plus, si vous travaillez sur une maquette, vous rencontrerez des problèmes similaires en raison d'une connexion lâche. Essayez de souder les connexions.
Je l'ai maintenant flashé avec une version plus récente du firmware. Maintenant, le problème des valeurs de déchets est réduit. Je veux dire réduit mais pas complètement parti. J'obtiens maintenant la réponse réelle entre un tas de valeurs de déchets. Mais cela fonctionne parfaitement parfois. @Sherin Mathew
J'ai été confronté à ces problèmes le mois dernier. Mais maintenant, cela fonctionne bien après avoir passé trop d'heures d'essais et d'erreurs. J'essayais d'utiliser ESP8266-01 avec Arduino pour allumer une lampe fluorescente. Je suis capable de le faire maintenant sans utiliser arduino. J'utilise uniquement l'ESP8266-01 avec nodemcu. Cela fonctionne parfaitement depuis quelques semaines. Veuillez nous faire savoir ce que vous essayez de faire afin que nous puissions vous aider à décider si arduino est nécessaire dans votre cas.
J'essaie de contrôler les relais et de créer un cloneur IR. @Sherin Mathew
Trois réponses:
Grant
2015-12-29 12:41:16 UTC
view on stackexchange narkive permalink

Comme l'a noté Matt, le débit en bauds de l'ESP8266 peut varier en fonction de la version du firmware / du fabricant. 9600 et 115200 sont les plus courants. Si vous pouvez vous connecter à l'aide d'un programme de terminal série (comme CoolTerm), vous pouvez alors tester le débit en bauds.

Il semble que l'ESP8266 est réglé sur 115200, mais d'après mon expérience (et d'autres), SoftwareSerial ne l'est pas. capable de 115200 bauds (malgré "autoriser" ceci comme paramètre). Certains rapports suggèrent qu'une hauteur de 57600 est réalisable, bien que, d'après mon expérience, 9600 soit le meilleur pour la fiabilité. Mais vous pouvez réinitialiser cela et voir quelle est la valeur fiable maximale pour vous dans votre configuration.

Comment changer le débit en bauds sur l'ESP8266 dépendra de la version du firmware. J'ai eu du succès avec AT + IPR = 9600 . Vous n'avez besoin d'exécuter cette commande qu'une seule fois (c'est un paramètre persistant). Je suggérerais, d'après votre description, que c'est le coupable le plus probable qui soit à l'origine de la sortie intermittente de «déchets» que vous décrivez.

tgraupmann
2017-10-15 22:34:42 UTC
view on stackexchange narkive permalink

Utiliser 115200 a trop d'instructions pour que l'Arduino Uno décode les caractères de manière fiable et c'est de là que viennent les déchets.

Le baud par défaut de l'ESP8266 est 115200, vous devez donc vous connecter au débit par défaut et émettez une commande AT pour réduire la vitesse de transmission à 9600.

Chaque fois que vous réinitialisez, l'ESP8266 revient à la vitesse de transmission par défaut.

Voici un exemple de script qui se connecte à la valeur par défaut débit en bauds, puis le réduit à 9600. Vous connecterez le moniteur série à 9600. Au débit en bauds inférieur, je n'obtiens aucun caractère indésirable.

  #include <SoftwareSerial.h>SoftwareSerial ESPserial (2, 3); // RX | TXvoid setup () {Serial.begin (9600); ESPserial.begin (115200); ESPserial.println ("AT + IPR = 9600"); retard (1000); ESPserial.end (); // Démarre le logiciel série pour la communication avec l'ESP8266 ESPserial.begin (9600); Serial.println ("Prêt"); ESPserial.println ("AT + GMR");} void loop () {// écoute la communication de l'ESP8266, puis l'écrit sur le moniteur série if (ESPserial.available ()) {Serial.write (ESPserial.read ( )); } // écoute les entrées de l'utilisateur et l'envoie à l'ESP8266 if (Serial.available ()) {ESPserial.write (Serial.read ()); }}  

Une chose étrange qui m'est arrivée est que j'ai essayé d'utiliser un débit en bauds de 4800 et j'ai assemblé un module ESP8266. Je ne sais pas si c'était un problème ou juste une coïncidence.

Génial. Après avoir essayé cela, mon esp8266 clignote en bleu led bloqué à plusieurs reprises dans une boucle. Bonne réponse. +1000.
Rosa
2018-01-25 16:53:34 UTC
view on stackexchange narkive permalink

Utiliser AT + IPR est une commande très dangereuse. De nombreux ESP8266 seront bloqués après la commande. La seule façon de le faire est de faire clignoter votre ESP à une vitesse de 9600 bauds.

J'ai juste dû le faire moi-même avec un ami aujourd'hui après avoir utilisé la commande AT + IPR et de nombreux sites Web vous disent de ne jamais utiliser la commande.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...