Serial.read retourne -1

Bonjour,

J'ai tenté de connecter un ESP8266 en TX/RX à mon Arduino, en envoyant des données depuis l'ESP en faisant :

Serial.print("bonjour");

Et sur l'Arduino je fais :

Serial.read();

Et ça me retourne -1, et si je fais un Serial.available(); il me retourne "0".

Avez-vous une idée d'où cela pourrait venir ?

Merci !

bonjour

expliquez comment tout cela est connecté / alimenté et postez les codes des deux plateformes

(rappel: mettre en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”)

Alors,

Voilà mon câblage
diviseur-de-tension_EcTDiVw

Je précise que depuis quelques minutes, j'ai des valeurs sur Serial1.read(), mais des chiffres, et non les valeurs que j'ai renseigné sur l'ESP

et le code ?

Arduino

Serial1.begin(115200);
Serial.println(Serial1.available());
Serial.print("This just in ... ");
Serial.println(Serial1.read());

ESP

Serial.print(payload);

Oui, mais là, c'est la liaison de l'Arduino vers l'ESP alors que ton programme exploite la liaison ESP vers Arduino.

Concernant le code que tu viens de poster, ces quelques lignes sorties de leur contexte n'aident pas beaucoup.
Ceci dit, pour fonctionner correctement, Serial.available() doit être utilisé dans une boucle d'attente.
voir l'exemple ici
https://www.arduino.cc/reference/en/language/functions/communication/serial/available/

Qu'est ce qui change dans le câblage ? C'est le même fonctionnement non ?

Ah non!

  • dans le sens Tx Arduino vers Rx ESP8266 il faut atténuer le signal car l'Arduino sort en 5V et l'ESP ne tolère pas plus de 3,3V sur ces entrées.
  • dans le sens ESP vers Arduino il ne faut surtout pas atténuer le signal car l'ESP sortant en 3,3V si tu atténues le signal sera trop faible en entrée de l'Arduino.

Donc je fais l'inverse au niveau des connexions par rapport à mon schéma actuel en retirant le diviseur ?

TOUT le code.... (Snippets R Us!)

si c'est l'ESP qui parle à l'arduino (ESP Tx ➜ UNO Rx) alors pas besoin de résistance parce que le HIGH de l'ESP est à 3.3V ce qui est acceptable pour un UNO (qui supporte 5V) et qui verra bien un HIGH à ce niveau

il faut que les GNDs soient reliés...

bref schéma complet + code complet... sinon difficile d'aider

Il faut un diviseur entre TX de l'Arduino et RX de l'ESP comme dans le schéma que tu as mis.
Il faut juste un fil entre TX de l'ESP et RX de l'Arduino.

Oui, mais pas dans la situation ESP => Arduino non ?
@J-M-L Dis l'inverse juste au dessus

Non on dit la même chose

Oui, mais c'est déjà ce qui est présent. L'ESP est déjà relié à mon Arduino en ESP Tx => Uno RX

Je ne sais simplement pas quoi faire avec le Uno TX => ESP, il n'est pas nécessaire de mettre un fil entre les deux ?

OK

côté connexion vous avez cela:

UNO Tx ➜ ESP Rx au travers du pont diviseur de tension
ESP Tx ➜ UNO Rx
ESP GND ➜ UNO GND

ça permet une communication dans les 2 sens.

ensuite il faut toutes les infos dejà demandées 2 fois...

Je n'ai besoin que de la communication ESP => Uno :slight_smile:

Ben, alors pourquoi nous avoir mis le schéma de la liaison Arduino vers ESP?

Parce que je débute, et que je fais des erreurs, c'est pour ça que je suis entrain de discuter avec vous, pour avoir de l'aide et comprendre :slight_smile:

Dans mon cas, je ne souhaite que ESP => Arduino, pas l'inverse