Kontrol Arduino+SIM800L via SMS

Controlling arduino via SMS with SIM800l GSM module

Kembali lagi untuk mengujicoba Modul GSM murah meriah SIM800l. Percobaan kali ini adalah melakukan kendali dan pemantauan jarak jauh via SMS. Teknologi SMS walaupun udah ketinggalan namun tetap dapat diaplikasikan pada projek kita karena memiliki beberapa keunggulan. Secara tidak semua sudut di area kita dapat tercover oleh sinnyal 3G/4G


Arduino SMS Control, Arduino SMS monitoring, control Arduino via SMS, Arduino SIM800l SMS relay control, mengendalikan arduino dengan SMS, Kendali jarak jauh Arduino dengan SMS


Untuk uji coba sederhana, mari kita buat kinerja yang simpel seperti kendali relay yang dipadukan dengan pemantauan sensor magnetic switch. Pengaplikasiannya adalah untuk mengendalikan lampu (AC) dan pemantauan keadaan pintu rumah.

Arduino SIM800 SMS relay control
Adapun beberapa komponen yang akan dibutuhkan dalam pembuatan sistem ini adalah:
  • Arduino (Uno/Nano)
  • SIM800L GSM Module
  • Relay (1 Channel)
  • Sensor Magnetic Switch
  • Resistor 330 ohm + Led
  • Module DC Step Down LM2596
Wiring/Skematic
SMS control Arduino SIM800l
*Disarankan tegangan VCC untuk SIM800L berkisar antara 3.7V. Atur melalui Lm2596

Arduino Program
Sebelum ke pemrogramannya, harap install terlebih dahulu library Adafruit_FONA. Install bisa dilakukan via library manager ya. Saya menggunakan library versi  1.3.8
SMS control Arduino SIM800l
Untuk keperluan testing, dapat dicoba melalui program sample yang telah ada di File - Examples - Adafruit FONA Library - Fona Test. Pastikan konfigurasi pin TX, RX, dan reset telah disesuaikan. Serta pengaturan baudrate. Setelah program selesai diupload, pengetesan dilakukan via serial monitor. kita dapat melakukan beberapa pengetesan yang disesuaikan dengan fitur dari modul SIM800l yang kita gunakan seperti baca SMS, cek jumlah SMS, call, delete SMS, send USSD (cek pulsa), dll.
Arduino SIM800 SMS relay control
SMS control Arduino SIM800l

SMS control Arduino SIM800l

Program SMS kontrol Arduino+SIM800l
Di percobaan ini, kita akan melakukan kontrol relay untuk menghidupkan dan mematikan lampu. Untuk alurnya adalah sebagai berikut
 
Arduino control SMS SIM800L
Dalam percobaan ini saya menggunakan kartu 3. Perbedaannya adalah saat pengecekan saldo pulsa dan pengambilan nilai saldo tersebut yang digunakan untuk mengaktifkan Led tanda kalau pulsa mau habis. akan saya bahas dibawah ya. Untuk program Kontrol Arduino via SMS dapat di lihat dibawah ini:
 
Secara spesifik, Carakerja dari program yang pertama adalah setting SIM800l agar notifikasi aktif. Mari cek bagian setup! 
Arduino SMS SIM800L
Selanjutnya adalah memastikan Sim Card dapat menerima SMS. Caranya dengan menghapus seluruh SMS yang tersimpan di kartu. Jadi pastiin sebelum mencoba ini, SMS penting sudah di pindah ke memori Hp. Urutannya adalah mengecek jumlah sms yang ada di slot dengan fungsi check_to_delete(), saat terdapat sms yang tersimpan di kartu maka lanjut ke fungsi Delete_All_SMS()
SIM800L arduino SMS control
Ok, selanjutnya masuk ke main program. proses pertama adalah mendeteksi apabila ada notifikasi. Apabila notifikasi sms maka proses lanjut ke fungsi pembacaan SMS tersebut. 
SMS control Arduino SIM800l
Dari proses pembacaan SMS, akan dilakukan scaning karakter kunci(dinyalain, dimatiin, dll) untuk proses pengontrolan. Proses scnning menggunakan fungsi strstr() dan strcasecmp() dengan melakukan komparasi antara data pesan SMS dan kata kunti pengontrolan. Untuk format SMS balasan saya buat beberapa pilihan random, atau dapat juga langsung ditulis seperti di pesan balasan untuk cek pulsa.
SMS control Arduino SIM800l
dibagian akhir dari fungsi utama, adalah melakukan pengecekan pulsa. Jadi setelah melakukan pengiriman pesan respon, kita melakukan pengecekan pulsa untuk mengetahui sisa saldo.
SMS control Arduino SIM800l
Prose cek saldo dilakukan dengan panggilan USSD ke *111# untuk kartu 3 (silahkan disesuaikan untuk operator lain). Perlu diperhatikan format respon dari panggilan USSD yang dilakukan. sebagai contoh hasil respon dari panggilan ke *111# adalah Bal Rp 3354 . Karena nilai saldo digunakan sebagai komparator untuk mengontrol LED indikator maka bagaimana caranya untuk mengambil nilai nominal saldo ini. Caranya adalah dengan melakukan parsing data dan hasilnya di convert ke interger. Proses parsing menggunakan fungsi strtok() dengan delimiter " Rp " >> menggunakan spasi. Nah untuk format respon dari operator lain silahkan untuk didesain lagi atau dapt kita diskusikan di kolom komentar.
Arduino SIM800 SMS relay control
Nah, setelah selesai mengirim pesan balasan, lanjut ke proses selanjutnya adalah menghapus pesan yang telah di baca. Hal ini untuk menjaga agar sim card dapat selalu menerima SMS.
Hasil dari contoh program diatas adalah sebagaimana gambar dibawah ini. Next post untuk bagian 2, mari kita coba untuk menggabungkan fungsi monitoring kedalam sistem ini. Trims , semoga bermanfaat
SMS control Arduino SIM800l
Arduino SIM800 SMS relay control
SMS control Arduino SIM800l

*Perbaikan Kecil di Library
Sebenernya bukan masalah yang spesial, yaitu status failed setelah fungsi mengirim SMS. Soalnya, beberapa setelahnya SMS masuk ke nomor yang dituju, yang artinya pesan sebenarnya dapat terkirim dengan sukses.
SMS control Arduino SIM800l
 Karena library Adafruit FONA ini masih dalam proses pengembangan dan diperuntukkan buat modul GSM nya adafruit, maka perlu disesuaikan beberapa fungsi untuk modul SIM800l versi terjangkau. Fungsi yang saya coba edit (disesuaikan) adalah fungsi untuk mengirim SMS. Silahkan edit file  Adafruit_FONA.cpp yang ada di folder tempat library terinstall , misal:
 (C:\Users\User\Documents\Arduino\libraries\Adafruit_FONA_Library) 
Arduino SIM800 SMS relay control
tambahkan klousul else(887) setelah if (line 881). Didalamnya tambahkan fungsi readline (yang di kotakin). Setelah selesai menambahkan kode seperti gambar diatas, jangan lupa disimpan. Nah setelah ditambahkan fungsi diatas, insyaallah status pengiriman akan seperti ini
SMS control Arduino SIM800l