this code worked for me transmitting and receiving datas using a pair of EBYTE LoRa E220 connected to an ESP32s
// ESP32_02_sendTransparentTransmission
// Load ESP32_02_sendTransparent_Struct into both ESP32
// both will transmit and display received data, e.g.
// ESP32 > transmit > (14) Success temperature 26.60 humidity 60.90 pressure 200.00
// received length 11 ResponseDescription Success
// seq 132 temperature 158.60 humidity 1380.90 pressure 13400.00 RSSI: 110
// *** Sequence number error ! expected 0
//
// ESP32 > transmit > (14) Success temperature 27.60 humidity 70.90 pressure 300.00
//received length 11 ResponseDescription Success
// seq 133 temperature 159.60 humidity 1390.90 pressure 13500.00 RSSI: 110
/*
* EBYTE LoRa E220
* send a transparent message, you must check that the transmitter and receiver have the same
* CHANNEL ADDL and ADDH
*
* Pay attention e220 support RSSI, if you want use that functionality you must enable RSSI on configuration
* configuration.TRANSMISSION_MODE.enableRSSI = RSSI_ENABLED;
*
* and uncomment #define ENABLE_RSSI true in this sketch
*
* You must uncommend the correct constructor.
*
* by Renzo Mischianti <https://www.mischianti.org>
*
* https://www.mischianti.org
*
* E220 ----- WeMos D1 mini ----- esp32 ----- Arduino Nano 33 IoT ----- Arduino MKR ----- Raspberry Pi Pico ----- stm32 ----- ArduinoUNO
* M0 ----- D7 (or GND) ----- 19 (or GND) ----- 4 (or GND) ----- 2 (or GND) ----- 10 (or GND) ----- PB0 (or GND) ----- 7 Volt div (or GND)
* M1 ----- D6 (or GND) ----- 21 (or GND) ----- 6 (or GND) ----- 4 (or GND) ----- 11 (or GND) ----- PB10 (or GND) ----- 6 Volt div (or GND)
* 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
*
*/
#define ENABLE_RSSI true
#define FREQUENCY_868
#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
// ESP32
#define RXD1 16
#define TXD1 17
// ---------- esp32 pins --------------
LoRa_E220 e220ttl(&Serial2, 18, 21, 19); // RX AUX M0 M1
// CHECK WIRING! using GetConfiguration
//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
// -------------------------------------------------
// test structure
struct __attribute__((packed)) Struct1 {
int16_t seq; // sequence number
float temperature;
float humidity;
float pressure;
};
Struct1 struct1 = { 0, 25.6f, 50.9f, 100.0f }; // test values
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, RXD1, TXD1);
// Startup all pins and UART
e220ttl.begin();
sendData();
}
void sendData(void) {
// update data ready for next transmissiom - replace with code to read sensor
struct1.temperature += 1.0f;
struct1.humidity += 10.0f;
struct1.pressure += 100.0f;
Serial.printf("\nESP32 > transmit > (%d) ", sizeof(struct1));
ResponseStatus rs = e220ttl.sendMessage(&struct1, sizeof(struct1));
// Check If there is some problem of succesfully send
Serial.print(rs.getResponseDescription()); // transmit structure and print vales transmitted
Serial.print(" temperature ");
Serial.print(struct1.temperature);
Serial.print(" humidity ");
Serial.print(struct1.humidity);
Serial.print(" pressure ");
Serial.println(struct1.pressure);
struct1.seq++;
}
void loop() {
static long timer = millis();
static int seqExpected = 0;
// If something available
if (e220ttl.available() > 1) {
delay(10);
Serial.printf("received length %d ", e220ttl.available());
// read the structure message
ResponseStructContainer rc = e220ttl.receiveMessageRSSI(sizeof(Struct1));
// Is something goes wrong print error
if (rc.status.code != 1) {
Serial.print(" ResponseDescription ");
Serial.println(rc.status.getResponseDescription());
} else {
// Print the data received
Serial.print(" ResponseDescription ");
Serial.println(rc.status.getResponseDescription());
Serial.print(" seq ");
Serial.print(((Struct1*)rc.data)->seq);
Serial.print(" temperature ");
Serial.print(((Struct1*)rc.data)->temperature);
Serial.print(" humidity ");
Serial.print(((Struct1*)rc.data)->humidity);
Serial.print(" pressure ");
Serial.print(((Struct1*)rc.data)->pressure);
Serial.print(" RSSI: ");
Serial.println(rc.rssi, DEC);
// check for sequence error
if (struct1.seq != seqExpected) {
Serial.print("*** Sequence number error ! expected ");
Serial.println(seqExpected);
}
seqExpected = struct1.seq + 1; // set up next sequence number
}
}
if (millis() - timer > 5000) {
timer = millis();
sendData();
}
}
transmitter serial monitor output
oad ESP32_02_sendTransparent_Struct into both ESP32
ESP32 COM4
ESP32 > transmit > (14) Success temperature 26.60 humidity 60.90 pressure 200.00
received length 11 ResponseDescription Success
seq 132 temperature 158.60 humidity 1380.90 pressure 13400.00 RSSI: 110
*** Sequence number error ! expected 0
ESP32 > transmit > (14) Success temperature 27.60 humidity 70.90 pressure 300.00
received length 11 ResponseDescription Success
seq 133 temperature 159.60 humidity 1390.90 pressure 13500.00 RSSI: 110
ESP32 > transmit > (14) Success temperature 28.60 humidity 80.90 pressure 400.00
received length 11 ResponseDescription Success
seq 134 temperature 160.60 humidity 1400.90 pressure 13600.00 RSSI: 110
receiver serial monitor output
ESP32 COM6
ESP32 > transmit > (14) Success temperature 63.60 humidity 430.90 pressure 3900.00
received length 11 ResponseDescription Success
seq 4 temperature 30.60 humidity 100.90 pressure 600.00 RSSI: 110
ESP32 > transmit > (14) Success temperature 64.60 humidity 440.90 pressure 4000.00
received length 11 ResponseDescription Success
seq 5 temperature 31.60 humidity 110.90 pressure 700.00 RSSI: 110
ESP32 > transmit > (14) Success temperature 65.60 humidity 450.90 pressure 4100.00
received length 11 ResponseDescription Success
seq 6 temperature 32.60 humidity 120.90 pressure 800.00 RSSI: 110