Skip to content
CommunicationGSM / Cellular

SIM800L GSM/GPRS Module

Compact cellular module for SMS, calls, and GPRS data.

Wiring & code for

SIM800L practical reference

A compact quad-band GSM/GPRS module enabling SMS alerts, calls, and basic cellular data connectivity from a microcontroller. Built around SIMCom's SIM800L chipset, it's smaller and more power-efficient than the older SIM900A while covering all four common GSM frequency bands, making it the more popular default choice today for SMS-notification systems, remote monitoring, and IoT projects that need cellular connectivity without Wi-Fi.

Key specifications

  • Chipset: SIMCom SIM800L quad-band GSM/GPRS module
  • Frequency bands: Quad-band 850/900/1800/1900MHz, broad global carrier compatibility
  • Operating voltage: 3.4V–4.4V DC (breakout boards commonly regulate from a 5V input, but still require a supply capable of ~2A current spikes)
  • Operating current: ~epsilon current in sleep mode, average ~70 mA idle-registered, spikes up to ~2A during transmit bursts
  • SIM card: Micro-SIM card required (2G network only)
  • Functions: SMS send/receive, voice calls, basic GPRS data (2G only — no 3G/4G support)
  • Interface: UART, controlled via standard AT command set
  • Form factor: Very compact compared to the SIM900A, popular for space-constrained builds

Pinout and connection notes

The SIM800L's power requirement is the single most common source of problems: it needs a dedicated 3.7-4.2V supply (often from a LiPo battery or a beefy buck converter) able to deliver short ~2A current spikes during transmit — powering it directly from an Arduino's 5V pin will cause random brownouts and resets. RX is 3.3V logic level and should be level-shifted or divided down from 5V microcontrollers.

  • VCC: Power — requires a stable regulated 3.7-4.2V supply capable of ~2A peak current, NOT a standard 5V logic rail directly
  • GND: Ground
  • TX: UART transmit — connect to microcontroller RX
  • RX: UART receive — connect to microcontroller TX (3.3V logic level, use a divider from 5V boards)
  • RST: Module reset pin, active LOW
  • SIM slot: Micro-SIM card holder on the underside of the board
  • NET: Antenna connector — an external GSM antenna is essential for reliable signal

Integration checklist

  1. Confirm the exact part number and breakout-board revision.
  2. Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
  3. Check controller pin assignments and bus address or interface mode against the example code.
  4. Power up with external loads disconnected, then test signals before full integration.
  5. If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.

Troubleshooting and reproducibility

Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.

Board Integration

Library

SoftwareSerial by Arduino core

Built into the Arduino core — no install needed, just #include <SoftwareSerial.h>.

Wiring

Component pinArduino Uno pinNote
VCC—DO NOT power from the Arduino 5V pin. Needs a dedicated 3.7-4.2V, 2A-capable supply (e.g. a LiPo + buck regulator, or a bench supply) — transmit bursts can pull 2A spikes that brown out an Arduino-derived supply.
GNDGNDCommon ground between Arduino and the SIM800L's own power supply is required.
TXDD2 (RX)Module TX → Arduino RX, direct connection is fine (module logic is 2.8V but reads as valid HIGH).
RXDD3 (TX) via dividerUse a voltage divider (e.g. 1kΩ/2kΩ) — RXD is not 5V tolerant.

Swipe sideways to see every column →

C++
  • The single most common "it doesn't work" report with this module is power, not wiring or code — it needs a supply that can deliver 2A transient bursts during transmit, which an Arduino's 5V pin (fed from USB) cannot provide. Undersized power causes random resets, especially right when it tries to register on the network.
  • Add a large capacitor (1000µF+) close to the module's VCC/GND if you see resets during transmit, even with an adequately-rated supply — this is a commonly recommended stabilization step for this specific module.
  • Requires an activated SIM card with a PIN disabled (or unlocked in code) and 2G/GSM coverage in your area — many carriers have been sunsetting 2G, so confirm 2G is still available before assuming a hardware fault.
View full Arduino Uno guide