

The E22-900M30S is a high-performance RF module manufactured by EBYTE. It is designed for wireless communication applications and operates in the 900 MHz frequency band. This module is ideal for low-power, long-range data transmission, making it a popular choice for IoT devices, remote sensor networks, and industrial automation systems.








| Parameter | Value |
|---|---|
| Operating Frequency | 900 MHz |
| Modulation Type | LoRa (Long Range) |
| Transmission Power | Up to 30 dBm (1 Watt) |
| Communication Distance | Up to 10 km (line of sight) |
| Supply Voltage | 2.8V to 5.5V |
| Operating Current | 120 mA (transmit mode) |
| Sleep Current | < 5 µA |
| Data Rate | 0.3 kbps to 19.2 kbps |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 24 mm x 43 mm x 3 mm |
The E22-900M30S module has 16 pins. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | M0 | Mode selection pin 0 (used to configure operating modes) |
| 2 | M1 | Mode selection pin 1 (used to configure operating modes) |
| 3 | RXD | UART data input (connect to TXD of the microcontroller) |
| 4 | TXD | UART data output (connect to RXD of the microcontroller) |
| 5 | AUX | Auxiliary pin (indicates module status, e.g., busy or idle) |
| 6 | VCC | Power supply input (2.8V to 5.5V) |
| 7 | GND | Ground |
| 8 | SET | Configuration pin (used for parameter settings) |
| 9-16 | NC | Not connected (reserved for future use) |
Below is an example of how to connect the E22-900M30S to an Arduino UNO and send data.
| E22-900M30S Pin | Arduino UNO Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| RXD | D3 (via voltage divider if using 5V logic) |
| TXD | D2 |
| M0 | D4 |
| M1 | D5 |
| AUX | D6 |
#include <SoftwareSerial.h>
// Define pins for SoftwareSerial
#define E22_TX 2 // Connect to TXD of E22-900M30S
#define E22_RX 3 // Connect to RXD of E22-900M30S
#define M0_PIN 4 // Connect to M0 of E22-900M30S
#define M1_PIN 5 // Connect to M1 of E22-900M30S
#define AUX_PIN 6 // Connect to AUX of E22-900M30S
SoftwareSerial E22Serial(E22_RX, E22_TX);
void setup() {
// Initialize serial communication
Serial.begin(9600); // For debugging
E22Serial.begin(9600); // Communication with E22-900M30S
// Configure mode pins
pinMode(M0_PIN, OUTPUT);
pinMode(M1_PIN, OUTPUT);
pinMode(AUX_PIN, INPUT);
// Set module to Normal mode (M0 = 0, M1 = 0)
digitalWrite(M0_PIN, LOW);
digitalWrite(M1_PIN, LOW);
Serial.println("E22-900M30S Initialized");
}
void loop() {
// Send data to the E22 module
E22Serial.println("Hello, E22-900M30S!");
// Wait for the module to process the data
delay(1000);
// Check for incoming data
if (E22Serial.available()) {
String receivedData = E22Serial.readString();
Serial.print("Received: ");
Serial.println(receivedData);
}
delay(2000); // Delay between transmissions
}
No Communication Between Devices
Short Communication Range
Module Not Responding
Data Corruption
Q: Can I use the E22-900M30S with a 5V microcontroller?
A: Yes, but you must use a voltage divider or level shifter for the RXD pin to avoid damaging the module.
Q: How do I configure the module's parameters?
A: Parameters can be configured using AT commands via UART or a dedicated configuration tool provided by EBYTE.
Q: What is the maximum data rate of the module?
A: The maximum data rate is 19.2 kbps, which is suitable for low-power, long-range applications.