TIMEOUT Error when using the EBYTE E220 LoRa Module
Posted: Thu Mar 05, 2026 3:52 pm
Hi,
I'm currently trying to use an EBYTE E220-900T22D LoRa Module with an ESP32 P4 from Waveshare but I can't get a response from the module and only get a Timeout Error.
Wiring:
TX (E220) → RX GPIO38
RX (E220) → TX GPIO37
AUX → GPIO45
M0 → GPIO32
M1 → GPIO27
VCC → 3.3V
GND → GND
Library: LoRa_E220 library by Renzo Mischianti.
Code (I am using Arduino IDE):
Problem: I want to send 2 values via the E220 Module, but every time when I upload the code, the serial monitor always prints
"START
e220 start
getConfiguration
Error: Timeout!!"
The Error seems to come from here somewhere. When I remove the lines, the error message in the serial monitor also disappears:
I have not made a receiver yet because I want this code to work before.
Earlier, instead of "Timeout" the serial monitor also printed
"assert failed: heap_caps_free heap_caps_base.c:80 (heap != NULL && "free() target pointer is outside heap areas")"
Questions:
* Is there anything wrong with my wiring or UART configuration?
* Do M0/M1 have to be set differently when reading the configuration?
* Is there anything specific required when using this module with an ESP32 P4 that I might have missed?
Any ideas would be greatly appeciated!
Thanks.
I'm currently trying to use an EBYTE E220-900T22D LoRa Module with an ESP32 P4 from Waveshare but I can't get a response from the module and only get a Timeout Error.
Wiring:
TX (E220) → RX GPIO38
RX (E220) → TX GPIO37
AUX → GPIO45
M0 → GPIO32
M1 → GPIO27
VCC → 3.3V
GND → GND
Library: LoRa_E220 library by Renzo Mischianti.
Code (I am using Arduino IDE):
Code: Select all
#include "LoRa_E220.h"
#include <HardwareSerial.h>
HardwareSerial mySerial(2);
#define RX_PIN 38
#define TX_PIN 37
#define AUX_PIN 45
#define M0_PIN 32
#define M1_PIN 27
LoRa_E220 e220(
TX_PIN, RX_PIN,
&mySerial,
AUX_PIN, M0_PIN, M1_PIN,
UART_BPS_RATE_9600,
SERIAL_8N1
);
struct SensorData {
float temperature;
float humidity;
};
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Serial.println("START");
e220.begin();
Serial.println("e220 start");
ResponseStructContainer c = e220.getConfiguration();
Serial.println("getConfiguration");
if (c.status.code == 1) {
Configuration config = *(Configuration*)c.data;
config.CHAN = 18;
config.OPTION.transmissionPower = POWER_13;
ResponseStatus rs = e220.setConfiguration(config, WRITE_CFG_PWR_DWN_SAVE);
Serial.println(rs.getResponseDescription());
} else {
Serial.print("Error: ");
Serial.println(c.status.getResponseDescription());
}
c.close();
}
void loop() {
SensorData data;
data.temperature = 23.56;
data.humidity = 51.2;
ResponseStatus rs = e220.sendMessage((uint8_t*)&data, sizeof(data));
delay(5000);
}
"START
e220 start
getConfiguration
Error: Timeout!!"
The Error seems to come from here somewhere. When I remove the lines, the error message in the serial monitor also disappears:
Code: Select all
ResponseStructContainer c = e220.getConfiguration();
Serial.println("getConfiguration");
if (c.status.code == 1) {
Configuration config = *(Configuration*)c.data;
config.CHAN = 18;
config.OPTION.transmissionPower = POWER_13;
ResponseStatus rs = e220.setConfiguration(config, WRITE_CFG_PWR_DWN_SAVE);
Serial.println(rs.getResponseDescription());
} else {
Serial.print("Error: ");
Serial.println(c.status.getResponseDescription());
}
c.close();I have not made a receiver yet because I want this code to work before.
Earlier, instead of "Timeout" the serial monitor also printed
"assert failed: heap_caps_free heap_caps_base.c:80 (heap != NULL && "free() target pointer is outside heap areas")"
Questions:
* Is there anything wrong with my wiring or UART configuration?
* Do M0/M1 have to be set differently when reading the configuration?
* Is there anything specific required when using this module with an ESP32 P4 that I might have missed?
Any ideas would be greatly appeciated!
Thanks.