Translate

Alat Kendali Pompa (Relay) Menggunakan SMS berbasis ARDUINO dan SMS Gateway SIM900A

Alat Kendali Pompa (Relay) Menggunakan SMS berbasis ARDUINO dan SMS Gateway SIM900A


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk kendali pompa dengan menggunakan SMS, pompa dipasangkan ke relay sehingga yang akan aktif adalah relay, jika relay aktif maka pompa akan aktif, jika relay off maka pompa akan off juga. alat ini dikendalikan menggunakan 2 cara yaitu dengan menggunakan sms dan dengan tombol push button. untuk lebih jelasnya berikut adalah skema dan programnya.



a. Arduino Uno




b. Modul SIM900A




c. LCD 16x2 + I2C




d. Modul relay






e. Program Arduino

#include <Wire.h>
#include <LiquidCrystal_I2C.h> 

#include "SIM900.h"
#include <SoftwareSerial.h>

#include <stdlib.h>
#include "sms.h"
SMSGSM sms;

LiquidCrystal_I2C lcd(0x27, 16, 2);

int relay1 = 4;
int relay2 = 5;
int btstart = 10;
int btstop = 9;
int led = 6;
int btstartx = 0;
int btstopx = 0;
int mark = 0;
int cacah = 0;

char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char strsms[5];


void setup(){
    
  lcd.begin(); //set lcd i2c
  lcd.noCursor(); //biar gak ada cursor di lcd
  lcd.clear(); //clear lcd
  Serial.begin(9600);
 
  lcd.setCursor(0, 0);
  lcd.print("LOADING.....");

  pinMode(relay1,OUTPUT);
  pinMode(relay2,OUTPUT);
  digitalWrite(relay1,HIGH);
  digitalWrite(relay2,HIGH);
 
  pinMode(led,OUTPUT);
  digitalWrite(led,HIGH);
 
  pinMode(btstart,INPUT_PULLUP);
  pinMode(btstop,INPUT_PULLUP);
       
      Serial.println("GSM Shield testing.");

     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

     if(started) {
          //Enable this two lines if you want to send an SMS.
          //if (sms.SendSMS("085726123456", "Alat Ready"))
          //Serial.println("\nSMS sent OK");
     }
    
     lcd.clear(); //clear lcd
 
}



void loop(){

 btstartx = digitalRead(btstart);

 if(btstartx == 0){
  lcd.setCursor(0, 0);
  lcd.print("KIRIM SMS START   ");
 
  if (sms.SendSMS("085726123456", "Pompa ON"))
          Serial.println("\nSMS sent OK");
          digitalWrite(relay1,LOW);
          mark = 1;
 lcd.clear();  
 btstartx = 1;
 }


  btstopx = digitalRead(btstop);

  if(btstopx == 0){
  lcd.setCursor(0, 0);
  lcd.print("KIRIM SMS STOP   ");
 
  if (sms.SendSMS("085726123456", "Pompa OFF"))
          Serial.println("\nSMS sent OK");
          digitalWrite(relay1,HIGH);
          mark = 0;
  lcd.clear(); 
  btstopx = 1; 
  cacah = 0;
  }

 
 if(gsm.begin(9600)){
  started=true;
 }

 int pos=0;
 if(started){
  pos=sms.IsSMSPresent(SMS_ALL);
  if(pos){
    sms.GetSMS(pos,n,smsbuffer,100);
  
    if(!strcmp(smsbuffer,"On")){     
      if (sms.SendSMS("085726123456", "Pompa ON"))
          Serial.println("\nSMS sent OK");
          digitalWrite(relay1,LOW);
          mark = 1;
    }
   
    if(!strcmp(smsbuffer,"Off")){     
       if (sms.SendSMS("085726123456", "Pompa OFF"))
          Serial.println("\nSMS sent OK");
          digitalWrite(relay1,HIGH);
          mark = 0;
          cacah = 0;
    }
 
    delsms();
  }
 }

  delay(1000);
 
  if(mark == 1){
  cacah++;
  }
 
 
  if(cacah > 10){
    if (sms.SendSMS("085726123456", "Pompa ON"))
      Serial.println("\nSMS sent OK");
      cacah = 0;       
  }
 
    lcd.setCursor(0, 1);
    lcd.print("Waktu=");
    lcd.print(cacah);
    lcd.print(" ");
 
  btstartx = digitalRead(btstart);
  btstopx = digitalRead(btstop);

  lcd.setCursor(12, 1);
  lcd.print(btstartx);
  lcd.print("-");
  lcd.print(btstopx);
 
 
}



void delsms()
{
  for (int i=0; i<10; i++)
  {
      int pos=sms.IsSMSPresent(SMS_ALL);
      if (pos!=0)
      {
        if (sms.DeleteSMS(pos)==1){}else{}
      }
  }
}




f. VIDEO HASILNYA









No comments:

Post a Comment