/* * LoRa E220 * Set configuration. * * You must uncommend the correct constructor. * * by Renzo Mischianti * * https://www.mischianti.org * * E220 ----- WeMos D1 mini ----- esp32 ----- Arduino Nano 33 IoT ----- Arduino MKR ----- Raspberry Pi Pico ----- stm32 ----- ArduinoUNO * M0 ----- D7 (or 3.3v) ----- 19 (or 3.3v) ----- 4 (or 3.3v) ----- 2 (or 3.3v) ----- 10 (or 3.3v) ----- PB0 (or 3.3v) ----- 7 Volt div (or 3.3v) * M1 ----- D6 (or 3.3v) ----- 21 (or 3.3v) ----- 6 (or 3.3v) ----- 4 (or 3.3v) ----- 11 (or 3.3v) ----- PB10 (or 3.3v) ----- 6 Volt div (or 3.3v) * TX ----- D3 (PullUP) ----- TX2 (PullUP) ----- TX1 (PullUP) ----- 14 (PullUP) ----- 8 (PullUP) ----- PA2 TX2 (PullUP) ----- 4 (PullUP) * RX ----- D4 (PullUP) ----- RX2 (PullUP) ----- RX1 (PullUP) ----- 13 (PullUP) ----- 9 (PullUP) ----- PA3 RX2 (PullUP) ----- 5 Volt div (PullUP) * AUX ----- D5 (PullUP) ----- 18 (PullUP) ----- 2 (PullUP) ----- 0 (PullUP) ----- 2 (PullUP) ----- PA0 (PullUP) ----- 3 (PullUP) * VCC ----- 3.3v/5v ----- 3.3v/5v ----- 3.3v/5v ----- 3.3v/5v ----- 3.3v/5v ----- 3.3v/5v ----- 3.3v/5v * GND ----- GND ----- GND ----- GND ----- GND ----- GND ----- 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 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 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 // ------------------------------------------------- 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; // First part of address configuration.ADDH = 0x00; // Second part configuration.CHAN = 23; // Communication channel configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate configuration.SPED.uartParity = MODE_00_8N1; // Parity bit configuration.OPTION.subPacketSetting = SPS_200_00; // Packet size configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command configuration.OPTION.transmissionPower = POWER_22; // Device power configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Enable repeater mode configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing // ----------------------- 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_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 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_2000_011; // ----------------------- 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; // ----------------------- BROADCAST MESSAGE RSSI 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_ENABLED; // configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION; // configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // ----------------------- BROADCAST MESSAGE RSSI 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_ENABLED; // configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION; // configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // ----------------------- BROADCAST MESSAGE RSSI 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_ENABLED; // configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION; // configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // ----------------------- MONITORING ----------------------- // configuration.ADDL = BROADCAST_ADDRESS; // configuration.ADDH = BROADCAST_ADDRESS; // // 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) { DEBUG_PRINTLN("----------------------------------------"); DEBUG_PRINT(F("HEAD : ")); DEBUG_PRINT(configuration.COMMAND, HEX);DEBUG_PRINT(" ");DEBUG_PRINT(configuration.STARTING_ADDRESS, HEX);DEBUG_PRINT(" ");DEBUG_PRINTLN(configuration.LENGHT, HEX); DEBUG_PRINTLN(F(" ")); DEBUG_PRINT(F("AddH : ")); DEBUG_PRINTLN(configuration.ADDH, HEX); DEBUG_PRINT(F("AddL : ")); DEBUG_PRINTLN(configuration.ADDL, HEX); DEBUG_PRINTLN(F(" ")); DEBUG_PRINT(F("Chan : ")); DEBUG_PRINT(configuration.CHAN, DEC); DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.getChannelDescription()); DEBUG_PRINTLN(F(" ")); DEBUG_PRINT(F("SpeedParityBit : ")); DEBUG_PRINT(configuration.SPED.uartParity, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.SPED.getUARTParityDescription()); DEBUG_PRINT(F("SpeedUARTDatte : ")); DEBUG_PRINT(configuration.SPED.uartBaudRate, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.SPED.getUARTBaudRateDescription()); DEBUG_PRINT(F("SpeedAirDataRate : ")); DEBUG_PRINT(configuration.SPED.airDataRate, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.SPED.getAirDataRateDescription()); DEBUG_PRINTLN(F(" ")); DEBUG_PRINT(F("OptionSubPacketSett: ")); DEBUG_PRINT(configuration.OPTION.subPacketSetting, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.OPTION.getSubPacketSetting()); DEBUG_PRINT(F("OptionTranPower : ")); DEBUG_PRINT(configuration.OPTION.transmissionPower, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.OPTION.getTransmissionPowerDescription()); DEBUG_PRINT(F("OptionRSSIAmbientNo: ")); DEBUG_PRINT(configuration.OPTION.RSSIAmbientNoise, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.OPTION.getRSSIAmbientNoiseEnable()); DEBUG_PRINTLN(F(" ")); DEBUG_PRINT(F("TransModeWORPeriod : ")); DEBUG_PRINT(configuration.TRANSMISSION_MODE.WORPeriod, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription()); DEBUG_PRINT(F("TransModeEnableLBT : ")); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableLBT, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription()); DEBUG_PRINT(F("TransModeEnableRSSI: ")); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableRSSI, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription()); DEBUG_PRINT(F("TransModeFixedTrans: ")); DEBUG_PRINT(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);DEBUG_PRINT(" -> "); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription()); DEBUG_PRINTLN("----------------------------------------"); } void printModuleInformation(struct ModuleInformation moduleInformation) { Serial.println("----------------------------------------"); DEBUG_PRINT(F("HEAD: ")); DEBUG_PRINT(moduleInformation.COMMAND, HEX);DEBUG_PRINT(" ");DEBUG_PRINT(moduleInformation.STARTING_ADDRESS, HEX);DEBUG_PRINT(" ");DEBUG_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("----------------------------------------"); }