Panduan Lengkap & Rinci SIM800L v2 dengan Arduino Uno, Mega, dan ESP32
1) Pendahuluan
Dalam proyek Internet of Things (IoT), ada saatnya perangkat harus berkomunikasi di lokasi tanpa WiFiβmisalnya kebun, gudang, alat ukur bergerak, atau sistem keamanan rumah terpencil. Di kondisi seperti ini, jaringan seluler (GSM/GPRS) adalah solusi praktis. Modul SIM800L v2 memungkinkan mikrokontroler (Arduino/ESP32) bertindak seperti βponsel mungilβ yang bisa:
- π© Kirim/terima SMS (notifikasi alarm, laporan sensor, perintah kontrol),
- π Telepon suara (auto-call saat kondisi darurat),
- π Akses internet GPRS (2G) (kirim data ke server/cloud IoT).
Kapan SIM800L v2 cocok dipakai?
- Area tanpa WiFi tetapi masih ada sinyal GSM,
- Proyek monitoring (level air, suhu, kelembapan, arus listrik),
- Keamanan (alarm pintu/jendela, PIR, getaran),
- Kendali jarak jauh (relay/pompa dinyalakan via SMS/telepon),
- Pelacakan (dikombinasikan modul GPS, koordinat dikirim via SMS/server).
Catatan penting: SIM800L v2 bekerja pada 5v dan saat transmisi bisa butuh arus puncak Β±2A. Daya tidak stabil = restart, gagal registrasi, atau modul rusak. Catu daya adalah kunci!
2) Sekilas Teknis: Cara Kerja SIM800L
- Komunikasi dengan mikrokontroler via UART (TX/RX).
- Mikrokontroler mengirim AT Command .
- SIM800L memproses, berkomunikasi ke jaringan GSM, lalu mengirim respon kembali.
- Untuk data (GPRS), kamu set APN, attach ke paket data, lalu buka koneksi TCP/HTTP/MQTT sesuai kebutuhan.
Baudrate & Autobaud: Banyak modul mendukung autobaud. Umumnya aman mulai di 9600 lalu βdikunciβ dengan
AT+IPR=9600
(opsional). Sesuaikan dengan stabilitas proyekmu.
3) Kelebihan & Kekurangan
Kelebihan
- Murah, mudah didapat, modul kecil, fitur lengkap (SMS/Voice/GPRS).
- Kompatibel luas (Arduino/ESP32/ESP8266/STM32/RPi).
- Konsumsi daya relatif rendah untuk kelas GSM.
Kekurangan
- Hanya 2G (pastikan 2G masih aktif & kuat di daerahmu).
- Butuh catu daya 5v yang sanggup arus puncak (Β±2A).
- Sensitif sinyal (wajib antena baik, jauhkan dari sumber noise).
4) Persiapan Wajib
- Kartu SIM aktif, pulsa/paket data cukup, PIN SIM dinonaktifkan.
- Pasang antena rapat & arahkan ke area sinyal terbaik.
- Catu daya bisa dari 5v atau mau pake baterai yang 5v
- Tambahkan kapasitor low-ESR di Vbat SIM800L (misal 470β1000Β΅F paralel 100nF).
- Siapkan level shifter sederhana (divider) untuk RX SIM800L jika dari Arduino 5V.
- Uji respon dasar via serial:
AT
βOK
,AT+CSQ
,AT+CREG?
,AT+CCID
.
5) Komponen yang Direkomendasikan
- 1Γ SIM800L v2 (dengan antena kabel/PCB)
- 1Γ Arduino Uno / Arduino Mega / ESP32
- 1Γ Power supply 5v
6) Pin-Pin Penting SIM800L v2
- Vbat: 5v
- GND: ground bersama mikrokontroler
- TXD (keluar dari SIM800L): ke RX mikrokontroler
- RXD (masuk ke SIM800L): dari TX mikrokontroler
- PWRKEY: tahan ke GND Β±1 detik untuk power-on
- RST: reset modul (aktif low)
7) Tabel Perbandingan (lebih detail)
Board | UART Dipakai | Level Tegangan ke RX SIM800L | Stabilitas Komunikasi | Catatan Daya |
---|---|---|---|---|
Arduino Uno | SoftwareSerial (10/11) | Wajib divider 5Vβ3.xV | Baik di 9600; hindari tinggi | Wajib supply terpisah + buffer cap |
Arduino Mega | Hardware Serial1 (18/19) | Wajib divider 5Vβ3.xV | Sangat stabil, cocok beban berat | Sama: supply terpisah + buffer cap |
ESP32 | Hardware Serial2 (16/17) | Aman langsung (3.3V) | Sangat stabil & cepat | Sama: supply terpisah + buffer cap |
8) Prosedur Start-Up yang Rapi (step-by-step)
- Pasang SIM (pastikan PIN SIM off).
- Pasang antena ke konektor modul.
- Rangkai daya: Vbat 5V, GND
- Sambung UART sesuai board (perhatikan divider untuk 5V).
- Nyalakan modul:
- Cek dasar via serial:
AT
βOK
AT+CSQ
(cek kualitas sinyal)AT+CCID
(baca SIM)AT+CREG?
(status registrasi jaringan)
- Setelah registered, lanjutkan ke SMS/Call/GPRS sesuai kebutuhan.
9) AT Command βCheat Sheetβ (singkat & penting, tanpa kode)
- Koneksi dasar:
AT
β tes koneksiATI
β info modulAT+CSQ
β kualitas sinyal (0β31; makin besar makin baik)AT+CPIN?
β status PIN SIMAT+CREG?
β registrasi ke jaringan (2/5 = registered)
- SMS teks:
AT+CMGF=1
β mode teksAT+CSCS="GSM"
β set char setAT+CMGS="+62XXXXXXXXXX"
lalu kirim pesan, akhiri dengan Ctrl+Z (0x1A)
- Panggilan:
ATD+62XXXXXXXXXX;
β panggilATH
β tutup teleponATA
β jawab panggilan masuk
- GPRS (garis besar):
- Set APN operator (format umum):
AT+CGDCONT=1,"IP","APN_OPERATOR"
- Attach:
AT+CGATT=1
- Aktifkan PDP & buka koneksi (TCP/HTTP/β¦ sesuai stack yang kamu pakai di codinganmu)
- Set APN operator (format umum):
10) Kualitas Daya & Penataan Fisik (sering dilupakan tapi krusial)
- Jauhkan modul dari motor/relay atau sumber noise.
- Ground yang baik (single point star GND) membantu stabilitas.
11) Troubleshooting (mekanis β elektris β protokol)
A. Modul tidak menyala
- Cek Vbat 3.7β4.2V saat idle dan saat TX (tidak drop <3.6V).
- Tahan PWRKEY ke GND Β±1 detik jika perlu.
- Cek polaritas, antena terpasang.
B. LED indikator berkedip cepat / tak pernah βtenangβ
- Artinya belum register jaringan atau sinyal buruk.
- Pindah lokasi, perbaiki antena, cek
AT+CSQ
. - Pastikan SIM aktif & tidak ke-lock PIN.
C. Modul sering restart / SMS gagal
- 99% karena daya drop., perpendek kabel, pakai supply arus besar.
- Kurangi beban lain di supply yang sama.
D. Tidak ada respon AT
- Cek pin TX/RX terbalik?
- Coba baudrate 9600 (autobaud).
- Jika Arduino 5V β pastikan divider ke RX SIM800L sudah benar .
- Pastikan GND common.
E. GPRS tidak jalan
- Salah APN atau layanan data mati.
AT+CGATT?
harus 1 (attached).- Cek kualitas sinyal (
AT+CSQ
) & registrasi (AT+CREG?
).
12) Best Practice
- Kunci baudrate stabil (contoh 9600) setelah autobaud sukses.
- Implementasi retry & timeout pada komunikasi serial.
- Logika aplikasi: cek sinyal β cek registrasi β baru aksi.
- Jika ada relay/motor, gunakan driver terpisah + flyback diode; pisahkan ground power motor dari jalur sensitif sebisa mungkin.
- Simpan nomor tujuan SMS/telepon di EEPROM/Preferences agar mudah di-update tanpa reflash.
13) Alur Konsep (Flow)
[Event/Sensor/Perintah]
β
[MCU: Arduino/ESP32]
- Validasi kondisi
- Format AT Command
β
[SIM800L v2]
- Registrasi ke jaringan
- Eksekusi SMS/Call/GPRS
β
[Jaringan GSM]
β
[HP Pengguna / Server Cloud]
14) Kolom Codingan
πΉ Arduino Uno

A) Arduino Uno (5V, SoftwareSerial)
- SIM800L TXD β Arduino Pin 3 (RX SoftwareSerial)
- Arduino Pin 2 (TX) β SIM800L RXD
- GND β GND
- Vbat SIM800L β 5.0V stabil
- Kapasitor low-ESR dekat Vbat modul.
Catatan: SoftwareSerial kurang stabil di baudrate tinggi. Mulailah di 9600 untuk andal.
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// SoftwareSerial untuk komunikasi dengan SIM800L
SoftwareSerial sim800(2, 3); // RX, TX
// LCD I2C (alamat bisa 0x27 atau 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Nomor tujuan SMS
String nomor = "+628xxxxxxxxxx"; // ganti dengan nomor HP tujuan
String pesan = "Halo, ini test SMS dari TEMINS";
void setup() {
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Test SIM800L by temins");
// Serial Monitor
Serial.begin(9600);
sim800.begin(9600);
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Kirim SMS...");
// Mode SMS text
sim800.println("AT+CMGF=1");
delay(1000);
// Set nomor tujuan
sim800.print("AT+CMGS=\"");
sim800.print(nomor);
sim800.println("\"");
delay(1000);
// Tulis isi pesan
sim800.print(pesan);
delay(500);
// Kirim dengan Ctrl+Z (ASCII 26)
sim800.write(26);
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMS Terkirim!");
Serial.println("SMS berhasil dikirim.");
}
void loop() {
// Tampilkan respon SIM800L di Serial Monitor
if (sim800.available()) {
Serial.write(sim800.read());
}
}
πΉ Arduino Mega

Arduino Mega
- SIM800L TXD β RX1 (Pin 19)
- TX1 (Pin 18) β RXD SIM800L
- GND β GND
- Vbat β 5.0V stabil,
Kelebihan Mega: pakai UART hardware, komunikasi lebih stabil di baudrate lebih tinggi.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Gunakan Serial1 (Pin 18=TX1, Pin 19=RX1) untuk SIM800L
#define sim800 Serial1
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Nomor tujuan SMS
String nomor = "+628xxxxxxxxxx"; // ganti dengan nomor tujuan
String pesan = "Halo dari TEMINS";
void setup() {
// LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Mega + SIM800L");
// Serial Monitor
Serial.begin(9600);
// SIM800L
sim800.begin(9600);
delay(3000);
lcd.setCursor(0, 1);
lcd.print("Kirim SMS...");
// Mode SMS text
sim800.println("AT+CMGF=1");
delay(1000);
// Kirim SMS
sim800.print("AT+CMGS=\"");
sim800.print(nomor);
sim800.println("\"");
delay(1000);
sim800.print(pesan);
delay(500);
sim800.write(26); // Ctrl+Z
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMS Terkirim!");
Serial.println("SMS berhasil dikirim.");
// Aktifkan notifikasi SMS masuk
sim800.println("AT+CNMI=1,2,0,0,0");
delay(1000);
}
void loop() {
// Cek SMS masuk
if (sim800.available()) {
String sms = sim800.readString();
Serial.println("SMS Masuk:");
Serial.println(sms);
// Tampilkan di LCD sebagian (max 16 karakter)
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMS Masuk:");
lcd.setCursor(0, 1);
if (sms.length() > 16) {
lcd.print(sms.substring(0, 16));
} else {
lcd.print(sms);
}
}
}
πΉ ESP32

ESP32
- SIM800L TXD β ESP32 RX2 (GPIO 16)
- ESP32 TX2 (GPIO 17) β SIM800L RXD
- GND β GND
- Vbat β 5.0V stabil
ESP32 fleksibel, performa tinggi untuk aplikasi GPRS/HTTP/MQTT.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Gunakan UART2 ESP32 (RX=16, TX=17)
#define RXD2 16
#define TXD2 17
HardwareSerial sim800(2); // gunakan UART2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Nomor tujuan SMS
String nomor = "+628xxxxxxxxxx"; // ganti nomor HP tujuan
String pesan = "Halo dari TEMINS!";
void setup() {
// LCD
Wire.begin(21, 22); // SDA=21, SCL=22
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ESP32 SIM800L");
// Serial Monitor
Serial.begin(115200);
// SIM800L
sim800.begin(9600, SERIAL_8N1, RXD2, TXD2);
delay(3000);
lcd.setCursor(0, 1);
lcd.print("Kirim SMS...");
// Mode SMS text
sim800.println("AT+CMGF=1");
delay(1000);
// Kirim SMS
sim800.print("AT+CMGS=\"");
sim800.print(nomor);
sim800.println("\"");
delay(1000);
sim800.print(pesan);
delay(500);
sim800.write(26); // Ctrl+Z
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMS Terkirim!");
Serial.println("SMS berhasil dikirim.");
// Aktifkan notifikasi SMS masuk
sim800.println("AT+CNMI=1,2,0,0,0");
delay(1000);
}
void loop() {
// Cek SMS masuk
if (sim800.available()) {
String sms = sim800.readString();
Serial.println("SMS Masuk:");
Serial.println(sms);
// Tampilkan sebagian di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMS Masuk:");
lcd.setCursor(0, 1);
if (sms.length() > 16) {
lcd.print(sms.substring(0, 16));
} else {
lcd.print(sms);
}
}
}
16) FAQ Singkat
Q: Kenapa sukses SMS tapi gagal internet?
A: SMS & Voice pakai layanan dasar, GPRS perlu APN & sinyal cukup. Pastikan operator masih dukung 2G & APN benar.
Q: Perlu heatsink?
A: Umumnya tidak, tapi pastikan sirkulasi udara baik. Modul hangat saat transmit itu normal.
Q: Perlu baterai kalau sudah ada step-down?
A: Tidak wajib. Yang penting step-down mampu arus puncak dan ripple kecil. Banyak yang menambahkan kapasitor besar untuk bantu serapan lonjakan.
17) Penutup
Dengan penataan daya yang benar, wiring rapi, dan urutan inisialisasi yang tepat, SIM800L v2 sangat andal untuk proyek IoT jarak jauh: dari SMS notifikasi, telepon otomatis, hingga pengiriman data GPRS ke server. Kunci sukses: catu daya kuat & stabil, antena baik, dan disiplin cek status jaringan sebelum aksi.