Arduino mega+esp8266 intégré

bonjour,
j'ai acheté un arduino mega avec esp8266 intégré.
j'ai réussi à faire la communication de l arduino à le ESP. mais j'ai pas réussi de ESP vers l arduino.
Le code dans l'arduino :

#include <SoftwareSerial.h>

long cha =0;
int dd =22;
char sr;
String srt;

void setup()
{
  Serial.begin(115200);
  Serial3.begin(115200);
pinMode(dd,OUTPUT);
digitalWrite(dd, HIGH);
}

void loop()
{
//receive from esp
  if (Serial.available()>0){delay(10);
    sr = Serial.read();
    srt = String(sr);
  if (srt== "kk"){ digitalWrite(dd, LOW);}
  if (srt== "vv"){ digitalWrite(dd, HIGH);}
  }
  
 // arduino send 
 Serial.write("mega data  ");
 delay (500);
 Serial.write("ard sned  ");
delay (500);
}

le code dans le ESP

 #include <SoftwareSerial.h>

#include <ESP8266WiFi.h>

int val=0;

#define WIFI_SSID "TT_B8D8"
#define WIFI_PASSWORD "milas123495"

void setup() { 
  Serial.begin(115200);
}

void loop() {

    delay(500);
    Serial.println("kj");
    delay (500);
    Serial.println("kh");
    delay (500);
   
}

à quoi ça sert ?

Pour écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

j'ai bien suivit les paramètre du DIP

je suis amateur et j'essaye d'apprendre sur net :face_with_open_eyes_and_hand_over_mouth:

pas de souci, on a tous commencé en amateur :slight_smile:

je ne connais pas cette carte. Que dit la doc pour la connexion série entre les 2 puces? est-ce bien Serial3? est-ce bien 115200 qu'il faut utiliser?

votre code lit mal ce qui est envoyé donc la comparaison

  if (srt== "kk"){ digitalWrite(dd, LOW);}

ne va jamais fonctionner (lisez mon tuto ça vous donnera des idées)

en premier lieu vous pourriez juste écouter sur Serial3 et afficher ce qui est reçu sur Serial

oui c'est Serial3 et 115200

j'ai changé comme indiqué dans le tuto mais encore ça marche pas


 #include <SoftwareSerial.h>

#include <ESP8266WiFi.h>

int val=0;

String message1 = "kk";
String message2 = "kh";

#define WIFI_SSID "TT_B8D8"
#define WIFI_PASSWORD "milas123495"

void setup() { 
  Serial.begin(115200);
}

void loop() {

    delay(500);
    Serial.print(message1);
    delay (500);
    Serial.print(message2);
    delay (500);
   
}

Pouvez vous répondre?

C’est sympa de partager votre mot de passe wifi avec nous mais sans doute pas nécessaire….

oui c'est bien serial3 avec baud 115200.
et j'ai réussi l'envoie du arduino vers ESP vers Firebase mais pas du ESP vers l'arduino

pour le mot passe wifi , je serais heureux si quelqu'un arrive près de moi et utilise ma connexion :smiley:

Côté mega

void setup() {
  Serial.begin(115200);
  Serial3.begin(115200);
  delay(2000);
  Serial.println("Je suis prêt, tapez du texte.");
}

void loop() {
  if (Serial3.available()) Serial.write(Serial3.read());
  if (Serial.available()) Serial3.write(Serial.read());
}

——

Côté ESP

void setup() {
  Serial.begin(115200);
}

void loop() {
  if (Serial.available()) Serial.write(Serial.read()+1);
}

Vous ouvrez la console série du mega à 115200 bauds et vous tapez Coucou puis validez.

Si tout est OK vous devriez recevoir en retour Dpvdpv car l’ESP fait un écho mais en décalant de 1 dans la table ASCII

oui ça marche
est ce que Dpvdpv vient du esp??
comment je peux cooriger mon sketch?

je veux envoyer un (mot) du Firebase ==> ESP ==>arduino
je suis coincé dans le ESP==>arduino

mais j'ai réussi l'envoie de : millis() du arduino =>ESP =>firebase

Ben oui… Le code de l’esp renvoie le caractère reçu mais décalé de 1 C devient D o devient p, et u devient v. Donc Coucou devient Dpvdpv

Si vous n’arrivez pas à comprendre ce code, faut pas encore penser à firebase mais plutôt faire des tutos de base…

En pratique ce genre de carte n’as pas vraiment eu de succès, C’est 100 fois plus simple de prendre un ESP 32 tout seul et de tout faire avec, sans s’ennuyer à gérer un protocole série entre 2 cartes…

je vais essayer de modifier petit à petit à partir de dernier code, merci

Pas de double post SVP