Project kendali relay jarak jauh via module SIM800L

Project kendali relay jarak jauh via module SIM800L

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 :

  1. Arduino Uno
  2. Komputer + Software IDE Arduino
  3. Module SIM800L
  4. Module Relay 8 Channel
  5. Regulator LM2596
  6. Breadboard
  7. Kabel Jumper

[irp]

Skema Rangkaian menggunakan Arduino

Rangkaian project kendali jarak jauh via sim800

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

  1. Relay 1 ON jika dikirimkan format “relay_a ON”
  2. Relay 2 ON jika dikirimkan format “relay_b ON”
  3. Relay 3 ON jika dikirimkan format “relay_b ON”
  4. 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 <<

16 Comments

  1. yashuni

    gk bisa mas…init success kalo rx=pin8 dan tx=pin 7 tp tetep di sms gak ngerespon

    • admin-kece

      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

      • Dwi Yulianto

        Mas tolong dishare lagi coding control relay nya!Terima kasih

  2. imam khambali

    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..

          • dcham190562

            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.

  3. Willi

    Mas sudah aq cobah kq belum bisa ya?? Ake AT comand juga gk mau ngrespon,, kira kira apanya ya??

  4. Mas mau tanya itukan ngirim perintahnya lewat SMS bisa enggak mas kalo kirim peintahnya pakai internet?

  5. Meyer

    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

  6. Dicky

    Saya coba Ko sms nya ga bisa ya apa ada yg salah?

Leave a Reply

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