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.
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
Sebelum ke pemrogramannya, harap install terlebih dahulu library Adafruit_FONA. Install bisa dilakukan via library manager ya. Saya menggunakan library versi 1.3.8
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.
Program SMS kontrol Arduino+SIM800l
Di percobaan ini, kita akan melakukan kontrol relay untuk menghidupkan dan mematikan lampu. Untuk alurnya adalah sebagai berikut
Secara spesifik, Carakerja dari program yang pertama adalah setting SIM800l agar notifikasi aktif. Mari cek bagian setup!
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()
Ok, selanjutnya masuk ke main program. proses pertama adalah mendeteksi apabila ada notifikasi. Apabila notifikasi sms maka proses lanjut ke fungsi pembacaan SMS tersebut.
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.

dibagian akhir dari fungsi utama, adalah melakukan pengecekan pulsa. Jadi setelah melakukan pengiriman pesan respon, kita melakukan pengecekan pulsa untuk mengetahui sisa saldo.
dibagian akhir dari fungsi utama, adalah melakukan pengecekan pulsa. Jadi setelah melakukan pengiriman pesan respon, kita melakukan pengecekan pulsa untuk mengetahui sisa saldo.
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.
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
*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.
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)
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
28 Komentar
om mau tanya agar tidak selalu cek pulsa setelah menerima perintah gemana caranya? saya coba hapus
BalasHapuscek_pulsa_stat=1;
}
delay(6000);
sms_delete(slot);
delay(5000);
if(cek_pulsa_stat != 1){
check_pulsa();
}
else{
cek_pulsa_stat=0;
bisa gak ada cek pulsa, tapi balasan smsnya tidak bisa dibaca jika ini di hapus
Silahkan hapus pada bagian yang ini saja ya..
Hapusif(cek_pulsa_stat != 1){
check_pulsa();
}
else{
cek_pulsa_stat=0;
}
ok om mantap sudah bisa, makasih sharing ilmunya moga berkah ilmunya aminnn
HapusBang, kalo imei tidak terdaftar di kemenperin gimana cara daftarinnya ya?
BalasHapusWah.. kurang tau klo itu gan... modul baru gan?
Hapussudah bisa bang. ternyata pasang elco langsung dapat sinyal
Hapuswah ... boleh juga tuh..
HapusMaaf gan ikut nimbrung, cara buat dapet sinyal klo tdk kedaftar di kemenperin gmna?
HapusBang, caranya cek sinyal lewat sms gimana ya?
BalasHapusKalo yg 4 relay ada codingnya ga?
BalasHapusTinggal ditambahin gan...
HapusMaaf, mau tanya bos..
BalasHapusKalau untuk mengirim sms ke hp pakai nomor simp**i, hasil cek saldonya, gimana kodingnya?, soalnya saya coba utak atik variabelnya, hasil berbeda antara di serial monitor dan yang diterima di hp.
Saya pakai kartu provider plat merah ya alias simp**i.
Mohon bantuannya.
Terimakasih.
Wah, kebetulan saya bukan user simpat* jadi kurang tau klo mau parsing buat menangkap nilai nominal saldo. Yang jelas pastikan format balasan saat melakukan panggilan USSD cek pulsa. nah sebagai contoh diatas parameternya adalah " Rp " => ada spasi pada kanan dan kiri Rp. Klo gak salah format balasan dari cek pulsa dari simpat* adalah Rp34678 => Rp tanpa spasi. maka silahkan ubah proses parsing pada fungsi check_pulsa :
Hapuschar * strtokIndx;
strtokIndx = strtok(replybuffer," Rp"); //sebelah kiri " Rp"
strtokIndx = strtok(NULL," Rp"); //sebelah kanan " Rp" =>ini saldo yang diambil
balance = atoi(strtokIndx); //convert ke int, simpan ke balance
Terimakasih infonya mas, saya coba oprek dikit sketchnya..
HapusOh iya, mohon izin dioprek ya sketch nya.
Sukses selalu untuk mas Ryo.
alhamdulillah ,, ilmunya bermanfaat banget kak... succes teroos ka
BalasHapusalhamdulillah.. amin gan..
Hapusmaaf mau tanya untuk modul sim800l apakah masih bisa digunakan pada tahun skrang mas?
BalasHapuskarena saya sudah coba tidak bisa
kebetulan punya saya masih berfungsi normal gan.. kmrn ada diskusi terkait imei yang diblokir, cm saya tdk mengalami hal tsb
HapusBisa order alat nya om
BalasHapusbisa sih gan.. cm gak bisa cepet ngerjainnya.. santuy soalnya
HapusBang mau tanya, pada serial monitor couldn't find fona. Kenapa ya?
BalasHapuspastikan tegangan supply untuk modul SIM800 sudah sesuai. selanjutnya pastikan koneksi komunikasi serialnya (TX,RX)
Hapuspermisi master,mau bertanya,bagaimana cara menampilkan data sensor di balasan sms?
BalasHapussilahkan buat handling untuk perintah baca sensor .. misal tambahkan program nya di setelah line 150
Hapusif (strcasecmp(smsBuffer, "req data sensor") == 0) {
//pada baris ini silahkan isi program baca sensor .... nilai sensor
disimpan pada variabel data_sensor
Serial.println("Sending reponse...");
String respon_dt_sensor = "Suhu saat ini : ";
respon_dt_sensor += data_sensor;
respon_dt_sensor.toCharArray(message, 100) ;
if (!fona.sendSMS(callerIDbuffer, message)) {
Serial.println(F("Failed"));
} else {
Serial.println(F("Sent!"));
}
}
permisi bg, ini sms nya bisa pakai paket data kah? atau modul SIM800L ini bisa terkoneksi ke internet kah?
BalasHapusmaksudnya gmn ya gan? klo sms menggunakan pulsa biasa ya (atau silahkan pilih paket sms). modul sim800l juga bisa terkoneksi ke internet kecepatannya sebatas GPRS saja ya.. contohnya bisa dichek disini => https://www.arducoding.com/2020/06/kontrol-arduino-via-thingspeak.html
Hapusmaksud saya itu bisa berkomunikasi menggunakan kuota internet atau tidak bg. seperti misal saya mengirim perintah dari aplikasi buatan "hidupkan lampu", nah aplikasi saya ini terkoneksi dengan internet, dan mau mengirim data via module sim800L ini, bisa atau tidak?
Hapusbisa gan, silahkan bisa dicoba dari tutorial berikut https://www.arducoding.com/2020/06/kontrol-arduino-via-thingspeak.html
Hapus