/* ============================================ SMS Sensor Curah Hujan & Ketinggian Air Sungguminasa, 1 Desember 2014 www.facebook.com/nagasakti email: emailsinaga@gmail.com ---------------------------------------------- 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 #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 }