Pas de réception pin RX esp01 Arduino nano

Bonjour. J'ai un problème sur la réception d'un signal série venant de mon esp01 et allant a mon Arduino nano. De base j'utilise la bibliothèque SerialSoftware mais même avec le port serie de base (rx0) cela ne fonctionne pas; La fonction Serial.available() revoie 0 alors que le signal est bien transmit (vérification oscilloscope) sur le pin rx0. Je me demande si le problème ne vient pas du fait que l'esp01 envoie un signal logique sur 3.3v alors que l'arduino fonctionne sur 5v. Merci d'avance pour vos reponses.

Bonjour @antoine38

Sur ce forum francophone aucun intérêt à publier en anglais !

En principe une tension de 3,3V est reconnue comme niveau logique haut par une entrée numérique de carte Nano (éviter l'entrée RX qui est câblée sur la carte nano au circuit intégré d'interface USB , ce qui fait qu'avec le 'port série de base' ça peut parfois ne pas fonctionner.

Asqures-toi que le débit que tu fixes dans Serial.begin() est conforme au débit de sortie de la carte ESP-01 (ça dépend des modèles....). (Ton oscillo permet de constater ce débit)

postes ici le programme tournat sur ta carte Nano en suivant les consignes de publication indiquées ici

dans l'absolu 3.3V sont suffisant pour être vus comme HIGH par votre Nano sous 5V

les GNDs sont bien connectés ? voyez vous bien 3.3V à l'oscilloscope ?

A vérifier soigneusement.
Je me rappelle m'être fait avoir avec l'I2C.
Idem je pensais pouvoir faire dialoguer un module 5V avec un 3,3 V puisque l'I2C étant à collecteur ouvert j'étais maître de la tension à laquelle je raccordais la résistance de charge.
Que neni !

Cas général :
Une entrée numérique d'un atmega328p commute autour de Vcc/2 avec un faible hystérésis, soit 2,5 V.
Normalement, aucun soucis dans le sens 3,3 V vers 5 V.

Cas particulier :
Je ne sais pas pour l'UART, mais pour l'I2C, dans les "Electrical characteristics" de la datasheet de l'atmega328p il est précisé, qu'en mode I2C, les entrées A4 et A5 passent aux normes électriques CMOS :

  • niveau haut > 0,8 Vcc
  • niveau bas < 0,2 Vcc.

Et là cela ne passe plus.

2 Likes

Bon à savoir !

Bonjour, merci pour vos réponses, j'ai fini par trouver le problème, cela venait du fait qu'avec SoftwareSerial, on ne puisse communiquer qu'avec un seul port série à la fois. Il me fallait donc rajouter " xxxSerial.listen();" avant la réception de mon signal pour rendre le port xxxSerial prioritaire.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.