Cara mengontrol led/relay menggunakan modul sim800l dengan arduino uno r3

Author : Ila MulyandiNo comments

Pada gambar modul yang digunakan adalah :
1. modul sim 800l
2. modul arduino uno r3
3. stepdown dc-dc

Menggunakan SMS Untuk Control LED / Relay via Module SIM800L

  


Disini saya akan memberikan Contoh Sketch Sederhana untuk Mengontrol LED/Relay melaui SMS yang dikirim dari ponsel anda ke Module SIM800L yang terpasang pada Arduino.




Cara Kerjanya adalah :
1.SIM800L kita setting program Auto Reading incoming SMS 
2.Kemudian content SMS yang terbaca akan di-Index dan dicari kecocokan dengan settingan pada program yang kita buat.
3.Jika ada kecocokan Content SMS dari hasil Index maka akan Memenuhi syarat Fungsi if untuk menjalankan program.

Berikut contoh sketch program kendari 2 LED via SMS SIM800L menggunakan library GSM Seeeduino 

Wiring SIM800L <--> Arduino Uno
RXD <--> D8
TXD <--> D7
VCC <--> 3.7V melalui stepdown dari 5V Arduino
GND <--> GND

LED Merah (+) ==> D5
LED Biru (+) ==> D6
LED Merah & Biru (-) ==> GND
  

  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
#include <gprs.h>
#include <softwareserial.h>
 
#define TIMEOUT    5000
#define LED_PIN    13
#define ON 1
#define OFF 0

const int MERAH = 5;
const int BIRU = 6;
 
int StatusMerah;
int StatusBIRU;
GPRS gprs;
 
void setup() {
  pinMode (MERAH , OUTPUT);
  pinMode (BIRU , OUTPUT);
  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(MERAH, StatusMerah);
  digitalWrite(BIRU, StatusBIRU);
   
  //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 LED MERAH
            if(lastLine.indexOf("MERAH ON") >= 0){
              StatusMerah = 1;
              Serial.println("LED MERAH DINYALAKAN");} 
              else if(lastLine.indexOf("MERAH OFF") >= 0) {
              StatusMerah = 0;
              Serial.println("LED MERAH DIMATIKAN");}
            //Kendali LED BIRU
            if(lastLine.indexOf("BIRU ON") >= 0){
              StatusBIRU = 1;
              Serial.println("LED BIRU DINYALAKAN");} 
              else if(lastLine.indexOf("BIRU OFF") >= 0) {
              StatusBIRU = 0;
              Serial.println("LED BIRU 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;
    }
  }
}


Setelah Wiring OK dan Sketch Program Selesai di Upload coba kirim SMS dengan Format :

MERAH ON 

Maka LED Merah akan menyala

MERAH OFF 

Maka LED Merah akan mati
BIRU ON 

Maka LED Biru akan menyala

BIRUOFF 


Maka LED Biru akan mati
MERAH ON BIRU ON

Maka Kedua LED akan menyala

MERAH OFF BIRU OFF

Maka Kedua LED akan mati
Tampilan pada Serial Monitor Arduino

Apabila ingin Menambahkan Fungsi SMS Balasan ke Nomor Pengirim Tambahkan Syntax Void Send SMS 


 gprs.sendSMS("089666699999","LED MERAH DINYALAKAN");
 
Void/syntax Send SMS diletakan menggantikan Serial.print atau setelah Serial.print

Apabila ingin mengganti LED dengan Relay Module Arduino (low -active)

Cukup merubah definisi ON dan OFF

 

//Control LED
#define ON 1 
#define OFF 0

 
//Control Relay
#define ON 0
#define OFF 1

Posted On : Sunday, January 22, 2017Time : 10:19 PM
SHARE TO :
| | Template Created By : Rajendroid | CopyRigt By : ARDUINO | |