Comunicacion Serial entre tarjetas ESP8266

Saludos Comunidad.

tengo un problema: deseo transmitir un mensaje desde una tarjeta ESP8266 a otra igual, por medio de comunicacion serial (para ello estoy valiendome de la libreria SoftwareSerial.h). voy a mostrar aqui ambos sketches:

Programa que envia el mensaje (emitter)

#include "SoftwareSerial.h"


#define RX (13)
#define TX (12)

SoftwareSerial MasterSS(TX,RX);

String data;

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

  MasterSS.begin(115200);


}

void loop() {
  delay(3000);
  static int count = 0;
  count++;
  data = "Este es el mensaje no." + String(count);
  MasterSS.print(data);
  Serial.println(data);
  

}

este es el programa que debe recibir (receiver)

#include "SoftwareSerial.h"


#define RX (12)
#define TX (14)

//Constructores//
SoftwareSerial MasterSS(TX,RX);

void setup() {

  Serial.begin(115200);
  MasterSS.begin(115200);

}

void loop() {


  if (MasterSS.available()){
    String payload = MasterSS.readStringUntil('\n');
    Serial.println(payload);
  }

}

Por alguna razon, todo lo que recibo es:

�-� menscje��

�[,����

W)˒����

Este es��[,��

���Este�����������

�=���

���������b brl�nB�n l`�rl�l� �^Y�[,��

s" ese)ے�� �

����

��ste us el ��ͅ������������

��es el mensaje���

cuando en realidad lo que espero recibir es algo como:

Este es el mensaje no.1

Este es el mensaje no.2

Este es el mensaje no.3

Este es el mensaje no.4

Este es el mensaje no.5

alguno de ustedes sabe como lograr una comunicacion serial correcta entre dos tarjetas, tal que me permita enviar un String completo y limpio de una tarjeta a la otra?

Puede ser un problema de ruido o desborde. Disminuye la velocidad de comunicación entre las dos placas(mantén la serial usb a una velocidad mas alta).

Hola PeterKanTropus

hice la correccion que me planteaste y digamos que ahora el mensaje es un poco mas legible, pero sigue siendo algo como esto:

*�el mensṽ 37

Este e�j��ͅ��no.�

Este es el me���no. �

Es�el mensaje�.�

Este es�[���no. �

Este es el m孕no. �

EsHY*�mensaj� 43

Es muy probable que sea ruido, sigue bajando los baud ¿Están muy separadas las dos placas? ¿Uniste las dos masas entre placas?

puse una de las tarjetas a 9600 y la otra la mantuve a 115200. te muestro foto de la conexion:

la tarjeta con el sensor DHT es la que va a enviar la informacion. esta conectada directamente a una fuente de 5V por USB; la otra tarjeta debe recibir la informacion, esta conectada al computador via USB

por cierto, los puertos los cambie, producto de otra sugerencia que vi en otra discusion) para la tarjeta que envia son los GPO04 y GPO05 y para la que recibe son los GPO02 y GPO15

En el receptor lees con

String payload = MasterSS.readStringUntil('\n'); 

pero en el emisor envías con

MasterSS.print(data);

por lo que no se envía un caracter '\n'.

Prueba enviando con

MasterSS.println(data);

Hola nuevamente MaximoEsfuerzo

Logre resolver haciendo el siguiente montaje:

Alimentando solo a traves de puerto USB fui capaz de recibir el mensaje perfectamente. eso quiere decir que el problema era que en el montaje hecho con tarjetas WEMOS no estaban conectadas las dos masas.

Mi pregunta ahora seria, en la primera foto, si conecto una tarjeta (la que emite el mensaje) a un transformador de 5Vcc y la otra tarjeta(la que recibe) al puerto USB de mi computadora puedo unir la masa de ambas tarjetas sin temor a afectar el puerto USB de mi computador?

No había prestado atención a la primer foto :man_facepalming:t2:
Claramente le falta unir las masas.

Si, es necesario unirlas justamente porque son 2 fuentes distintas y porque la conexión serie tiene al menos 3 cables: Tx, Rx y masa (o GND, en inglés)

Igual ten presente y corrige lo que te marqué en el post anterior

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