Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

How to Use SIM800L: Examples, Pinouts, and Specs

Image of SIM800LDesign with SIM800L in Cirkit Designer

Introduction

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.

Explore Projects Built with SIM800L

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!

Common Applications

Technical Specifications

The SIM800L module is designed to operate efficiently in a variety of environments. Below are its key technical details:

Key Specifications

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

Pin Configuration

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.

Usage Instructions

How to Use the SIM800L in a Circuit

  1. Power Supply: The SIM800L requires a stable power supply of 4.0V. Use a low-dropout regulator (LDO) or a DC-DC converter to step down from a higher voltage source. Ensure the power supply can handle peak currents of up to 2A.
  2. Microcontroller Connection: Connect the RXD and TXD pins of the SIM800L to the TX and RX pins of your microcontroller, respectively. Use a logic level shifter if your microcontroller operates at 5V logic.
  3. Antenna: Attach an external antenna to the module for better signal reception. Use a spring antenna or a PCB antenna with the appropriate connector.
  4. SIM Card: Insert a micro SIM card into the SIM800L's SIM card slot. Ensure the SIM card is activated and has sufficient balance for SMS, calls, or data usage.
  5. Network Status: Monitor the NET pin or onboard LED to check the network status. The LED blinks at different rates to indicate the connection state:
    • Fast blinking: Searching for a network.
    • Slow blinking: Connected to a network.

Example: Connecting SIM800L to Arduino UNO

Below is an example of how to send an SMS using the SIM800L module with an Arduino UNO:

Circuit Connections

SIM800L Pin Arduino UNO Pin
VCC External 4.0V
GND GND
RXD D2 (via voltage divider)
TXD D3

Arduino Code

#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!");
}

Important Considerations

Troubleshooting and FAQs

Common Issues and Solutions

  1. Module Keeps Resetting

    • Cause: Insufficient power supply.
    • Solution: Use a power source capable of providing at least 2A peak current. Add capacitors to stabilize the voltage.
  2. No Network Connection

    • Cause: Poor signal strength or incorrect SIM card.
    • Solution: Check the antenna connection and ensure the SIM card is activated and inserted correctly.
  3. No Response to AT Commands

    • Cause: Incorrect UART connection or baud rate.
    • Solution: Verify the RX and TX connections. Ensure the baud rate matches the module's default (9600 bps).
  4. SMS Not Sending

    • Cause: Incorrect SMS format or insufficient balance.
    • Solution: Ensure the SIM card has enough balance and the phone number is in the correct format.

FAQs

This concludes the documentation for the SIM800L module.