/* ============================================
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