Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: configurazione – 3

Spread the love

La telemetria dati wireless LoRa o Long Range è una tecnologia introdotta da Semtech che opera a una frequenza inferiore rispetto al NRF24L01 (433 MHz, 868 MHz o 916 MHz contro 2,4 GHz per NRF24L01) ma a una distanza tripla (da 5000 m a 11000 m).

Ora proviamo ad esaminare meglio come configurare il dispositivo LoRa Ebyte E220 UART basato sui moduli wireless LLCC68.

Ebyte LoRa E220 LLCC68 device for Arduino, esp32 or esp8266 Configuration
Ebyte LoRa E220 LLCC68 device for Arduino, esp32 or esp8266 Configuration

Qui alcuni dispositivi: E220-400T22D 433MHz 5Km - E220-400T30D 433MHz 10Km - E220-900T22D 868MHz 915MHz 5Km - E220-900T30D 868MHz 915MHz 10Km

Ho creato questa libreria per gestire gli EBYTE E220 ma soprattutto per semplificare il processo di configurazione perché può essere molto noioso.

sx1278 sx1276 wireless LoRa UART module serial 3000m Arduino 433 rf

Se hai problemi di blocco del dispotivo, devi inserire una resistenza di pull-up da 4,7k o meglio collegarti al pin AUX del dispositivo.

Libreria

Puoi trovare la mia libreria qui, ed è disponibile anche dal Library Manager dell’Arduino IDE.

EByte LoRa E22 E32 Arduino library manager
EByte LoRa E22 E32 Arduino library manager

Per scaricare:

Clicca sul bottone DOWNLOADS sull’angolo in alto a destra, e rimonima la cartella decompressa come LoRa_E220.

Controlla che la cartella LoRa_E220 contenga LoRa_E220.cpp e LoRa_E220.h.

Posizione la cartella della libreria LoRa_E220 nella tua cartella /libraries/.

Potresti aver bisogno di creare la cartella libraries se è la prima volta.

Riavvia l’IDE.

Schemi di connessione per la programmazione

Per l’utilizzo di base, abbiamo utilizzato una configurazione specifica per Arduino. Tuttavia, stai lavorando solo in “Modalità normale” in quella configurazione. Ora gestiremo solo i pin dinamici necessari (RX, TX) per semplificare il processo di programmazione e gli altri in modo statico.

1M0Input(weak pull-up)Lavora con M1 e decide le quattro modalità operative. Non può essere lasciato libero, può essere messo a terra.
2M1Input(weak pull-up)Lavora con M1 e decide le quattro modalità operative. Non può essere lasciato libero, può essere messo a terra.
3RXDInputIngressi UART TTL, connessione a pin di uscita TXD esterno (MCU, PC). Può essere configurato come ingresso open-drain o pull-up.
4TXDOutputUscite TTL UART, si collega all’inputpin esterno RXD (MCU, PC). Può essere configurato come uscita open-drain o push-pull

5

AUX

Output
Per indicare lo stato di funzionamento del modulo e riattivare l’MCU esterno. Durante la procedura di inizializzazione di autocontrollo, il pin emette una bassa tensione. Può essere configurato come uscita open-drain o output push-pull (è consentito non metterlo a terra).
6VCCAlimentazione 3V~5.5V DC
7GNDTerra

Come puoi vedere, puoi impostare varie modalità tramite i pin M0 e M1.

ModeM1M0Explanation
Normal00UART e canale wireless sono open, e la transparent transmission è attiva
WOR Transmitter01Trasmettitore WOR (Wake on radio)
WOR Receiver10Ricevitore WOR (Supporta sveglia via radio)
Deep sleep mode11Il modulo va in sleep (ma si sveglia automaticamente quando riceve i parametri di configurazione)

Configurazione normale (trasparente)

Ebyte LoRa E32 E22 E220 Arduino UNO normal mode breadboard
Ebyte LoRa E32 E22 E220 Arduino UNO normal mode breadboard
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
TXPIN 2 (PullUP 4,7KΩ)
RXPIN 3 (PullUP 4,7KΩ & Voltage divider)
AUXNon connesso (PullUP 4,7KΩ)
VCC5v
GNDGND

e questa configurazione per Wemos D1 mini:

Ebyte LoRa E32 E22 E220 Wemos D1 normal mode breadboard
Ebyte LoRa E32 E22 E220 Wemos D1 normal mode breadboard
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
TXPIN D2 (PullUP 4,7KΩ)
RXPIN D3 (PullUP 4,7KΩ)
AUXNon connesso (PullUP 4,7KΩ)
VCC3.3v/5v
GNDGND

ESP-32:

Ebyte LoRa E32 E22 E220 ESP32 DEV KIT V1 normal mode breadboard
Ebyte LoRa E32 E22 E220 ESP32 DEV KIT V1 normal mode breadboard
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
RXTX2 (PullUP 4,7KΩ)
TXRX2 (PullUP 4,7KΩ)
AUXNon connesso (PullUP 4,7KΩ)
VCC3.3v/5v
GNDGND

Arduino MKR WiFi 1010:

Ebyte LoRa Exx Arduino MKR WiFi 1010 normal mode connected breadboard
Ebyte LoRa Exx Arduino MKR WiFi 1010 normal mode connected breadboard
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
TXPIN 14 Tx (PullUP 4,7KΩ)
RXPIN 13 Rx (PullUP 4,7KΩ)
AUXNon connesso (PullUP 4,7KΩ) o al Pin 1
VCC3.3v/5V
GNDGND

Connessione per la modalità di programmazione/sleep

Per configurarlo, è necessario impostare M0 e M1 su alto (ricordarsi di utilizzare 3.3v).

Ma se colleghi tutti i pin, la libreria imposta in ALTO o BASSO i pins a secondo necessità senza problemi.

Ebyte LoRa E32 E220 Wemos D1 configuration mode breadboard
Ebyte LoRa E32 E220 Wemos D1 configuration mode breadboard
M0VCC (Set programming/sleep mode)
M1VCC (Set programming/sleep mode)
TXPIN D2 (PullUP 4,7KΩ)
RXPIN D3 (PullUP 4,7KΩ)
AUXNon connesso (PullUP 4,7KΩ)
VCC3.3v/5v
GNDGND
Ebyte LoRa E32 E220 Arduino UNO configuration mode breadboard
Ebyte LoRa E32 E220 Arduino UNO configuration mode breadboard
M03.3v (Set programming/sleep mode)
M13.3v (Set programming/sleep mode)
TXPIN 2 (PullUP 4,7KΩ)
TXPIN 3 (PullUP 4,7KΩ & Voltage divider)
AUXNon connesso (PullUP 4,7KΩ)
VCC3.3v/5v
GNDGND
LoRa E32 E220 ESP32 DEV KIT V1 configuration mode
LoRa E32 E220 ESP32 DEV KIT V1 configuration mode
M03.3v (Set programming/sleep mode)
M1 3.3v (Set programming/sleep mode)
RXTX2 (PullUP 4,7KΩ)
TXRX2 (PullUP 4,7KΩ)
AUXNon connesso (PullUP 4,7KΩ) o D18
VCC3.3v/5v
GNDGND
LoRa E32 E220 Arduino MKR WiFi 1010 sleep/config mode
LoRa E32 E220 Arduino MKR WiFi 1010 sleep/config mode
M03.3v (Set programming/sleep mode)
M13.3v (Set programming/sleep mode)
TXPIN 14 Tx (PullUP 4,7KΩ)
RXPIN 13 Rx (PullUP 4,7KΩ)
AUXNot connected (PullUP 4,7KΩ) o al Pin 1
VCC3.3v/5V
GNDGND

In questa modalità è possibile gestire la configurazione del dispositivo

Opzione di configurazione di base

NameDescriptionAddress
ADDH Indirizzo High del modulo (impostazione predefinita 00H) 00H
ADDL Indirizzo Low del modulo (impostazione predefinita 00H) 01H
SPED Informazioni sul bit di parità della velocità dei dati e sulla velocità dei dati via etere 02H
OPTION Tipo di trasmissione, settaggi pull-up, tempo di wake-up, FEC, potenza trasmisisone03H
CHAN Canale di comunicazione(410M + CHAN*1M), default 17H (433MHz), valido solo per i dispositivi a 433Mhz controlla sotto per cambiare la frequenza 04H
TRANSMISSION_MODE Molti parametri per specificare le varie modalità di trasmissione 05H
CRTYPT_HCriptaggio06H
CRTYPT_L Criptaggio 07H

Puoi trovare le opzioni di configurazione nell’articolo Libreria.

Ottienere la configurazione

Sketch di esempio dell’Arduino MKR WiFi 1010 (completamente connesso rimuovi M0, M1 e AUX se vuoi)

/*
 * LoRa E220 LLCC68
 * Get configuration.
 * https://mischianti.org
 *
 * E220		  ----- Arduino MKR
 * M0         ----- 2 (or 3.3v)
 * M1         ----- 3 (or 3.3v)
 * RX         ----- 14 (PullUP)
 * TX         ----- 13 (PullUP)
 * AUX        ----- 1  (PullUP) o  (PullUP)
 * VCC        ----- 3.3v/5v
 * GND        ----- GND
 *
 */
#include "Arduino.h"
#include "EByte_LoRa_E220_library.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 MKR WiFi 1010 -------------
LoRa_E220 e220ttl(&Serial1, 2, 4, 6); //  Serial AUX M0 M1
// -------------------------------------------------

// ---------- esp32 pins --------------
// LoRa_E220 e220ttl(&Serial2, 15, 21, 19); //  Serial 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
// -------------------------------------

void printParameters(struct Configuration configuration);
void printModuleInformation(struct ModuleInformation moduleInformation);

void setup() {
	Serial.begin(9600);
	while(!Serial){};
	delay(500);

	Serial.println();


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

	ResponseStructContainer c;
	c = e220ttl.getConfiguration();
	// It's important get configuration pointer before all other operation
	Configuration configuration = *(Configuration*) c.data;
	Serial.println(c.status.getResponseDescription());
	Serial.println(c.status.code);

	printParameters(configuration);

	ResponseStructContainer cMi;
	cMi = e220ttl.getModuleInformation();
	// It's important get information pointer before all other operation
	ModuleInformation mi = *(ModuleInformation*)cMi.data;

	Serial.println(cMi.status.getResponseDescription());
	Serial.println(cMi.status.code);

	printModuleInformation(mi);
	c.close();
}

void loop() {

}
void printParameters(struct Configuration configuration) {
	Serial.println("----------------------------------------");

	Serial.print(F("HEAD : "));  Serial.print(configuration.COMMAND, HEX);Serial.print(" ");Serial.print(configuration.STARTING_ADDRESS, HEX);Serial.print(" ");Serial.println(configuration.LENGHT, HEX);
	Serial.println(F(" "));
	Serial.print(F("AddH : "));  Serial.println(configuration.ADDH, HEX);
	Serial.print(F("AddL : "));  Serial.println(configuration.ADDL, HEX);
	Serial.println(F(" "));
	Serial.print(F("Chan : "));  Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription());
	Serial.println(F(" "));
	Serial.print(F("SpeedParityBit     : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription());
	Serial.print(F("SpeedUARTDatte     : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRateDescription());
	Serial.print(F("SpeedAirDataRate   : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRateDescription());
	Serial.println(F(" "));
	Serial.print(F("OptionSubPacketSett: "));  Serial.print(configuration.OPTION.subPacketSetting, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getSubPacketSetting());
	Serial.print(F("OptionTranPower    : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());
	Serial.print(F("OptionRSSIAmbientNo: "));  Serial.print(configuration.OPTION.RSSIAmbientNoise, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getRSSIAmbientNoiseEnable());
	Serial.println(F(" "));
	Serial.print(F("TransModeWORPeriod : "));  Serial.print(configuration.TRANSMISSION_MODE.WORPeriod, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription());
	Serial.print(F("TransModeEnableLBT : "));  Serial.print(configuration.TRANSMISSION_MODE.enableLBT, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription());
	Serial.print(F("TransModeEnableRSSI: "));  Serial.print(configuration.TRANSMISSION_MODE.enableRSSI, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription());
	Serial.print(F("TransModeFixedTrans: "));  Serial.print(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription());


	Serial.println("----------------------------------------");
}
void printModuleInformation(struct ModuleInformation moduleInformation) {
	Serial.println("----------------------------------------");
	Serial.print(F("HEAD: "));  Serial.print(moduleInformation.COMMAND, HEX);Serial.print(" ");Serial.print(moduleInformation.STARTING_ADDRESS, HEX);Serial.print(" ");Serial.println(moduleInformation.LENGHT, DEC);

	Serial.print(F("Model no.: "));  Serial.println(moduleInformation.model, HEX);
	Serial.print(F("Version  : "));  Serial.println(moduleInformation.version, HEX);
	Serial.print(F("Features : "));  Serial.println(moduleInformation.features, HEX);
	Serial.println("----------------------------------------");

}

Ecco il risultato dello sketch

Success
1
----------------------------------------
HEAD : C1 0 8
 
AddH : 0
AddL : 3
 
Chan : 23 -> 433MHz
 
SpeedParityBit     : 0 -> 8N1 (Default)
SpeedUARTDatte     : 11 -> 9600bps (default)
SpeedAirDataRate   : 10 -> 2.4kbps (default)
 
OptionSubPacketSett: 0 -> 200bytes (default)
OptionTranPower    : 0 -> 22dBm (Default)
OptionRSSIAmbientNo: 0 -> Disabled (default)
 
TransModeWORPeriod : 11 -> 2000ms (default)
TransModeEnableLBT : 0 -> Disabled (default)
TransModeEnableRSSI: 1 -> Enabled
TransModeFixedTrans: 0 -> Transparent transmission (default)
----------------------------------------
Success
1
----------------------------------------
HEAD: C1 8 3
Model no.: 20
Version  : A
Features : 16
----------------------------------------

Come puoi vedere, aggiungo molti costruttori per ogni dispositivo, se cambi la prima configurazione puoi cambiare il dispositivo con lo stesso codice.

LoRa E32 request configuration logic analyzer Arduino
LoRa E32 request configuration logic analyzer Arduino

Per avere le informazioni corrette, aggiungo alcuni #define per cambiare il tipo di dispositivo (lo stesso #define gestisce più dispositivi, ne creo solo uno per tipo per semplicità).

#define E220_22
#define E220_30

Puoi selezionarne solo uno. Il parametro modifica la costante di potenza di trasmissione come descritto nello schema di configurazione.

Allo stesso modo è possibile selezionare una frequenza di riferimento

#define FREQUENCY_433
#define FREQUENCY_170
#define FREQUENCY_470
#define FREQUENCY_868
#define FREQUENCY_915

Puoi sceglierne solo uno. Il parametro modifica le frequenze di riferimento solo a scopo di visualizzazione,

Imposta configurazione

Naturalmente, quando hai una configurazione e vuoi cambiarla per il tuo scopo, penso che tu possa prendere la configurazione dal dispositivo, modificare ciò che vuoi e reimpostarla.

Ma nello sketch di esempio, aggiungo un set di configurazioni commentate, puoi decommentare la configurazione che vuoi. Negli altri esempi in libreria, c’è un riferimento alla relativa configurazione da applicare.

Ricorda che il parametro saveType è fondamentale per mantenere le opzioni al riavvio del dispositivo, WRITE_CFG_PWR_DWN_LOSE naturalmente perderai le impostazioni con WRITE_CFG_PWR_DWN_SAVE non perderai le impostazioni.

Ecco uno sketch dell’Arduino MKR WiFi 1010 (completamente connesso rimuovi M0, M1 e AUX se vuoi):

/*
 * LoRa E220
 * set configuration.
 * https://mischianti.org
 *
 * E220		  ----- Arduino MKR
 * M0         ----- 2 (or 3.3v)
 * M1         ----- 3 (or 3.3v)
 * RX         ----- 14 (PullUP)
 * TX         ----- 13 (PullUP)
 * AUX        ----- 1  (PullUP) o  (PullUP)
 * VCC        ----- 3.3v/5v
 * GND        ----- GND
 *
 */
#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 MKR WiFi 1010 -------------
LoRa_E220 e220ttl(&Serial1, 1, 2, 3); //  Serial AUX M0 M1
// -------------------------------------------------

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

// ---------- esp32 pins --------------
// LoRa_E220 e220ttl(&Serial2, 15, 21, 19); //  Serial 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
// -------------------------------------

void printParameters(struct Configuration configuration);
void printModuleInformation(struct ModuleInformation moduleInformation);

void setup() {
	Serial.begin(9600);
	while(!Serial){};
	delay(500);

	Serial.println();


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

	ResponseStructContainer c;
	c = e220ttl.getConfiguration();
	// It's important get configuration pointer before all other operation
	Configuration configuration = *(Configuration*) c.data;
	Serial.println(c.status.getResponseDescription());
	Serial.println(c.status.code);

	printParameters(configuration);

	//	----------------------- DEFAULT TRANSPARENT -----------------------
		configuration.ADDL = 0x03;
		configuration.ADDH = 0x00;

		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_200_00;
		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
		configuration.OPTION.transmissionPower = POWER_22;

		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
		configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//	----------------------- DEFAULT TRANSPARENT WITH RSSI -----------------------
//		configuration.ADDL = 0x03;
//		configuration.ADDH = 0x00;
//
//		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_200_00;
//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
//		configuration.OPTION.transmissionPower = POWER_22;
//
//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_ENABLED;
//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//	----------------------- FIXED SENDER -----------------------
	//		configuration.ADDL = 0x02;
	//		configuration.ADDH = 0x00;
	//
	//		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_200_00;
	//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
	//		configuration.OPTION.transmissionPower = POWER_22;
	//
	//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
	//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
	//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
	//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//
	//	----------------------- FIXED RECEIVER -----------------------
//			configuration.ADDL = 0x03;
//			configuration.ADDH = 0x00;
//
//			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_200_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.enableLBT = LBT_DISABLED;
//			configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//	----------------------- FIXED SENDER RSSI -----------------------
	//		configuration.ADDL = 0x02;
	//		configuration.ADDH = 0x00;
	//
	//		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_200_00;
	//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
	//		configuration.OPTION.transmissionPower = POWER_22;
	//
	//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_ENABLED;
	//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
	//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
	//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//
	//	----------------------- FIXED RECEIVER RSSI -----------------------
	//		configuration.ADDL = 0x03;
	//		configuration.ADDH = 0x00;
	//
	//		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_200_00;
	//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
	//		configuration.OPTION.transmissionPower = POWER_22;
	//
	//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_ENABLED;
	//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
	//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
	//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;

	//	----------------------- WOR SENDER -----------------------
	//		configuration.ADDL = 0x02;
	//		configuration.ADDH = 0x00;
	//
	//		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_200_00;
	//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
	//		configuration.OPTION.transmissionPower = POWER_22;
	//
	//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
	//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
	//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
	//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//
	//	----------------------- WOR RECEIVER -----------------------
//			configuration.ADDL = 0x03;
//			configuration.ADDH = 0x00;
//
//			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_200_00;
//			configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
//			configuration.OPTION.transmissionPower = POWER_22;
//
//			configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
//			configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
//			configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
//			configuration.TRANSMISSION_MODE.WORPeriod = WOR_500_000;
	//	----------------------- BROADCAST MESSAGE 1 -----------------------
//			configuration.ADDL = 0x04;
//			configuration.ADDH = 0x00;
//
//			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_200_00;
//			configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
//			configuration.OPTION.transmissionPower = POWER_22;
//
//			configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
//			configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
//			configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
//			configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//	----------------------- BROADCAST MESSAGE 2 -----------------------
//			configuration.ADDL = 0x05;
//			configuration.ADDH = 0x00;
//
//			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_200_00;
//			configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
//			configuration.OPTION.transmissionPower = POWER_22;
//
//			configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
//			configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
//			configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
//			configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	//	----------------------- BROADCAST MESSAGE 3 -----------------------
	//		configuration.ADDL = 0x06;
	//		configuration.ADDH = 0x00;
	//
	//		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_200_00;
	//		configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
	//		configuration.OPTION.transmissionPower = POWER_22;
	//
	//		configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
	//		configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
	//		configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
	//		configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;
	// Set configuration changed and set to not hold the configuration
	ResponseStatus rs = e220ttl.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
	Serial.println(rs.getResponseDescription());
	Serial.println(rs.code);

	c = e220ttl.getConfiguration();
	// It's important get configuration pointer before all other operation
	configuration = *(Configuration*) c.data;
	Serial.println(c.status.getResponseDescription());
	Serial.println(c.status.code);

	printParameters(configuration);

	c.close();
}

void loop() {

}
void printParameters(struct Configuration configuration) {
	Serial.println("----------------------------------------");

	Serial.print(F("HEAD : "));  Serial.print(configuration.COMMAND, HEX);Serial.print(" ");Serial.print(configuration.STARTING_ADDRESS, HEX);Serial.print(" ");Serial.println(configuration.LENGHT, HEX);
	Serial.println(F(" "));
	Serial.print(F("AddH : "));  Serial.println(configuration.ADDH, HEX);
	Serial.print(F("AddL : "));  Serial.println(configuration.ADDL, HEX);
	Serial.println(F(" "));
	Serial.print(F("Chan : "));  Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription());
	Serial.println(F(" "));
	Serial.print(F("SpeedParityBit     : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription());
	Serial.print(F("SpeedUARTDatte     : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRateDescription());
	Serial.print(F("SpeedAirDataRate   : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRateDescription());
	Serial.println(F(" "));
	Serial.print(F("OptionSubPacketSett: "));  Serial.print(configuration.OPTION.subPacketSetting, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getSubPacketSetting());
	Serial.print(F("OptionTranPower    : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());
	Serial.print(F("OptionRSSIAmbientNo: "));  Serial.print(configuration.OPTION.RSSIAmbientNoise, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getRSSIAmbientNoiseEnable());
	Serial.println(F(" "));
	Serial.print(F("TransModeWORPeriod : "));  Serial.print(configuration.TRANSMISSION_MODE.WORPeriod, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription());
	Serial.print(F("TransModeEnableLBT : "));  Serial.print(configuration.TRANSMISSION_MODE.enableLBT, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription());
	Serial.print(F("TransModeEnableRSSI: "));  Serial.print(configuration.TRANSMISSION_MODE.enableRSSI, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription());
	Serial.print(F("TransModeFixedTrans: "));  Serial.print(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription());


	Serial.println("----------------------------------------");
}
void printModuleInformation(struct ModuleInformation moduleInformation) {
	Serial.println("----------------------------------------");
	Serial.print(F("HEAD: "));  Serial.print(moduleInformation.COMMAND, HEX);Serial.print(" ");Serial.print(moduleInformation.STARTING_ADDRESS, HEX);Serial.print(" ");Serial.println(moduleInformation.LENGHT, DEC);

	Serial.print(F("Model no.: "));  Serial.println(moduleInformation.model, HEX);
	Serial.print(F("Version  : "));  Serial.println(moduleInformation.version, HEX);
	Serial.print(F("Features : "));  Serial.println(moduleInformation.features, HEX);
	Serial.println("----------------------------------------");

}


Ecco il risultato sulla console

Success
1
----------------------------------------
HEAD : C1 0 8
 
AddH : 0
AddL : 3
 
Chan : 23 -> 433MHz
 
SpeedParityBit     : 0 -> 8N1 (Default)
SpeedUARTDatte     : 11 -> 9600bps (default)
SpeedAirDataRate   : 10 -> 2.4kbps (default)
 
OptionSubPacketSett: 0 -> 200bytes (default)
OptionTranPower    : 0 -> 22dBm (Default)
OptionRSSIAmbientNo: 0 -> Disabled (default)
 
TransModeWORPeriod : 11 -> 2000ms (default)
TransModeEnableLBT : 0 -> Disabled (default)
TransModeEnableRSSI: 1 -> Enabled
TransModeFixedTrans: 0 -> Transparent transmission (default)
----------------------------------------
Success
1
Success
1
----------------------------------------
HEAD : C1 0 8
 
AddH : 0
AddL : 3
 
Chan : 23 -> 433MHz
 
SpeedParityBit     : 0 -> 8N1 (Default)
SpeedUARTDatte     : 11 -> 9600bps (default)
SpeedAirDataRate   : 10 -> 2.4kbps (default)
 
OptionSubPacketSett: 0 -> 200bytes (default)
OptionTranPower    : 0 -> 22dBm (Default)
OptionRSSIAmbientNo: 0 -> Disabled (default)
 
TransModeWORPeriod : 11 -> 2000ms (default)
TransModeEnableLBT : 0 -> Disabled (default)
TransModeEnableRSSI: 0 -> Disabled (default)
TransModeFixedTrans: 0 -> Transparent transmission (default)
----------------------------------------

La libreria è abbastanza semplice, ma nel prossimo capitolo testeremo varie opzioni del dispositivo.

Grazie

  1. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: specifiche ed utilizzo base
  2. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: libreria
  3. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: configurazione
  4. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: trasmissione fissa, broadcast, monitor e RSSI
  5. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: power saving ed invio di dati strutturati
  6. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: WOR il microcontrollore e lo shield per Arduino
  7. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: WOR il microcontrollore e lo shield per il WeMos D1 mini
  8. Ebyte LoRa E220 LLCC68 per Arduino, esp32 o esp8266: WOR il microcontrollore e lo shield per l’esp32 dev v1

Shield e PCB


Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *