Problemi comunicazione LoRa

Buongiorno,
utilizzo due Arduino MKR1300 per un progetto e stavo iniziando a scrivere un po' di codice.
ho bisogno di comunicare tramite protocollo LoRa e ho provato a fare uno sketch di prova utilizzando la libreria <LoRa.h>(questa):
un arduino manda un numero, il secondo arduino quando lo riceve gli manda una "conferma di ricezione"(un altro numero) che fa accendere e spengere il led integrato.
provando a eseguire gli esempi forniti dalla libreria ho scritto questi due codici

  1. arduino che invia il primo dato:
#include <SPI.h>
#include <LoRa.h>
byte localAddress = 0001;  //il mio
byte destination = 0002;   //il suo
int i=1;
int packetSize=0;


void setup() {
  // put your setup code here, to run once:
  pinMode(6, OUTPUT);
  digitalWrite(6,LOW);
  Serial.begin(9600);
  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
   while (1);
  }  
}

void loop() {
  // put your main code here, to run repeatedly:
  LoRa_send();
  ascolto();
  
  

}
void LoRa_send() {
  LoRa.beginPacket();
  LoRa.write(localAddress);
  LoRa.println("");
  LoRa.write(i);
  LoRa.endPacket();

}

void ascolto(){
  
  packetSize= LoRa.parsePacket();
   Serial.println(packetSize);
   if (packetSize == 0) return;
  
   int recipient= LoRa.read();
   int incoming=0;
   while (LoRa.available()) {
      incoming =+ LoRa.read();
      
    }
   if(recipient!= 0001){
    Serial.println("non va");
    Serial.println(recipient);
    return;
   }
    Serial.println(incoming);
   if (incoming== 2){
    digitalWrite(6,HIGH);
    delay(300);
    digitalWrite(6,LOW);
   }
 
}
  1. quello che riceve il numero e manda la conferma di ricezione:
#include <SPI.h>
#include <LoRa.h>
byte localAddress = 0002; 
byte destination = 0001;  
int a=2;
int packetSize=0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
   while (1);
  }  
}

void loop() {
  // put your main code here, to run repeatedly:
 ascolto();
   
}

void ascolto(){
  packetSize= LoRa.parsePacket();
  Serial.println(packetSize);
   if (packetSize == 0) return;
   int recipient= LoRa.read();
   int incoming=0;


    while (LoRa.available()) {
      incoming =+ LoRa.read();
      
    }
    
    if(recipient!= 0001){
    Serial.print("leggo");
    Serial.println(recipient);
    Serial.print("dovrebbe essere:");
    Serial.println(localAddress);
    Serial.print("mentre io mando:");
    Serial.println(destination);
    return;
   }
   if (incoming== 1){
    //Serial.println("funziona");
    LoRa_send();
   }
}

void LoRa_send() {
 
  LoRa.beginPacket();
  if (LoRa.beginPacket()==0){
    Serial.println("pacchetto non creato");
  }
  
  LoRa.write(destination);
  LoRa.println("");
  LoRa.write(a);
  LoRa.endPacket();

}

quando ho una configurazione che un arduino manda e l'altro riceve succede che io quando mando il pacchetto devo indicare il destinatario (nel caso dell'aurduino che manda il primo dato il suo destinatario sta a 0002)
ma dal momento che chi riceve il pacchetto ne vorrebbe mandare pure lui uno succede un putiferio:
ho notato che chi invia non dice più “messaggio per l’indirizzo del destinatario è:”
Ma dice “io che ho questo indirizzo(0001) sto mandando un messaggio con scritto:”
E chi sa che è per lui il messaggio lo ascolta
E chi riceve e vuole inviare la conferma della ricezione la manda (ho controllato che il pacchetto venga creato) ma nessuno la sente….
Quello che ha inviato può solo inviare e se provi a farlo ricevere non riceve messaggi :frowning:
so che non è forse la sezione giusta su cui scrivere, ma tentar non nuoce!
mi sono studiato un po' la libreria e inizialmente pensavo fosse un problema di onRecive che mi "forzava" ad un ascolto continuativo, ma anche levandolo non funziona comunque...

vi prego aiutatemi sono bloccato da ieri qua!
grazie in anticipo!!

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