Site icon Renzo Mischianti

Problemi configurazione e trasferimento con LORA E32

Buongiorno, sono nuovo del forum quindi mi presento. Sono Daniele, appassionato di elettronica e microcontrollori da circa un paio di anni, ancora alle prime armi. Insegno in una scuola superiore e mi diletto con Arduino per progetti scolastici e personali, ad ogni modo senza scopo di lucro. Di formazione sono laureato in fisica con qualche anno di esperienza di programmazione nel mondo dei database. Mi sto affacciando ora al mondo della trasmissione dati via radio e sono finito su questo fantastico spazio in cui trovo che sia tutto molto dettagliato, complimenti! Ho qualche domanda sulla configurazione e sul trasferimento dati con la scheda sopra citata E32 433T30D. Ho seguito tutti i passi indicati in questo sito per il cablaggio e per la configurazione, ho ancora un po' di problemi di trasferimento e di comprensione del codice. Domanda sul cablaggio: io ho collegato tutti i pin della scheda LORA come indicato nei vari schemi di collegamento, con resistenze di pull up sui pin RX e TX. Ho quindi collegato i pin M0, M1 e AUX direttamente alle porte GPIO di Arduino, rispettivamente su 7, 6 e 5. Ho quindi richiamato i pin di riferimento nel costruttore nel seguente modo: LoRa_E32 e32ttl(2, 3, 5, 7, 6); Quando si parla di gestire i valori di M0 e M1 via codice, io ho pensato di impostarli aggiungendo una define dei due pin e portando a "HIGH" o "LOW" i pin di riferimento direttamente da codice per impostare le varie mode, nel seguente modo: #define M0PIN 7 #define M1PIN 6 pinMode(M0PIN, OUTPUT); pinMode(M1PIN, OUTPUT); digitalWrite(M0PIN, HIGH); digitalWrite(M1PIN, HIGH); Mi chiedo se è corretto impostare le varie "mode" della scheda in questo modo, nell'esempio riportato sopra sarei in modalità sleep. Devo portare a HIGH anche il pin di AUX? Per quanto riguarda la trasmissione in transparent mode, riesco a ricevere il messaggio dall'Arduino ricevente, ma con caratteri indecifrabili. Ad esempio se invio il messaggio "Ciao", nel monitor seriale del ricevente ottengo caratteri del tipo "ÿ@ÿ". Ho provato a cercare online e non ho capito quale potrebbe essere il problema. Domanda in merito alla trasmissione in fixed transmission. - Dal manuale tecnico del modulo Lora leggo che in Mode 3 (M0=M1=HIGH), la trasmissione e l'invio dei dati risulta N/A. - Nelle guide presenti sul sito leggo che per la trasmissione in fixed mode devo impostare M0=M1=HIGH Non capisco quindi: in modalità fixed point to point, come devono essere impostati i pin M0 e M1? Nel tutorial leggo di replicare la seguente condizione per il dispositivo che invia: ResponseStructContainer c; c = e32ttl.getConfiguration(); Configuration configuration = *(Configuration*) c.data; configuration.ADDL = 0; configuration.ADDH = 1; configuration.CHAN = 2; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); e la seguente per il dispositivo che riceve: ResponseStructContainer c; c = e32ttl.getConfiguration(); Configuration configuration = *(Configuration*) c.data; configuration.ADDL = 0; configuration.ADDH = 3; configuration.CHAN = 4; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); Tali impostazioni devo impostarle con il codice di configuration setup o direttamente dallo sketch che uso per inviare/ricevere i dati? La domanda mi sorge perché vedo che nella parte iniziale degli sketch di invio/ricezione dati c'è una parte di configurazione di ADDH, ADDL e CHAN, quindi mi sembra ridondante far girare prima il configuration setup e poi il codice che invia/riceve perché la configurazione verrebbe sovrascritta dal secondo codice. Domanda sui canali di invio/ricezione. Nell'esempio riportato nel tutorial per il codice di invio, si dice di usare il seguente (invio solo un estratto): ResponseStructContainer c; c = e32ttl.getConfiguration(); Configuration configuration = *(Configuration*) c.data; configuration.ADDL = 0x01; configuration.ADDH = 0x00; configuration.CHAN = 0x04; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); printParameters(configuration); // --------------------------- } // The loop function is called in an endless loop void loop() { delay(2000); Serial.println("Send message to 00 03 04"); ResponseStatus rs = e32ttl.sendFixedMessage(0, 3, 0x04, "Message to 00 03 04 device"); Serial.println(rs.getResponseDescription()); Mi sembra di capire che qui sto impostando l'indirizzo del trasmettitore su 01 00 04 e sto inviando un messaggio all'indirizzo 00 03 04. Nell'esempio per il codice del ricevente vedo che si imposta quanto segue: ResponseStructContainer c; c = e32ttl.getConfiguration(); Configuration configuration = *(Configuration*) c.data; configuration.ADDL = 0x03; configuration.ADDH = 0x00; configuration.CHAN = 0x04; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; e32ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); printParameters(configuration); // --------------------------- Serial.println(); Serial.println("Start listening!"); } Qua mi sembra di capire che imposto l'indirizzo del ricevente su 03 00 04. Se invio il messaggio verso 00 03 04, non dovrei avere la stessa impostazione di ADDH, ADDL e CHAN nel codice del ricevente? Per quale motivo ADDH, ADDL non coincidono nella configurazione del ricevente con l'indirizzo al quale sto inviando il messaggio nel codice del trasmettitore? In ogni caso, anche cambiando gli indirizzi di invio/ricezione non riesco a ricevere dati. Nel monitor seriale vedo solo il messaggio "Start listening" ma non ricevo mai nulla, infatti anche facendo una print di e32ttl.available(), questa vale sempre 0, quindi non entra nel loop di ricezione. Ho controllato i cablaggi varie volte e non capisco cosa può esserci che non vada. Ultima domanda: nel codice vedo spesso questo commento: // After set configuration comment set M0 and M1 to low // and reboot if you directly set HIGH M0 and M1 to program Non capisco come usare questa informazione. Mi scuso per le troppe domande ma sto lavorando a un progetto scolastico per il quale questa parte di invio dati è fondamentale ma non so bene come muovermi per risolvere i problemi. Grazie in anticipo della disponibilità e buona giornata! Daniele :)
Exit mobile version