

The ESP32 SIM800L is a powerful combination of the ESP32 microcontroller and the SIM800L GSM/GPRS module. This pairing enables users to create IoT projects with cellular connectivity, allowing for SMS, voice calls, and internet access over a GSM network. The ESP32 provides robust processing power and Wi-Fi/Bluetooth capabilities, while the SIM800L adds GSM functionality, making this combination ideal for remote monitoring, IoT devices, and smart systems.








| Parameter | Value |
|---|---|
| Microcontroller | Tensilica Xtensa LX6 (dual-core) |
| Operating Voltage | 3.3V |
| Flash Memory | 4MB (varies by model) |
| Wi-Fi Standards | 802.11 b/g/n |
| Bluetooth Version | v4.2 BR/EDR and BLE |
| GPIO Pins | 34 |
| ADC Channels | 18 |
| Operating Temperature | -40°C to 125°C |
| Parameter | Value |
|---|---|
| Operating Voltage | 3.4V - 4.4V |
| Operating Current | 1.0A (peak), ~20mA (idle) |
| Frequency Bands | GSM 850/900/1800/1900 MHz |
| GPRS Data | Class 12 |
| SMS Support | Text and PDU modes |
| Voice Call Support | Yes |
| Antenna Connector | IPX or external antenna |
| Pin Name | Description |
|---|---|
| GPIO0 | Boot mode selection |
| GPIO2 | General-purpose I/O |
| GPIO21 | I2C SDA |
| GPIO22 | I2C SCL |
| 3V3 | 3.3V power output |
| GND | Ground |
| Pin Name | Description |
|---|---|
| VCC | Power input (3.4V - 4.4V) |
| GND | Ground |
| RXD | UART receive pin |
| TXD | UART transmit pin |
| RST | Reset pin |
| NET | Network status LED output |
TXD pin to the ESP32's RX pin and the RXD pin to the ESP32's TX pin. Use a voltage divider or level shifter to avoid damaging the SIM800L, as it operates at 3.3V logic levels.Below is an example of how to send an SMS using the ESP32 and SIM800L:
#include <HardwareSerial.h>
// Create a hardware serial object for SIM800L communication
HardwareSerial sim800l(1);
void setup() {
// Initialize serial communication for debugging
Serial.begin(115200);
// Initialize SIM800L communication on UART2 (GPIO16, GPIO17)
sim800l.begin(9600, SERIAL_8N1, 16, 17); // RX=16, TX=17
// Wait for the SIM800L to initialize
delay(3000);
Serial.println("Initializing SIM800L...");
// Send AT command to check communication
sim800l.println("AT");
delay(1000);
while (sim800l.available()) {
Serial.write(sim800l.read());
}
// Set SMS text mode
sim800l.println("AT+CMGF=1"); // Set SMS to text mode
delay(1000);
while (sim800l.available()) {
Serial.write(sim800l.read());
}
// Send SMS command
sim800l.println("AT+CMGS=\"+1234567890\""); // Replace with recipient's number
delay(1000);
sim800l.print("Hello from ESP32 and SIM800L!"); // SMS content
delay(1000);
sim800l.write(26); // Send Ctrl+Z to indicate end of message
delay(5000);
Serial.println("SMS sent!");
}
void loop() {
// No actions in the loop
}
SIM800L Not Responding to AT Commands
No GSM Network Detected
SMS Not Sending
ESP32 Resetting During Operation
Can I use the ESP32's 3.3V pin to power the SIM800L?
What is the maximum SMS length supported?
Can I use the SIM800L for internet access?
AT+CIPSTART to establish a connection.Is the SIM800L compatible with 4G networks?