

The GSM SIM800L is a compact GSM/GPRS module designed for wireless communication over cellular networks. It supports quad-band GSM frequencies (850/900/1800/1900 MHz) and provides functionalities such as sending and receiving SMS, making voice calls, and connecting to the internet via GPRS. Its small size and low power consumption make it an ideal choice for IoT applications, remote monitoring systems, and embedded projects requiring cellular connectivity.








The SIM800L module is packed with features that make it versatile and easy to integrate into various projects. Below are its key technical specifications:
| Parameter | Specification |
|---|---|
| Operating Voltage | 3.7V to 4.2V |
| Recommended Voltage | 4.0V |
| Power Consumption | Idle: ~1mA, Active: ~200mA, Peak: ~2A |
| Frequency Bands | GSM 850/900/1800/1900 MHz |
| Communication Protocols | GSM, GPRS, SMS, Voice |
| Data Rate (GPRS) | Up to 85.6 kbps |
| SIM Card Support | Micro SIM |
| Dimensions | 25mm x 23mm x 3mm |
| Operating Temperature | -40°C to +85°C |
The SIM800L module typically has 12 pins. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | NET | Network status LED (blinks to indicate GSM status) |
| 2 | VCC | Power supply input (3.7V to 4.2V, recommended 4.0V) |
| 3 | GND | Ground |
| 4 | RST | Reset pin (active low, pull low to reset the module) |
| 5 | RXD | UART Receive pin (connect to TX of microcontroller) |
| 6 | TXD | UART Transmit pin (connect to RX of microcontroller) |
| 7 | DTR | Data Terminal Ready (used for sleep mode control) |
| 8 | MIC+ | Microphone positive input |
| 9 | MIC- | Microphone negative input |
| 10 | SPK+ | Speaker positive output |
| 11 | SPK- | Speaker negative output |
| 12 | ANT | Antenna connection (external antenna required for proper operation) |
Below is an example of how to send an SMS using the SIM800L module with an Arduino UNO:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial sim800l(10, 11); // RX = 10, TX = 11
void setup() {
// Initialize serial communication
Serial.begin(9600); // For debugging
sim800l.begin(9600); // For SIM800L communication
// Wait for the module to initialize
delay(1000);
Serial.println("Initializing SIM800L...");
// Send AT command to check communication
sim800l.println("AT");
delay(1000);
if (sim800l.available()) {
Serial.println("SIM800L is ready!");
} else {
Serial.println("No response from SIM800L.");
}
// Send SMS
sendSMS("+1234567890", "Hello from SIM800L!");
}
void loop() {
// Nothing to do here
}
void sendSMS(String phoneNumber, String message) {
sim800l.println("AT+CMGF=1"); // Set SMS mode to text
delay(1000);
sim800l.print("AT+CMGS=\"");
sim800l.print(phoneNumber); // Set recipient phone number
sim800l.println("\"");
delay(1000);
sim800l.print(message); // Write the SMS content
delay(1000);
sim800l.write(26); // Send Ctrl+Z to send the SMS
delay(5000);
Serial.println("SMS sent!");
}
Module Not Responding to AT Commands
No GSM Signal
AT+CSQ command to check signal quality (values above 10 are acceptable).Module Keeps Restarting
SMS Not Sending
AT+CMGF=1 command to ensure the module is in text mode.Q: Can the SIM800L work with a 5V microcontroller?
Q: How do I check the module's firmware version?
AT+GMR command to retrieve the firmware version.Q: Can the SIM800L connect to the internet?
AT+SAPBR and AT+HTTP for HTTP requests.Q: What is the maximum SMS length supported?
By following this documentation, you can effectively integrate the SIM800L module into your projects and troubleshoot common issues.