The SIM800L is a compact GSM/GPRS module that enables communication over cellular networks. It supports a wide range of functionalities, including SMS, voice calls, and data transmission via GPRS. This module is widely used in IoT applications, remote monitoring systems, and embedded projects requiring cellular connectivity. Its small size and low power consumption make it an excellent choice for portable and battery-powered devices.
The SIM800L module is designed to operate efficiently in a variety of environments. Below are its key technical details:
Parameter | Value |
---|---|
Operating Voltage | 3.4V to 4.4V |
Recommended Voltage | 4.0V |
Operating Current | 20mA (idle), up to 2A (peak during TX) |
Frequency Bands | Quad-band: 850/900/1800/1900 MHz |
Communication Protocols | GSM, GPRS (Class 12) |
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 has several pins for power, communication, and control. Below is the pinout description:
Pin Name | Description |
---|---|
VCC | Power input (3.4V to 4.4V). Use a stable power source to avoid resets. |
GND | Ground connection. |
RXD | UART Receive pin. Connect to the TX pin of the microcontroller. |
TXD | UART Transmit pin. Connect to the RX pin of the microcontroller. |
RST | Reset pin. Active low. Pull low for at least 100ms to reset the module. |
NET | Network status LED pin (blinks to indicate network activity). |
DTR | Data Terminal Ready. Used for sleep mode control. |
MIC+ | Microphone positive input for voice communication. |
MIC- | Microphone negative input for voice communication. |
SPK+ | Speaker positive output for voice communication. |
SPK- | Speaker negative output for voice communication. |
Below is an example of how to send an SMS using the SIM800L module with an Arduino UNO:
SIM800L Pin | Arduino UNO Pin |
---|---|
VCC | External 4.0V |
GND | GND |
RXD | D2 (via voltage divider) |
TXD | D3 |
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial SIM800L(2, 3); // RX = Pin 2, TX = Pin 3
void setup() {
// Initialize serial communication
Serial.begin(9600); // For debugging
SIM800L.begin(9600); // For SIM800L communication
Serial.println("Initializing SIM800L...");
delay(1000);
// 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);
SIM800L.println("\"");
delay(1000);
SIM800L.print(message);
delay(1000);
SIM800L.write(26); // Send Ctrl+Z to send the SMS
delay(5000);
Serial.println("SMS sent!");
}
Module Keeps Resetting
No Network Connection
No Response to AT Commands
SMS Not Sending
Q: Can the SIM800L work with a 5V power supply?
A: No, the SIM800L requires a voltage between 3.4V and 4.4V. Use a step-down regulator to provide the correct voltage.
Q: How do I reduce power consumption?
A: Use the DTR pin to enable sleep mode when the module is idle.
Q: What is the maximum data rate for GPRS?
A: The SIM800L supports a maximum GPRS data rate of 85.6 kbps.
Q: Can I use the SIM800L for voice calls?
A: Yes, the module supports voice calls. Connect a microphone and speaker to the MIC+/- and SPK+/- pins, respectively.
This concludes the documentation for the SIM800L module.