Lora32u4II SERIAL comunicación hacia arduino mega

Estimados, estoy conectando en forma serial la placa lora con el arduino mega.
En la placa lora uso los pines 0 y 2 y en el mega el serial3.
Aparentemente la comunicación se da, ya que recibo desde el LORA los mensajes en el arduino mega.
Ahora bien, luego del envío de 5 mensajes el mega deja de recibir.
Serial1 y Serial3 los levantó a 9660.
Del lado del lora simplemente hago un serial1.write(“k”) cada 1 segundo.
Del lado del mega, si serial3.available() hago un serial3.read()

Alguna sugerencia? Desde ya muchas gracias
Saludos y buena jornada
Juan

Disculpas en la placa LORA uso 0 y 1

La única sugerencia que te puedo dar es que subas el sketch porque es complicado hacer clarividencia.

Saludos

ya lo resolvió solo que no puso la solución. La solución es que en el ATmega32U4 similar al Leonardo se usa Serial1.

Subtype, la comunicación está, pero a los segundos se cuelga, deja de recibir. Mañana subo el código. Gracias

surbyte:
ya lo resolvió solo que no puso la solución.

Noto que vos si haces clarividencia.
O me perdí de algo… :roll_eyes:
:grin:

Son años... pero ya lo contará el, no es clarividencia es whatsapp.

Buen día , còdigo LORA.

int count;
  void setup()
  {
    pinMode(LED_BUILTIN, OUTPUT);
  Serial1.begin(9600); // Comienzo de la comunicación serie 
   
  }

  void loop()
  {
      
        
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
      delay(1000);          
      Serial1.write('k'); // Enviamos 'K' por el puerto serie (TX)
      delay(1000);
      Serial.println("escribo");
    
  }

Codigo MEGa:

char estado;
  void setup()
  {
    Serial3.begin(9600); // Comienzo de la comunicación serie
    
    Serial.begin(9600);    
    
    pinMode(LED_BUILTIN, OUTPUT);

    Serial.println("Configurando el Sistema");
    pinMode(GSM_ON, OUTPUT); //Pinmode for Digital Pin 9 
  
    //powerUpOrDown(); //enciende sim900
    
    delay(5000);
    
//    if (gsm.begin(2400)){
//      Serial.println("\nstatus=READY");
//      started=true;  
//    }
//    else Serial.println("\nstatus=IDLE"); 
    
      
    //elimina algun sms trancado
//      char position;
//      for(int i = 1; i <= 21; i++)
//          {
//            sms.DeleteSMS(i);
//          }
  
  
//     if(started){
//      digitalWrite(7, HIGH); // hay señal
//      delay(5000);
//      //Enable this two lines if you want to send an SMS.
//      char copy[100];
//      String mensajeEstado = "SISTEMA ENCENDIDO";
//      mensajeEstado.toCharArray(copy, 100);
//      if (sms.SendSMS(, copy)); //"59898616054" //varInicioTel
//      //if (sms.SendSMS("", copy)); //
//      Serial.println("\nSMS sent OK");
//      delay(5000);
//      mensajeEstado = "El equipo estuvo sin ENERGIA ELECTRICA,ESTADO ENCENDIDO";
//      mensajeEstado.toCharArray(copy, 100);
//      if (sms.SendSMS("",copy ));
//      Serial.println("\nSMS sent OK");
//      
//    }     
    
    
  }

  void loop()
  {
    // Si por el puerto serie llegan datos (RX)
    //Serial.println("Esperando Datos");
    
    if (Serial3.available())
    { 
      estado = Serial3.read();  
      Serial.println("Recibo:");         
      Serial.println(estado);
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
      delay(1000); 
      
      //Mensaje de Alerta
      //if (estado = 'A') {
     //   mensaje= F("Alerta: VERIFICAR POSIBLE FOCO, UBICACION: "); mensaje_sms();                     
     // }
      
      delay(1);
     
    }
    
   
    
  }

Lo raro es que luego de un tiempo deja de recibir. Gracias, Saludos Juan

Agregó más información info: La conexión entre ambos es rx tx Tx rx

Alguna sugerencia? Gracias

Recuerda que en un ATmega estilo leonardo no se hace esto

void setup()  {
   Serial1.begin(9600); // Comienzo de la comunicación serie
 }

sino esto

void setup() {
 //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB
  }
  }

Tenes que esperar a que el puerto serie se conecte y no darlo por hecho

Mira este hilo con Nick Gammon de un lado y alguien con tu mismo problema.

Lamentablemente sin resultados positivos.

Algo que siempre pregunto, aunque sea muy básico ¿Uniste las masas entre los arduinos?

sisis, nunca esta demas preguntar. Pero si estan unidas,
Gracias

Como podria saber si efectivamente estàn saliendo datos del la placa Lora32u4II ,?

Gracias

Tendrias que usar un conversor Serial a USB o cualquier otro arduino con el que estes seguro que los datos seriales si funcionan.

Deja de lado el Lora32u4II por el momento y conecta otro Arduino con el MEGA Asegúrate de enviar algo y que funcione. Cuando funcione, vuelve al Lora32u4II. Asi vas eleminando responsables, Ya sabes que una parte trabaja correctamente y no estas con la incertidumbre si es el Lora32u4II o el MEGA:

Complemento mi respuesta. Ayer hice algo con alguien que conectaba un MEGA con un NANO. El Mega necesitaba mantener Serial para usarlo con MODbus y se debió usar Serial1 para mostrar información del sistema mientras funcionaba. Como el USB to Serial no llegaba hasta el día siguiente y claro, fuimos impacientes pregunté si habia un UNO/NANO por ahi. Y claro, había un UNO. Asi que con SoftwareSerial armamos una interface boba que terminaba transfiriendo del Serial1 al SoftwareSerial del NANO y desde su Serial via USB al PC. Pero como siempre no funcionó imediatamente. Por que no funcionó? Sorpresa para mi que ahora describo.

En el MEGA todo salia por Serial1.print o println debidamente inicializado asi que olvidemos el MEGA por que estaba todo bien desde su lado. En el UNO en cambio lo primero que escribí fue esto

SoftwareSerial mySerial(2,3);

void setup()
{
    mySerial.begin(9600);
    Serial.begin(9600);
}

void loop()
{
    if (Serial.available()>0) {
       mySerial.print(Serial.read());  
   }
    if (mySerial.available()>0) {      // lo que venga del MEGA Serial1 lo imprimo x USB
        Serial.print(mySerial.read());
   }
}

Sin embargo no funcionó. Entonces me puse a buscar porque me ofusqué y no funcionaba y como siempre digo, uno no debe creer que tiene todas las respuestas.

Miren como si funcionó luego de una busqueda de 5 seg

SoftwareSerial mySerial(2,3);

void setup()
{
    mySerial.begin(9600);
    Serial.begin(9600);
}

void loop()
{
    if (Serial.available()>0) {
       int dato =  Serial.read();
       mySerial.print(dato);  
   }
    if (mySerial.available()>0) {      // lo que venga del MEGA Serial1 lo imprimo x USB
       int dato =  mySerial.read();
       Serial.print(dato);
   }
}

tal como lo digo. Asi funciona y del otro modo no. Espero esto ayude @jazpiroz.

NOTA: recordá cerrar los hilos con [solucionado] cuando se de la situación, claro está.