The SIM800L is a compact GSM/GPRS module designed for communication over cellular networks. It supports a wide range of functionalities, including SMS, voice calls, and data transmission via GPRS. With its small size and low power consumption, the SIM800L is an excellent choice for IoT applications, remote monitoring, and embedded systems requiring cellular connectivity.
The SIM800L module typically has 12 pins. Below is the pinout and description:
Pin | Name | Description |
---|---|---|
1 | NET | Network status LED (blinks to indicate GSM status) |
2 | VCC | Power supply input (3.4V to 4.4V, recommended 4.0V) |
3 | GND | Ground connection |
4 | RXD | UART Receive pin (connect to TX of microcontroller) |
5 | TXD | UART Transmit pin (connect to RX of microcontroller) |
6 | RST | Reset pin (active low, pull low for 100ms to reset the module) |
7 | VDD_EXT | External voltage output (not commonly used) |
8 | SIM_TXD | SIM card UART transmit (used internally, not typically connected externally) |
9 | SIM_RXD | SIM card UART receive (used internally, not typically connected externally) |
10 | SIM_RST | SIM card reset (used internally) |
11 | SIM_CLK | SIM card clock (used internally) |
12 | SIM_DATA | SIM card data (used internally) |
Power Supply:
Connections:
VCC
pin to the 4.0V power supply and GND
to ground.TXD
pin of the SIM800L to the RX pin of your microcontroller.RXD
pin of the SIM800L to the TX pin of your microcontroller.RST
pin to a GPIO pin of your microcontroller for resetting the module.Antenna:
SIM Card:
Communication:
Below is an example of how to send an SMS using the SIM800L and Arduino UNO:
VCC
to a 4.0V power supplyGND
to Arduino GNDTXD
to Arduino pin 10 (RX)RXD
to Arduino pin 11 (TX)RST
to Arduino pin 9 (optional)#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial sim800l(10, 11); // RX, TX
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);
while (sim800l.available()) {
Serial.write(sim800l.read());
}
// 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);
sim800l.println("\"");
delay(1000);
sim800l.print(message); // Message 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:
Poor Signal Quality:
Module Keeps Restarting:
SMS Not Sending:
Can I use a 5V power supply for the SIM800L? No, the SIM800L requires a voltage between 3.4V and 4.4V. Using 5V can damage the module.
What is the default baud rate of the SIM800L? The default baud rate is 9600, but it can be changed using AT commands.
Can the SIM800L be used for internet access? Yes, the SIM800L supports GPRS for data transmission. You can use AT commands to configure and establish a GPRS connection.
How do I reset the SIM800L?
Pull the RST
pin low for at least 100ms and then release it to reset the module.