Translate

Membuat Alat Monitoring Kirim - Terima SMS Tegangan AC 220v menggunakan SMS GATEWAY ARDUINO SIM800L

Membuat Alat Monitoring Kirim - Terima SMS Tegangan AC 220v menggunakan SMS GATEWAY ARDUINO SIM800L


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk monitoring tegangan AC satu fasa menggunakan sensor ZMPT101B. alai ini memiliki fitur yaitu bisa mengirimkan sms kepada siapa saja yang mengirimkan pesan ke nomer handphone yang ada pada SIM800L, format text pengirimannya yaitu "Monitor" atau "monitor", jika terdeteksi ada text yang masuk dan berformat seperti itu maka alat akan mengirimkan balik ke nomer yang mengirimkan dengan isi pesannya yaitu nilai tegangan yang sekarang sedang terdeteksi sensor.  untuk lebih Jelasnya berikut adalah program dan skemanya.



a. Arduino Mega





b. Sensor Tegangan AC ZMPT101B





c. Buck Converter





d. Modul SMS SIM800L





e. Program Arduino IDE

//VCC Modul SIM800L adalah 4 volt
//Hubungkan RX dan TX ke Arduino Mega pin 50 dan 51
//Download Library di Link berikut
//http://www.4shared.com/rar/Vxz4_UEace/ITEADLIB_Arduino_MEGA_SIMCom_m.html

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

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

#include "Wire.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

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

unsigned long start_times[300];
unsigned long stop_times[300];
unsigned long values[300];

// Define various ADC prescaler
const unsigned char PS_16 = (1 << ADPS2);
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

int a = 0;
int zero = 1;

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
 
  Serial.begin(9600);
 
  // set up the ADC
  ADCSRA &= ~PS_128;  // remove bits set by Arduino library

  // you can choose a prescaler from above.
  // PS_16, PS_32, PS_64 or PS_128
  ADCSRA |= PS_128;    // set our own prescaler to 64


  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("085729996666", "Ready"))
          Serial.println("\nSMS sent OK");
     }

};

void loop()
{

 
    //tegangan AC =============================
  unsigned int i;
  unsigned int z;
  z = 0;
   
  // capture the values to memory
  for(i=0;i<300;i++) {
    start_times[i] = micros();
    values[i] = analogRead(A0);             
 
  if (values[i] >= z) {
  z = values[i]; 
  }
    stop_times[i] = micros();
  }

 float vkal = (z -512.6)/0.493;
 vkal = vkal - 290;

 if(vkal < 0){
 vkal = 0;
 }

 sprintf(string,"Tegangan: %s Volt", dtostrf(vkal, 8, 5, strsms));
 
 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,"monitor")){
      sms.SendSMS(n,string);
    }
    if(!strcmp(smsbuffer,"Monitor")){
      sms.SendSMS(n,string);
    }
  
    delsms();
  }
 }
  delay(100);


  lcd.setCursor(0, 0);
  lcd.print("adc= ");
  lcd.print(z);

  lcd.setCursor(0, 1);
  lcd.print("v= ");
  lcd.print(vkal);
  lcd.print(" v");
 
  z = 0;
     
};

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





g. VIDEO HASILNYA











 

No comments:

Post a Comment