

The GSM SIM800L is a compact and cost-effective GSM/GPRS module that enables communication over mobile networks. It allows devices to send and receive SMS, make voice calls, and connect to the internet using GPRS. With its small size and versatile functionality, the SIM800L is widely used in IoT projects, remote monitoring systems, and embedded applications requiring cellular connectivity.








The SIM800L module is designed to operate efficiently in a variety of environments. Below are its key technical specifications:
| Parameter | Specification |
|---|---|
| Operating Voltage | 3.7V to 4.2V |
| Operating Current | 0.2A (average), up to 2A (peak during transmission) |
| Frequency Bands | GSM 850/900/1800/1900 MHz |
| Communication Protocols | GSM, GPRS (Class 12) |
| Data Rate (GPRS) | Uplink: 85.6 kbps, Downlink: 85.6 kbps |
| SIM Card Support | Micro SIM |
| Dimensions | 25mm x 23mm x 3mm |
| Operating Temperature | -40°C to +85°C |
The SIM800L module has several pins for power, communication, and control. Below is the pinout description:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power input (3.7V to 4.2V). Ensure a stable power supply with sufficient current. |
| 2 | GND | Ground connection. |
| 3 | RXD | UART Receive pin. Connect to the TX pin of the microcontroller. |
| 4 | TXD | UART Transmit pin. Connect to the RX pin of the microcontroller. |
| 5 | RST | Reset pin. Pull low to reset the module. |
| 6 | NET | Network status LED pin (blinks to indicate network activity). |
Power Supply:
Connecting to a Microcontroller:
Antenna and SIM Card:
Initialization:
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 with the SIM800L module
SIM800L.begin(9600); // Default baud rate for SIM800L
Serial.begin(9600); // Serial monitor for debugging
delay(1000); // Allow the module to initialize
// Send AT command to check communication
SIM800L.println("AT");
delay(1000);
while (SIM800L.available()) {
Serial.write(SIM800L.read()); // Print response to Serial Monitor
}
// Set SMS text mode
SIM800L.println("AT+CMGF=1"); // Set SMS mode to text
delay(1000);
// Send SMS
SIM800L.println("AT+CMGS=\"+1234567890\""); // Replace with recipient's phone number
delay(1000);
SIM800L.println("Hello, this is a test SMS from SIM800L!"); // SMS content
delay(1000);
SIM800L.write(26); // Send Ctrl+Z to indicate end of message
}
void loop() {
// No actions in loop
}
Module Not Responding to AT Commands:
SIM Card Not Detected:
No Network Signal:
AT+CSQ command to check signal strength (values above 10 are acceptable).Module Restarts During Transmission:
Q: Can the SIM800L work with 5V logic levels?
A: No, the SIM800L operates at 3.3V logic levels. Use a level shifter or voltage divider for 5V systems.
Q: How do I check if the module is registered on the network?
A: Use the AT+CREG? command. A response of +CREG: 0,1 indicates successful registration.
Q: Can the SIM800L connect to the internet?
A: Yes, the SIM800L supports GPRS for internet connectivity. Use AT commands like AT+CIPSTART to establish a connection.
Q: What is the maximum SMS length supported?
A: The SIM800L supports SMS messages up to 160 characters in text mode.
By following this documentation, you can effectively integrate the SIM800L module into your projects and troubleshoot common issues.