GSM / Cellular
Interfacing SIM800L GSM / Cellular with Arduino Uno
What is the SIM800L?
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
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- 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.
Setting Up SIM800L with Arduino Uno
Library
SoftwareSerial by Arduino core
Built into the Arduino core — no install needed, just #include <SoftwareSerial.h>.
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| 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. |
| GND | GND | Common ground between Arduino and the SIM800L's own power supply is required. |
| TXD | D2 (RX) | Module TX → Arduino RX, direct connection is fine (module logic is 2.8V but reads as valid HIGH). |
| RXD | D3 (TX) via divider | Use a voltage divider (e.g. 1kΩ/2kΩ) — RXD is not 5V tolerant. |
Swipe sideways to see every column →
- 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.
Related Components
Related Guides & Projects
Arduino Uno R4 Minima Pinout: Every GPIO, ADC, DAC, and Op-Amp Pin Explained
A complete Arduino Uno R4 Minima pinout reference — digital I/O, ADC, DAC, op-amp, CAN, dual UART, and exactly what it leaves out compared to the WiFi variant.
Mastering PWM on Arduino: Dimming LEDs and Controlling Motors
Understand what PWM actually is on Arduino, dim an LED smoothly, and safely control a DC motor's speed with a driver chip -- plus the mistakes (like wiring a motor straight to a pin) that damage boards.
4-Digit 7-Segment Counter with TM1637 & Arduino
Drive a TM1637-based 4-digit 7-segment display with Arduino Uno to show a real-time up/down counter, elapsed timer, and scrolling text. Covers library setup, brightness control, and custom segment mapping.
Arduino Uno R4 Minima vs WiFi: Which One Should You Choose?
Same processor, same memory, different price. Here's what the WiFi variant's extra hardware actually gets you, and when the Minima is the smarter buy.