UP | HOME

Corso di LoRa - Configurazione board E200

Table of Contents

Impostazioni base

La porzione del seguente codice si basa sull'utilizzo delle librerie dal sito di Renzo Mischianti e permettono di definire un oggetto di tipo LoRa per la configurazione e l'utilizzo. Inoltre le tabelle seguenti sono sempre estrapolate dal predetto sito.

#include "Arduino.h"
#include "LoRa_E220.h"

// ---------- esp8266 pins --------------
//LoRa_E220 e220ttl(RX, TX, AUX, M0, M1);  // Arduino RX <-- e220 TX, Arduino TX --> e220 RX
//LoRa_E220 e220ttl(D3, D4, D5, D7, D6); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1
//LoRa_E220 e220ttl(D2, D3); // Config without connect AUX and M0 M1

//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(D2, D3); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX
//LoRa_E220 e220ttl(&mySerial, D5, D7, D6); // AUX M0 M1
// -------------------------------------

// ---------- Arduino pins --------------
LoRa_E220 e220ttl(4, 5, 3, 7, 6); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1
//LoRa_E220 e220ttl(4, 5); // Config without connect AUX and M0 M1

//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(4, 5); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX
//LoRa_E220 e220ttl(&mySerial, 3, 7, 6); // AUX M0 M1
// -------------------------------------

// ------------- Arduino Nano 33 IoT -------------
// LoRa_E220 e220ttl(&Serial1, 2, 4, 6); //  RX AUX M0 M1
// -------------------------------------------------

// ------------- Arduino MKR WiFi 1010 -------------
// LoRa_E220 e220ttl(&Serial1, 0, 2, 4); //  RX AUX M0 M1
// -------------------------------------------------

// ---------- esp32 pins --------------
// LoRa_E220 e220ttl(&Serial2, 15, 21, 19); //  RX AUX M0 M1

//LoRa_E220 e220ttl(&Serial2, 22, 4, 18, 21, 19, UART_BPS_RATE_9600); //  esp32 RX <-- e220 TX, esp32 TX --> e220 RX AUX M0 M1
// -------------------------------------

// ---------- Raspberry PI Pico pins --------------
// LoRa_E220 e220ttl(&Serial2, 2, 10, 11); //  RX AUX M0 M1
// -------------------------------------

// ---------------- STM32 --------------------
//HardwareSerial Serial2(USART2);   // PA3  (RX)  PA2  (TX)
//LoRa_E220 e220ttl(&Serial2, PA0, PB0, PB10); //  RX AUX M0 M1
// -------------------------------------------------


// Startup all pins and UART
e220ttl.begin();

ResponseStructContainer c;
c = e220ttl.getConfiguration();

// It's important get configuration pointer before all other operation
Configuration config = *(Configuration*) c.data;


Basic configuration option

Indirizzo

Il valore delle delle due parti dell'indirizzo puo' essere in decimale o esadecimale.

  1. parte bassa indirizzo config.ADDL = 0x00;
  2. parte alta indirizzo config.ADDH = 0x01;

Canale

Il valore puo' essere in decimale o esadecimale.

config.CHAN = 0x00;

Impostazioni permanenti

Per rendere permenenti le impostazioni utilizzare la costante WRITE_CFG_PWR_DWN_SAVE altrimenti utilizzare la costante WRITE_CFG_PWR_DWN_LOSE.

...

 Serial2.setPins(shell::myPIN["TX"], shell::myPIN["RX"]); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX
LoRa_E220 e220ttl(&Serial2, shell::myPIN["AUX"], shell::myPIN["M0"], shell::myPIN["M1"]);

e220ttl.begin();

...


ResponseStatus rs = e220ttl.setConfiguration(config, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);

basic.png

Figure 1: Tabella delle opzioni di base

SPEED

Le costanti indicate nelle seguenti tabelle sono certamente valide con l'uso delle librerie di Renzo Mischianti. Di seguito la definizione di Velocita' in bound :

\begin{align} {7.3728 \,\mathrm{MHz} \over 16} = 460,800 \text{baud} \\ \\ {7.3728 \,\mathrm{MHz} \over 64} = 115,200 \text{baud} \end{align}

Velocita' di trasmissione Metodo config.SPED.air

Imposta la velocita' del trasmettitore

air.png

Figure 2: Tabella della velocita' di trasmisisone

Velocita' di trasmissione della UART Metodo config.SPED.uartBaudRate

Imposta la velocita' di trasmisisone della velocita' della porta UART

ttl.png

Figure 3: Tabella dei valori della velocita' della porta UART

Parita' della UART Metodo config.SPED.uartParity

Imposta la parita' della porta UART

parity.png

Figure 4: Tabella dei valori della parita'

OPTION

Lunghezza del pacchetto config.OPTION.subPacketSetting

Questa è la lunghezza massima del pacchetto. Quando i dati inviati dall’utente sono inferiori alla lunghezza del sottopacchetto, l’uscita seriale del ricevente appare come un’uscita continua. Se i dati sono meno della dimensione verrà inviato in pacchetto.

sub.png

Figure 5: valori della variabile Sub packet setting lunghezza del pacchetto

Gestione del rumore config.OPTION.RSSIAmbientNoise

Questo comando può abilitare/disabilitare il tipo di gestione di RSSI. Prestare attenzione non è il parametro RSSI nel messaggio.

Quando abilitati, i comandi C0, C1, C2, C3 possono essere inviati in modalità di trasmissione o in modalità di trasmissione WOR per leggere il registro. Registro 0x00: RSSI rumore ambientale attuale Registro 0X01: RSSI quando i dati sono stati ricevuti l’ultima volta.

rssi.png

Figure 6: Valori di RSSI Abilita rumore ambientale

Potenza di trasmissione config.OPTION.transmissionPower

Puoi modificare questo insieme di costanti applicando una definizione in questo modo:

#define E220_22 // default value without set Applicabile per E220 con 22dBm come potenza massima.
#define E220_30 // Applicable for E220 with 30dBm as max power.

La trasmissione a bassa potenza non è consigliata a causa della sua bassa efficienza di alimentazione.

px.png

Figure 7: Tabella delle costanti della potenza

TRANSMISSIONMODE

Abilita RSSI config.OPTION.RSSIAmbientNoise

Quando abilitato, il modulo riceve dati wireless e seguirà un byte di forza RSSI dopo l’uscita tramite la porta seriale TXD

rssi1.png

Figure 8: Tabella dei valori RSSI

Modo di trasmissione config.TRANSMISSION_MODE.fixedTransmission

Modalità di trasmissione: i primi tre byte del frame di dati di ciascun utente possono essere utilizzati come indirizzo alto/basso e canale in modalità di trasmissione fissa. Il modulo cambia indirizzo e canale quando viene trasmesso. E tornerà all’impostazione originale dopo aver completato il processo.

fixed.png

Figure 9: Tabella delle modalita' di trasmissione della board LoRa

Monitorare i dati prima della trasmissione config.TRANSMISSION_MODE.enableLBT

Se abilitato, i dati wireless verranno monitorati prima di essere trasmessi, evitando in una certa misura le interferenze, ma potrebbero causare ritardi nei dati.

lbt.png

Figure 10: Tabella dei valori ammessi per il parametro

Ciclo WOR (Wake on Radio) config.TRANSMISSION_MODE.WORPeriod

Se il WOR sta trasmettendo: dopo che il ricevitore WOR ha ricevuto i dati wireless e li ha emessi tramite la porta seriale, attenderà 1000 ms prima di immettere nuovamente il WOR. Gli utenti possono inserire i dati della porta seriale e restituirli via wireless durante questo periodo. Ogni byte seriale verrà aggiornato per 1000 ms. Gli utenti devono trasmettere il primo byte entro 1000 ms.

Periodo T = (1 + WOR) * 500 ms, massimo 4000 ms, minimo 500 ms Più lungo è il periodo dell’intervallo di monitoraggio WOR, minore è il consumo energetico medio, ma maggiore è il ritardo dei dati Sia il trasmettitore che il ricevitore devono essere gli stessi (molto importante).

wor.png

Figure 11: Tabella dei valori ammessi per il parametro WOR

Esempio di utilizzo dei valori

//  ----------------------- FIXED RECEIVER -----------------------
    configuration.ADDL = 0x03;     // puo' assumere un valore decimale configuration.ADDL = 3;
    configuration.ADDH = 0x00;     // puo' assumere un valore decimale
    configuration.NETID = 0x00;    // puo' assumere un valore decimale

    configuration.CHAN = 23;

    configuration.SPED.uartBaudRate = UART_BPS_9600;
    configuration.SPED.airDataRate = AIR_DATA_RATE_010_24;
    configuration.SPED.uartParity = MODE_00_8N1;

    configuration.OPTION.subPacketSetting = SPS_240_00;
    configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_ENABLED;
    configuration.OPTION.transmissionPower = POWER_22;

    configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
    configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
    configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED;
    configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
    configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_RECEIVER;
    configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;

Author: ARI people

Created: 2023-06-16 ven 22:36

Validate