Penjelasan singkat
Pada project ini pengembangan dari tutorial sebelumnya yaitu Tutorial Arduino mengakses SIM800L, yang dimana akan diaplikasikan untuk kendali relay secara jarak jauh. Sehingga ini sangat memungkinkan untuk mematikan maupun menyalakan misal lampu, pompa air yang ada dirumah yang dapat dikatakan sebagai “System Smart Home“.
Untuk kelemahan sistem ini yaitu kedua sistem antara transceiver (Handphone) dan Receiver (System project ini) harus memiliki pulsa dari langganan salah satu provider (im3 ooredo, telkomsel, xl, dsb) yang digunakan. Apabila misal receiver memiliki pulsa tetapi masa aktifnya juga habis, maka tidak bisa dikendalikan juga.
Untuk kelebihan yaitu dapat kendali jarak jauh, dan dapat dilakukan kapanpun. Dan sistem ini dapat dibeli dengan harga terjangkau.
Bahan yang perlu dipersiapkan antara lain :
- Arduino Uno
- Komputer + Software IDE Arduino
- Module SIM800L
- Module Relay 8 Channel
- Regulator LM2596
- Breadboard
- Kabel Jumper
[irp]
Skema Rangkaian menggunakan Arduino
Koneksi pengabelan :
- VCC 5Vdc (Arduino) : ke Modul Stepdown Buck Converter ke modul dengan adjustment ke 3.7 Vdc
- GND : GND
- RXD : Pin.8
- TXD : Pin.7
- IN0 – IN3 : Pin 13 – pin 9
Library yang digunakan [ddownload id=”1106″]
Peletakan Library pada OS
1. Mac : (home directory)/Documents/Arduino/libraries
2. PC (Windows) : My Documents -> Arduino -> libraries
3. Linux : (home directory)/sketchbook/libraries
Koding program
/* www.nyebarilmu.com */ #include <gprs.h> #include <softwareserial.h> // RXD : Pin D8 // TXD : Pin D7 #define waktu 5000 #define HIDUP LOW #define MATI HIGH const int relay_a = 13; const int relay_b = 12; const int relay_c = 11; const int relay_d = 10; int Statrelay_a; int Statrelay_b; int Statrelay_c; int Statrelay_d; GPRS gprs; void setup() { pinMode (relay_a , OUTPUT); digitalWrite (relay_a, HIGH); pinMode (relay_b , OUTPUT); digitalWrite (relay_b, HIGH); pinMode (relay_c , OUTPUT); digitalWrite (relay_c, HIGH); pinMode (relay_d , OUTPUT); digitalWrite (relay_d, HIGH); Serial.begin(9600); while(!Serial); Serial.println("www.nyebarilmu.com - Starting kendali jarak jauh via sim800L"); gprs.preInit(); delay(1000); while(0 != gprs.init()) { delay(1000); Serial.print("init error\r\n"); } if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", waktu)) { ERROR("ERROR:CNMI"); return; } if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", waktu)) { ERROR("ERROR:CNMI"); return; } Serial.println("Init success"); } char currentLine[500] = ""; int currentLineIndex = 0; bool nextLineIsMessage = false; void loop() { //Write current status to LED pin digitalWrite(relay_a, Statrelay_a); digitalWrite(relay_b, Statrelay_b); digitalWrite(relay_c, Statrelay_c); digitalWrite(relay_d, Statrelay_d); if(gprs.serialSIM800.available()){ char lastCharRead = gprs.serialSIM800.read(); if(lastCharRead == '\r' || lastCharRead == '\n'){ String lastLine = String(currentLine); if(lastLine.startsWith("+CMT:")) {Serial.println(lastLine);nextLineIsMessage=true;} else if (lastLine.length()>0) {if(nextLineIsMessage) {Serial.println(lastLine); //Program utama pembacaan sms if(lastLine.indexOf("relay_a ON")>= 0) //jika ada format SMS yang masuk "relay_a ON" maka relay akan berlogika 1 dan "NYALA" { Statrelay_a = HIDUP; Serial.println("relay_a DINYALAKAN"); gprs.sendSMS ("085647156889","relay_a DINYALAKAN");} //mendapatkan auto reply //silahkan ganti ke no hp yang di terpasang di module sim800L else if(lastLine.indexOf("relay_a OFF") >= 0) { Statrelay_a = MATI; Serial.println("relay_a DIMATIKAN"); gprs.sendSMS ("085647156889","relay_a DIMATIKAN");} if(lastLine.indexOf("relay_b ON") >= 0){ Statrelay_b = HIDUP; Serial.println("relay_b DINYALAKAN"); gprs.sendSMS ("085647156889","relay_b DINYALAKAN");} else if(lastLine.indexOf("relay_b OFF") >= 0) { Statrelay_b = MATI; Serial.println("relay_b DIMATIKAN"); gprs.sendSMS ("085647156889","relay_b DIMATIKAN");} if(lastLine.indexOf("relay_c ON") >= 0){ Statrelay_c = HIDUP; Serial.println("relay_c DINYALAKAN"); gprs.sendSMS ("085647156889","relay_c DINYALAKAN");} else if(lastLine.indexOf("relay_c OFF") >= 0) { Statrelay_c = MATI; Serial.println("relay_c DIMATIKAN"); gprs.sendSMS ("085647156889","relay_c DIMATIKAN");} if(lastLine.indexOf("relay_d ON") >= 0){ Statrelay_d = HIDUP; Serial.println("relay_d DINYALAKAN"); gprs.sendSMS ("085647156889","relay_d DINYALAKAN");} else if(lastLine.indexOf("relay_d OFF") >= 0) { Statrelay_d = MATI; Serial.println("relay_d DIMATIKAN"); gprs.sendSMS ("085647156889","relay_d DIMATIKAN");} nextLineIsMessage = false; } } for( int i = 0; i < sizeof(currentLine); ++i ) { currentLine[i] = (char)0; } currentLineIndex = 0; } else { currentLine[currentLineIndex++] = lastCharRead; } } }
Pada handphone, FORMAT SMS nya untuk menyalakan atau mengaktifkan relaynya yaitu
- Relay 1 ON jika dikirimkan format “relay_a ON”
- Relay 2 ON jika dikirimkan format “relay_b ON”
- Relay 3 ON jika dikirimkan format “relay_b ON”
- Relay 4 ON jika dikirimkan format “relay_b ON”
Sedangkan format untuk menonaktifkan yaitu “relay_x OFF”, x diisikan dengan “a / b / c / d” sesuai dengan relay yang akan di nonaktifkan.
Selamat mencoba!
Terimakasih sudah berkunjung, dan semoga bermanfaat. Salam nyebarilmu.com!
>> CMIIW <<
gk bisa mas…init success kalo rx=pin8 dan tx=pin 7 tp tetep di sms gak ngerespon
terimakasih sudah berkunjung mas,
sudah saya revisi, ternyata saya salah penulisan program pada format SMS nya, dan pin yang digunakan yaitu
RXD > D8
TXD > D7
dikarenakan ini gunain library,
untuk pengecekan awal, module sim800L bekerja dengan semestinya ato tidak, dapat dicek di tutorial sebelumnya.
https://www.nyebarilmu.com/tutorial-arduino-mengakses-modul-gsm-sim800l/
terimakasih, sudah berkunjung
Mas tolong dishare lagi coding control relay nya!Terima kasih
ya gan, mohon ditunggu dengan subscribe saja
selamat pagi Mas, kode di ats sudah sy coppas, tpi begitu sy compil, >>
Arduino: 1.6.5 (Windows 7), Board: “Arduino/Genuino Uno”
contol_relay_dgn_simm800.ino:3:18: fatal error: gprs.h: No such file or directory
compilation terminated.
Error compiling.
mohon pecerahannya mas,, thank…
selamat pagi gan,
itu yg error di bagian header ny,
belum di copas library “GPRS” ny,
jd perlu di download dulu, kemudian di ekstrak di folder library tempat installasi arduino, atau di my document library
kemudian di restart dulu aplikasi arduino IDE ny, baru bisa di kompile ny,
thanks
Baik Mas terima kasih Infonya, jangan bosan2 jika kemudian sy minta pengetahunn lagi.. Thank..
oke siap pak, thanks sudah berkunjung,
munkin apa yg sy lakukan berkat petunjuk kemarin sepertinya sdh bisa teratasi selanjutnya timbul masalah baru, dn sy mash perlu bantuan dari mas,,,,
Arduino: 1.6.5 (Windows 7), Board: “Arduino/Genuino Uno”
sketch_jan09a.ino:3:18: fatal error: gprs.h: No such file or directory
compilation terminated.
Error compiling.
This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Mas sudah aq cobah kq belum bisa ya?? Ake AT comand juga gk mau ngrespon,, kira kira apanya ya??
Untuk kedip led pada module ny gmn gan?
terus kartunya 3g atau 4g gan?
Mas mau tanya itukan ngirim perintahnya lewat SMS bisa enggak mas kalo kirim peintahnya pakai internet?
mas saya minta tolong kodingnya gimana kalau mau cek pulsa sim card yang ada di sim800l via sms? jadi saya kirim sms ” cek pulsa ” ke nomor sim800l terus sim800l akan balas sms yang berisi sisa saldo pulsa dan masa akitf kartunya
Oke gan, tunggu saja postingan lanjutannya thanks
Saya coba Ko sms nya ga bisa ya apa ada yg salah?
Led berkedipnya sudah pelan?