Lora problema di ricezione

Concordiamo quasi su tutto

Solo rimane da controllare che per il basso datarate del lora non capiti che la trasmissione duri di più della successiva pausa

Se ben ricordo, a seconda del chipset usato sulla scheda, che la libreria lo onori o meno ... poco importa, viene forzato dall'hardware che NON trasmette se non sono rispettate le tempistiche. Dovrebbe dare un'occhiata al datasheet per verificare come si comporta il modulo ... :roll_eyes:

Guglielmo

Beh comunque sarebbe bene testare cosa restituiscono i metodi beginpacket e endpacket
Se restituissero zero avremmo trovato

Inoltre endpacket di default è NON asincrono
Quindi il problema del tempo di trasmissione non si pone

1 Like

Solo per completezza ... in QUESTA pagina tutta la documentazione possibile (datasheet, application notes, ecc.) relativa la SX1278 che l'OP sta utilizzando.

Guglielmo

Ieri sera ho tolto tutti i delay() lato trasmettitore e ho impostato la variabile volatile , e ho fatto in modo che quando premo il pulsante mi trasmetta solo in quel lasso di tempo il pacchetto "true" semplificando al massimo.

#include <SPI.h>
//Incuding LoRa library
#include <LoRa.h>

//define the pins used by the transceiver module

#define NSS 53
#define RST 9
#define DI0 8
#define BUTTON 3

//this variable is for update the status of the push button
volatile uint8_t button_status = 0;


// this function is called the Interrupt Setvice Routine (ISR).
// When button is pressed, this function will trigger.
// and, update the "button_status" variable to (1 to 0) or (0 to 1)
void isr() {
 Serial.println("interrupt triggered");
 //every time the interrupt is triggered,
 // button_status value will inverse (0 to 1) or (1 to 0)
 button_status = !button_status;
}

void setup() {
 //initialize Serial Monitor
 Serial.begin(9600);
 //take pin 25 as INPUT with PULL-UP.
 //PULLUP means pin 15 is normally high. When button pressed it gets LOW
 pinMode(BUTTON, INPUT_PULLUP);
 //Attaching an Interrupt to pin 25 (BUTTON pin) 

 // when button goes (high to low) state, then interrupt will triggered
 attachInterrupt(digitalPinToInterrupt(BUTTON), isr, CHANGE);

 Serial.println("LoRa Sender");

pinMode(NSS, OUTPUT);
digitalWrite(NSS, HIGH);
LoRa.setPins(NSS, RST, DI0);
 //setup LoRa sender
 //Select the frequency accordng to your location
 //433E6 for Asia
 //866E6 for Europe
 //915E6 for North America
 while (!LoRa.begin(433E6)) {
   Serial.println(".");
   delay(500);
 }
 // Change sync word (0xF1) to match the receiver LoRa
 // This code ensure that you don't get LoRa messages
 // from other LoRa transceivers
 // ranges from 0-0xFF
 LoRa.setSyncWord(0xF1);
 Serial.println("LoRa Initializing Successful!");
}

void loop() {
 Serial.print("Sending packet: ");
 //If the button_status is 1, Send LoRa packet "on" to receiver LoRa
 if(button_status == 1){
     LoRa.beginPacket();
     LoRa.print("true");
     LoRa.endPacket();
     Serial.println("sent lora to on");
     
  }
}

Dal lato ricevitore stampo packetSize che è "0" quando non riceve nessun pacchetto e "5" quando riceve false ,bene ora se tengo premuto il pulsante ( ho anche provato a baipassarlo mettendo direttamente il pin a gnd e lasciando cosi per un minuto circa ) sul ricevitore leggo il pacchetto false e packrtSize =5, pero poi mi legge paketSize =0 , avendo quindi sul serial monitor una cosa del genere :
---> 5
---> 0
---> 5
---> 0
No riesco a capire il perche mi legga packetSize =0 anche se il pulsante è premuto e il trasmettitore invia sempre il pacchetto "false " equivalente a 5 .... oggi provo a leggere la trasmissione di beginpacket e endpacket come dici e vediamo cosa mi da, ovviamete provo anche la soluzione antirimbalzo del pulsante.

Poiche diciamo che sto cercando di creare un Lora gateway , che voi sappiate esite gia in commercio uno gia bello e fatto solo da programmare con ambiente arduino ?

Abbiamo capito il problema:

È alla riga 27 del programma dal ricevitore
Basta cancellarla, non serve

1 Like

Appena posso posto il codice del ricevitore lora

Dai un'occhiata a questo, forse ha anche roba in più che non so se ti possa servire.

Ciao, Ale.

Come potresti leggere false se il trasmettitore (ultima versione) trasmette solo true?

Cosa c'entra il pulsante "premuto" o bypassato se usi un interrupt a change?

Devo purtroppo "arrendermi" e riconoscere che il livello di aiuto che ti posso fornire è inadeguato alle tue necessità

Facci sapere come va a finire

Ma lo OP è sparito?

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