Go Down

Topic: Lora32u4II SERIAL comunicación hacia arduino mega (Read 139 times) previous topic - next topic

jazpiroz

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

jazpiroz


gatul

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

Saludos

surbyte

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

jazpiroz

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

gatul

ya lo resolvió solo que no puso la solución.
Noto que vos si haces clarividencia.
O me perdí de algo...  :smiley-roll:
:smiley-mr-green:

surbyte

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

jazpiroz

Buen día , còdigo LORA.

Code: [Select]
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:

Code: [Select]
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


jazpiroz

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

Alguna sugerencia?
Gracias

surbyte

#9
Feb 24, 2021, 04:21 am Last Edit: Feb 24, 2021, 04:25 am by surbyte
Recuerda que en un ATmega estilo leonardo no se hace esto

Code: [Select]
void setup()  {
   Serial1.begin(9600); // Comienzo de la comunicación serie
 }

sino esto

Code: [Select]
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.

jazpiroz


PeterKantTropus

Algo que siempre pregunto, aunque sea muy básico  ¿Uniste las masas entre los arduinos?
//-----------------------******------------------------
if (Codigo_con_delay==True) {
Proyecto=Fracaso;
 } 
//-----------------------******-----------------------

Go Up