The SIM800L is a compact GSM/GPRS module manufactured by SIMCOM. It enables devices to communicate over mobile networks, supporting 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 ideal for IoT applications, remote monitoring systems, and embedded projects.
The SIM800L module is designed to operate efficiently in a variety of environments. Below are its key technical details:
Parameter | Value |
---|---|
Manufacturer | SIMCOM |
Module Name | SIM800L |
Network Support | GSM/GPRS (850/900/1800/1900 MHz) |
GPRS Class | Class 12 |
Power Supply Voltage | 3.4V - 4.4V |
Operating Current | ~20mA (idle), ~200mA (active) |
Peak Current | ~2A |
Operating Temperature | -40°C to +85°C |
Dimensions | 25mm x 23mm x 3mm |
The SIM800L module has several pins for power, communication, and control. Below is the pinout description:
Pin Name | Pin Number | Description |
---|---|---|
VCC | 1 | Power supply input (3.4V - 4.4V) |
GND | 2 | Ground |
RXD | 3 | UART Receive pin (connect to TX of microcontroller) |
TXD | 4 | UART Transmit pin (connect to RX of microcontroller) |
RST | 5 | Reset pin (active low) |
NET | 6 | Network status LED output |
ANT | 7 | Antenna connection |
To use the SIM800L module, follow these steps:
Below is an example of how to send an SMS using the SIM800L module and 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 in the loop
}
void sendSMS(String phoneNumber, String message) {
// Set SMS mode to text
SIM800L.println("AT+CMGF=1");
delay(1000);
// Set recipient phone number
SIM800L.print("AT+CMGS=\"");
SIM800L.print(phoneNumber);
SIM800L.println("\"");
delay(1000);
// Send the message
SIM800L.print(message);
delay(1000);
// End the message with Ctrl+Z (ASCII 26)
SIM800L.write(26);
delay(5000);
Serial.println("SMS sent!");
}
Module Not Responding to AT Commands
Frequent Restarts or Unstable Operation
No Network Connection
SMS Not Sending
Q: Can the SIM800L work with a 5V microcontroller?
A: Yes, but you need a level shifter for the RXD pin to avoid damaging the module, as it operates at 3.3V logic.
Q: What is the maximum data rate for GPRS?
A: The SIM800L supports a maximum GPRS data rate of 85.6 kbps.
Q: Can the SIM800L make voice calls?
A: Yes, the module supports voice calls using AT commands.
Q: How do I check the signal strength?
A: Use the AT command AT+CSQ
. The module will return a signal strength value (e.g., +CSQ: 20,0
).
By following this documentation, you can effectively integrate the SIM800L module into your projects and troubleshoot common issues.