bangnaga icon

Arduino: SMS Sensor Curah Hujan & Ketinggian Air

bangnaga | PRO | 12/01/14 02:54:15 PM UTC | 0 ⭐ | 497 👁️ | Never ⏰ | []
C |

4.02 KB

|

None

|

0 👍

/

0 👎

/* ============================================
SMS Sensor Curah Hujan & Ketinggian Air
Sungguminasa, 1 Desember 2014
www.facebook.com/nagasakti
email: [email protected]
----------------------------------------------
Ketinggian Air
Normal = <50
Siaga1 = 51-74
Siaga2 = 75-100
Siaga3 = 100-150
Siaga4 = >150
 
 
Pin Sensor
--------------------
Ultrasonic = Digital 4
Rain       = Digital 9
Pinout Sensor Curah Hujan (Rain Guage : http://www.skyview.co.uk/acatalog/m_CM2016_RG.gif)
Red  --------------------------- GND
 
         |--------------------- Digital 9  
         |  R = 10 K ohm  
Green ----/\/\/\/\------------- VCC 5 Volt
============================================ */
 
//Rain variable
int pulsePin =9; // Pin Digital 9 (Sensor Curah Hujan)
unsigned long counter = 0;
unsigned long duration = 0;
unsigned long timeout = 1000000; // in microseconds
 
// Sensor PING
const int pingPin = 7;
const int hmax = 5; //5 cm
const int tinggisensor = 160;  // Ketinggian Sensor dari Permukaan
int ketinggian;
 
 
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
char number[]="+6285242493184"; //Nomor Handphone SMS Center (Server)
char number2[]="+625255544442"; //Nomor Handphone Petugas (Siaga4)
int sensor1=0;
int sensor2=0;
char value_str[4]; // 4 Digit Integer to Str
char ket_str[20];
char message[40];
String keterangan;
 
 
void setup()
{
 Serial.begin(9600);
 if (gsm.begin(2400))
   Serial.println("\nstatus=READY");
 else Serial.println("\nstatus=IDLE");
};
 
void loop()
{
sensor1 = bacaketinggian();
sensor2 = bacacurahhujan();
 
//Cek Kondisi Ketinggian Air
 
//Normal = <50
//Siaga1 = 51-74
//Siaga2 = 75-100
//Siaga3 = 100-150
//Siaga4 = >150
if (ketinggian<50) {
   keterangan= "*Tidak Banjir*";
}
else 
if (ketinggian>51 && ketinggian<=74) {
    //keterangan = ", Siaga 1";
    keterangan = "*Siaga 1*";    
}
else 
if (ketinggian>75 && ketinggian<=100) {
    //keterangan = ", Siaga 2";
    keterangan = "*Siaga 2*";    
}
else 
if (ketinggian>100 && ketinggian<=150) {
    //keterangan = ", Siaga 3";}
    keterangan = "*Siaga 3*";}    
else
if (ketinggian >150) {
    //keterangan = ", Siaga 4";
    keterangan = "*Siaga 4*";
   
    
}
else
{
 //keterangan = ", Tidak Terdefenisikan";
  keterangan = "*Tidak Terdefenisikan*";
};
Serial.println(keterangan);
 
//Kirim SMS
 kirimsms(keterangan);
 
};
 
 
void kirimsms(String keterangan)
{
 message[0]='\0';
   //strcat(message,"Curah Hujan: ");
   strcat(message,"*D01*");
   itoa(counter*.2794,value_str,10);
   strcat(message,value_str);
   
   //strcat(message,", Ketinggian Air: ");
   strcat(message,"*");   
   itoa(ketinggian,value_str,10);
   strcat(message,value_str);
    
   keterangan.toCharArray(ket_str, 20);
 
   strcat(message, ket_str);
   sms.SendSMS(number,message);
   if (keterangan ="Siaga 4*") {
     sms.SendSMS(number2,message);
   }
   delay(120000); //Delay Pengiriman SMS
 }
 
int bacaketinggian(){
  //Baca Ketinggian Air Asusmsi ketinggian sensor ke permukaan 160 cm
  int result;
  long duration, cm;
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);
  cm = mmtocm(duration);
  ketinggian = tinggisensor - cm;
  result = ketinggian;
  Serial.print("  Ketinggian: ");
  Serial.println(ketinggian); 
//  delay (500);
//===END Ketinggian Air
}  
 
long mmtocm(long microseconds)
{
  return microseconds / 29 / 2;
}
 
 
 int bacacurahhujan(){
  //Baca Curah Hujan 
 duration = pulseIn(pulsePin, HIGH, timeout);
 if (duration == 0) {
   Serial.print("Mulai Menghitung Curah Hujan.");
   Serial.println("");
 } else {
   counter++;
   //Serial.print(counter);
  // Serial.print(", ");
   Serial.print(duration*.000001);
   Serial.println(" s");
   //Serial.println("");
   Serial.print (counter*.2794);
   Serial.println(" mm");
}
//== END Rain
}

Comments