Tutorial Lengkap Penggunaan Modul SIM800L v2 dengan Arduino Uno, Mega, dan ESP32

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

  1. Kartu SIM aktif, pulsa/paket data cukup, PIN SIM dinonaktifkan.
  2. Pasang antena rapat & arahkan ke area sinyal terbaik.
  3. Catu daya bisa dari 5v atau mau pake baterai yang 5v
  4. Tambahkan kapasitor low-ESR di Vbat SIM800L (misal 470–1000Β΅F paralel 100nF).
  5. Siapkan level shifter sederhana (divider) untuk RX SIM800L jika dari Arduino 5V.
  6. 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)

BoardUART DipakaiLevel Tegangan ke RX SIM800LStabilitas KomunikasiCatatan Daya
Arduino UnoSoftwareSerial (10/11)Wajib divider 5V→3.xVBaik di 9600; hindari tinggiWajib supply terpisah + buffer cap
Arduino MegaHardware Serial1 (18/19)Wajib divider 5V→3.xVSangat stabil, cocok beban beratSama: supply terpisah + buffer cap
ESP32Hardware Serial2 (16/17)Aman langsung (3.3V)Sangat stabil & cepatSama: supply terpisah + buffer cap

8) Prosedur Start-Up yang Rapi (step-by-step)

  1. Pasang SIM (pastikan PIN SIM off).
  2. Pasang antena ke konektor modul.
  3. Rangkai daya: Vbat 5V, GND
  4. Sambung UART sesuai board (perhatikan divider untuk 5V).
  5. Nyalakan modul:
  6. Cek dasar via serial:
    • AT β†’ OK
    • AT+CSQ (cek kualitas sinyal)
    • AT+CCID (baca SIM)
    • AT+CREG? (status registrasi jaringan)
  7. Setelah registered, lanjutkan ke SMS/Call/GPRS sesuai kebutuhan.

9) AT Command β€œCheat Sheet” (singkat & penting, tanpa kode)

  • Koneksi dasar:
    • AT β†’ tes koneksi
    • ATI β†’ info modul
    • AT+CSQ β†’ kualitas sinyal (0–31; makin besar makin baik)
    • AT+CPIN? β†’ status PIN SIM
    • AT+CREG? β†’ registrasi ke jaringan (2/5 = registered)
  • SMS teks:
    • AT+CMGF=1 β†’ mode teks
    • AT+CSCS="GSM" β†’ set char set
    • AT+CMGS="+62XXXXXXXXXX" lalu kirim pesan, akhiri dengan Ctrl+Z (0x1A)
  • Panggilan:
    • ATD+62XXXXXXXXXX; β†’ panggil
    • ATH β†’ tutup telepon
    • ATA β†’ 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)

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.

Leave a Reply

Your email address will not be published. Required fields are marked *