Control Relay 4 Channel Menggunakan SMS
Yang dimaksud disini adalah mengontrol 4 buah beban (misal lampu atau motor ata Home electric device) melalui Relay dan dikendalikan melalui SMS yang sudah ter-Otentikasi Nomor Pengirimnya,artinya Relay hanya mau mengikuti instruksi dari SMS dengan Nomor yang sudah terdaftar di sistem dan mengabaikan Instruksi SMS dari Nomor yang tidak terdaftar pada sistem program.
Module yang dibutuhkan :
1pc Arduino UNO Rev.3
1pc Relay Module 4 Channel Low Active
1pc SIM800L GSM Module
1pc DC StepDown Buck Converter
+Beberapa pcs kabel dupon/jumper untuk wiring
Wiring SIM800L <--> Arduino Uno
RXD <--> D8
TXD <--> D7
VCC <--> 3.7V melalui stepdown dari 5V Arduino
GND <--> GND
Wiring Relay 4 Channel <--> Arduino Uno
GND <--> GND
CH1 <--> D2
CH2 <--> D3
CH3 <--> D4
CH4 <--> D5
VCC <--> 5V
Wiring DC StepDown Buck Converter
(-) IN <--> GND Arduino
(+) IN <--> 5V Arduino
(-) OUT <--> GND SIM800L
(+) OUT <--> VCC SIM800L
Atur VR/Trimpot pada Stepdown sampai mendapatkan tegangan 3,7VDC dan Ukur dengan Voltmeter
Sebelum disambungkan dengan Vcc pada Module SIM800L
Warning: Jangan Memberi tegangan di atas 4,2VDC pada Vcc Module SIM800L karena dapat menyebabkan kerusakan pada Module
Library GSM Seeeduino silahkan download disini
Berikut Sketch Coding yang Harus dimasukan pada Arduino Uno :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | #include <gprs.h> #include <softwareserial.h> #define TIMEOUT 5000 #define LED_PIN 13 #define ON LOW #define OFF HIGH const int Relay1 = 2; const int Relay2 = 3; const int Relay3 = 4; const int Relay4 = 5; int StatRelay1; int StatRelay2; int StatRelay3; int StatRelay4; GPRS gprs; void setup() { pinMode (Relay1 , OUTPUT); digitalWrite (Relay1, HIGH); pinMode (Relay2 , OUTPUT); digitalWrite (Relay2, HIGH); pinMode (Relay3 , OUTPUT); digitalWrite (Relay3, HIGH); pinMode (Relay4 , OUTPUT); digitalWrite (Relay4, HIGH); Serial.begin(9600); while(!Serial); Serial.println("Starting SIM800 Auto Read SMS"); gprs.preInit(); delay(1000); while(0 != gprs.init()) { delay(1000); Serial.print("init error\r\n"); } //Set SMS mode to ASCII if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) { ERROR("ERROR:CNMI"); return; } //Start listening to New SMS Message Indications if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) { ERROR("ERROR:CNMI"); return; } Serial.println("Init success"); } //Variable to hold last line of serial output from SIM800 char currentLine[500] = ""; int currentLineIndex = 0; //Boolean to be set to true if message notificaion was found and next //line of serial output is the actual SMS message content bool nextLineIsMessage = false; void loop() { //Write current status to LED pin digitalWrite(Relay1, StatRelay1); digitalWrite(Relay2, StatRelay2); digitalWrite(Relay3, StatRelay3); digitalWrite(Relay4, StatRelay4); //If there is serial output from SIM800 if(gprs.serialSIM800.available()){ char lastCharRead = gprs.serialSIM800.read(); //Read each character from serial output until \r or \n is reached (which denotes end of line) if(lastCharRead == '\r' || lastCharRead == '\n'){ String lastLine = String(currentLine); //If last line read +CMT, New SMS Message Indications was received. //Hence, next line is the message content. if(lastLine.startsWith("+CMT:")){ Serial.println(lastLine); nextLineIsMessage = true; } else if (lastLine.length() > 0) { if(nextLineIsMessage) { Serial.println(lastLine); // ########## MEMBACA KONTEN SMS DAN MENCARI+MENGARTIKAN KONTEN SMS KE PROGRAM ######### //Kendali Relay if(lastLine.indexOf("Relay1 ON") >= 0){ StatRelay1 = ON; Serial.println("Relay1 DINYALAKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay1 DINYALAKAN");} else if(lastLine.indexOf("Relay1 OFF") >= 0) { StatRelay1 = OFF; Serial.println("Relay1 DIMATIKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay1 DIMATIKAN");} if(lastLine.indexOf("Relay2 ON") >= 0){ StatRelay2 = ON; Serial.println("Relay2 DINYALAKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay2 DINYALAKAN");} else if(lastLine.indexOf("Relay2 OFF") >= 0) { StatRelay2 = OFF; Serial.println("Relay2 DIMATIKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay2 DIMATIKAN");} if(lastLine.indexOf("Relay3 ON") >= 0){ StatRelay3 = ON; Serial.println("Relay3 DINYALAKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay3 DINYALAKAN");} else if(lastLine.indexOf("Relay3 OFF") >= 0) { StatRelay3 = OFF; Serial.println("Relay3 DIMATIKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay3 DIMATIKAN");} if(lastLine.indexOf("Relay4 ON") >= 0){ StatRelay4 = ON; Serial.println("Relay4 DINYALAKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay4 DINYALAKAN");} else if(lastLine.indexOf("Relay4 OFF") >= 0) { StatRelay4 = OFF; Serial.println("Relay4 DIMATIKAN"); gprs.sendSMS ("08xxxxxxxxxx","Relay4 DIMATIKAN");} nextLineIsMessage = false; } } //Clear char array for next line of read for( int i = 0; i < sizeof(currentLine); ++i ) { currentLine[i] = (char)0; } currentLineIndex = 0; } else { currentLine[currentLineIndex++] = lastCharRead; } } } |
Terima kasih banyak pak atas suportnya . dan terima kasih banyak pak atas perhatian bapak dalam dunia pendidikan . insya allah ilmu yg bapak sharing bermanfaat bagi orang banyak . terkhusus buat saya pribadi . salam dari kami .. Semoga sehat dan lancar selalu rejekinya ..aminn
BalasHapusklo untuk arduino nano pin tx rx nya di pin yg sama kah?
BalasHapusRequest y pak, untuk mengetahui status lampu nyala atau gk kodenya apa ya pak? Trims
BalasHapusTinggal tambahkan coding sent sms pada saat awal alat dihidupkan . dan ada balasan konfirm via sms begitu selesai alat diperintah
BalasHapusSama2 dari Pontianak
BalasHapusSemoga dapat pahala atas posting share ilmunya......
BalasHapussaya senang dapat ilmu di web/blog ini, yg baru melek belajar arduino....
Komentar ini telah dihapus oleh pengarang.
BalasHapusijin nyimak gan :)
BalasHapusgan, kemaren dah beli relay + SIM800L GSM Module di lapak agan, saya pakai relay ch 2, jadi scribnya di masukkan 2 aja ya?
BalasHapusmas kalau Library GSM Seeeduino itu untuk apa ya?
BalasHapusmaaf saya masih newbie
Makasih banget mas, tapi mau tanya, bagaimana codingnya supaya semua nomor hp bisa meng on-off kan relay dengan patokan kode sms tanpa nomor hp yg terdaftar? terima kasih
BalasHapusThis report would have more information with
BalasHapus"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
sketch_nov17a:19: error: 'GPRS' does not name a type
sketch_nov17a.ino: In function 'void setup()':
sketch_nov17a:30: error: 'gprs' was not declared in this scope
sketch_nov17a:40: error: 'ERROR' was not declared in this scope
sketch_nov17a:46: error: 'ERROR' was not declared in this scope
sketch_nov17a.ino: In function 'void loop()':
sketch_nov17a:69: error: 'gprs' was not declared in this scope
mas iji kok ada spt ini??
error mas....
Siang gan,,Kok data void lood nya banyak yg ga ada di dalam scope ya?,,
BalasHapusSampai void setup ok,,tapi skectch yg di area void loop nya byak yg ga ada di dalam scope,,saya download see arduino,,dan saya lanjut kan dari see arduino,,error 'currentLine,startWith,nextLineMessage,,bisa di bantu gan?
just share .... arduino ide nya pake yang versi 1.6 ke atas gan .... jangan yang 1.0
HapusSiang gan,,Kok data void lood nya banyak yg ga ada di dalam scope ya?,,
BalasHapusSampai void setup ok,,tapi skectch yg di area void loop nya byak yg ga ada di dalam scope,,saya download see arduino,,dan saya lanjut kan dari see arduino,,error 'currentLine,startWith,nextLineMessage,,bisa di bantu gan?
Gan kok saat compile ada kata" low memory available, *stability problems may occur* itu kenapa ya
BalasHapusMau tanya gan,
BalasHapussbnr nya sh dh sukses bisa krm&terima sms,
namun kendala nya ketika Sim800 hilang signal, dan setelah dapat signal kembali,
arduino seperti tdk terkoneksi dgn sim800 nya,
sehingga harus di reset dulu, baru bisa normal lagi,
mohon pencerahan,
kali aja ada yg ngalamin juga.
agan bisa gan..?? koq punya saya tidak yaa,padahal semua sudah benar tidak ada yang salah,dari mulai program sampai dengan perancangan tetapi kenapa sms sya tetap tidak di respon untuk menyalakan relay..mohon bantuan nya gan.
Hapusgan, saya mau tanya mengenai inbox sms sama laporan terkirim, itu otomatis sudah terhapus sendiri atau musti nambahin sketch nya?
BalasHapussangat bermanfaat gan, terima kasih banyak. ditunggu tulisan selanjutnya.
BalasHapuspendefinisian RX dan TX di pin 7 dan 8, kalau mau diubah itu dari bagian mana gan?
BalasHapusapakah program ini dapat di running di modul SIM900A mini V4 ?
BalasHapusMas Edy, apakah sudah bisa jika coding diatas dipakai untuk sim900A mini?? Kebetulan saya juga mau buat coding untuk SIM900A, tapi masih belum bisa. DB No respon terus.
Hapusbisa di tambahkan video nya gan..
BalasHapusGan, thanks sebelumnya..
BalasHapussaya dapat msalah pas lihat di serial monitor ada pesan "Power check failed!" & Init error,,
mungkin bisa dibantu? lira-kira maslahnya dimana?
mas.. klo dibuat utk ngontrol motor servo gimana ?
BalasHapusapakah perlu tambahan void utk servo dan StatRelayx diganti dengan void servo ?
minta coding yang tampa library dong mas
BalasHapuskalo buat stater motor kodenya gimana om, udah saya tambahin delay koq ga respon ya ?
BalasHapusini code saya om
if (lastLine.indexOf("Relay1 ON") >= 0) {
StatRelay1 = ON;
Serial.println("Relay1 DINYALAKAN");
gprs.sendSMS ("0811111111111", "Relay1 DINYALAKAN");
delay(5000);
StatRelay1 = OFF;
Serial.println("Relay1 otomatis MATI 5detik");
}
Itu no hpnya nomer yg buat ngirim sms atau yg nerima sms om?
HapusINIT ERROR MULUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
BalasHapusInit error kenapa ya
BalasHapusgan.. emang saat dinyalakan relay pada on semua ya.. ane pengen saat on dan init sukses relay off semua.. baru nanti ON nya diperintah pakai SMS
BalasHapusentahlah kenapa.. SIM800L saya pinnya malah dibalik Tx->8 RX->7 baru bisa init sukses kalau nggak ya init error mulu.. pertama saya kira librarynya gprs.h dan softwareserial.h yang corupt atau bemasalah sebab software serial.h di library tertulis SoftwareSerial.h dengan S capital tapi nggak.. akhirnya berselancar cobain cuma pakai serial mengkontrol Relay dengan TX->9 RX-> lancar jaya.. satu lagi di void setup yg tujuannya mengoffkan relay sebagai default awal saya tambahakan initrelay1=off; seperti ini jadinya
BalasHapusvoid setup() {
pinMode (Relay1 , OUTPUT);
pinMode (Relay2 , OUTPUT);
pinMode (Relay3 , OUTPUT);
pinMode (Relay4 , OUTPUT);
digitalWrite (Relay1, HIGH);
digitalWrite (Relay2, HIGH);
digitalWrite (Relay3, HIGH);
digitalWrite (Relay4, HIGH);
StatRelay1=OFF;
StatRelay2=OFF;
StatRelay3=OFF;
StatRelay4=OFF;
Serial.begin(9600);
while(!Serial);
kalau tidak maka setelah konfirmasi init success pasti semua relay jadi on..
terus kalau on of pakai delay juga sudah sukses dengan sketch seperti ini
if(lastLine.indexOf("Starter") >= 0){
digitalWrite(Relay1, LOW);
delay(2000);
digitalWrite(Relay1, HIGH);
Serial.println("Menstarter");
gprs.sendSMS ("08xxxxxxxxx","MOTOR DISTARTER BOS");
}
dan lancar meskipun dicampur dengan yg on off biasa
demikian hasil oprek yg saya juga nggak habis pikir kenapa gitu mungkin module SIM800L saya yg versi lain.. untuk kawan kawan catatlah setiap bereksperiment biar gak terus kebingungan lagi seperti saya pas mau mem PCB kan Trim's just share :-D
mas itu saya udah ikuti tx=8 dan rx=7 emang si init sukses lalu lampu relay on semua. tp ketika saya kirim sms untuk matiin kok gk ngerespon apa apa ya...
HapusOm sabirun yaqin, boleh minta kodingnya?
HapusHehehe
Boleh minta coding nya gan
HapusBoleh minta codingnya ?
Hapusboleh minta codingan nya mas bro
Hapusdi compil kok eror, minta solusinya dengan sangat
BalasHapusmaaf ane juga NEWBIE gan..
Hapussebelum compile atau upload ke arduino periksa setingan board arduino apa? pakai atmeganya apa kalau arduino nano,Port COM berapa? terus pakai programer apa? drivernya dah cocok? kalau pakai USBASB lebih josh pakai Libusbk jangan libusb atau pakai aja software zadig langsung instal online.. lanjut periksa librarynya untuk sketch di atas.. apa sudah ada di C:\Program Files \Arduino\libraries\GSMseeduino\gprs.h terus C:\Program Files \Arduino\libraries\SoftwareSerial\SoftwareSerial.h folder library jangan dikasih nama dengan spasi _ contooh GSM_seeduino biasanya nggak kebaca.. atau kadang aneh rx tx nya module di lepas dulu dari pin arduino.. terus cek report error compilenya di situ kan dijelaskan penyebabnya apa.. biasanya masalahnya ya di atas tadi jika sketchnya sudah jelas (lancar) no error.. Just share
gagal terus, udah di ikutin ...tx rx di bolak balik
BalasHapusmohon bantuannya, jika programnya udah berhasil, tapi sewaktu saya kirim sms ko sim800L nya tidak membalas, dan saya sudah pakai sim800l yang merah dan yang sim800l v2 tetap tidak ada balasan sms
BalasHapusCoba di cek di serial monitor pada saat dikirim sms ada tulisan relay on atau apa gitu ada apa nggak kalau nggak ada berarti ada kabel yang nggak nyambung
Hapuswkwk tipu-tipu
BalasHapusMau tanya mas , kalau untuk mengetahui status relay mana yg aktif dan gak aktif lewat sms apa coding nya ya ..terimakasih
BalasHapuskalo power check failed kenapa yah
BalasHapusterima kasih atas ilmu nya bang, kalo mau lebih dri 4ch gmna caranya ya, mohon bimbingan nya
BalasHapusSaya pake sim800l v2 dserial monitor init error itu gmana ya?
BalasHapusGan mau tanya ni. Kalau pin vcc dengan pin GND sot kenapa gan? Saat di ukur menggunakan multimeter nyatanya pin GND dengan pin VCC itu terhubung.
BalasHapusGan arduino saya tidak menerima arus dari melalui power jack itu kenapa gan?
BalasHapusAda skematik nya engga mas?
BalasHapusSetelah saya Copy Codingnya dan saya Upload kok yang muncul error Compiling gan maksudanya gimana ya...?
BalasHapusmas, saya udah coba cuma setiap relay dinyalakan maka sim800l langsung kehilangan sinyal dengan ditandai lampu yang berkedip cepat, begitu pun stepdown yang drop ( saya menggunakan stepdown yang ada digital input/output jadi kelihatan arus masuk sama keluarnya ) nah setelah relay saya lepas, semua stabil lagi termasuk sim800l nya
BalasHapusada cara mengatasinya mas..?
relaynya saya menggunakan yang 4 chanel,
Selamat sore Pak.....saya ingin belajar banyak soal arduino.....
BalasHapusmaaf pemula...m
Pak....boleh minta nomer personal kontak bapak?
Hapus