Advertisement
bangnaga

Arduino: SMS Sensor Curah Hujan & Ketinggian Air

Dec 1st, 2014
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.02 KB | None | 0 0
  1. /* ============================================
  2. SMS Sensor Curah Hujan & Ketinggian Air
  3. Sungguminasa, 1 Desember 2014
  4. www.facebook.com/nagasakti
  5. ----------------------------------------------
  6. Ketinggian Air
  7. Normal = <50
  8. Siaga1 = 51-74
  9. Siaga2 = 75-100
  10. Siaga3 = 100-150
  11. Siaga4 = >150
  12.  
  13.  
  14. Pin Sensor
  15. --------------------
  16. Ultrasonic = Digital 4
  17. Rain       = Digital 9
  18. Pinout Sensor Curah Hujan (Rain Guage : http://www.skyview.co.uk/acatalog/m_CM2016_RG.gif)
  19. Red  --------------------------- GND
  20.  
  21.          |--------------------- Digital 9  
  22.          |  R = 10 K ohm  
  23. Green ----/\/\/\/\------------- VCC 5 Volt
  24. ============================================ */
  25.  
  26. //Rain variable
  27. int pulsePin =9; // Pin Digital 9 (Sensor Curah Hujan)
  28. unsigned long counter = 0;
  29. unsigned long duration = 0;
  30. unsigned long timeout = 1000000; // in microseconds
  31.  
  32. // Sensor PING
  33. const int pingPin = 7;
  34. const int hmax = 5; //5 cm
  35. const int tinggisensor = 160;  // Ketinggian Sensor dari Permukaan
  36. int ketinggian;
  37.  
  38.  
  39. #include "SIM900.h"
  40. #include <SoftwareSerial.h>
  41. #include "sms.h"
  42. SMSGSM sms;
  43. char number[]="+6285242493184"; //Nomor Handphone SMS Center (Server)
  44. char number2[]="+625255544442"; //Nomor Handphone Petugas (Siaga4)
  45. int sensor1=0;
  46. int sensor2=0;
  47. char value_str[4]; // 4 Digit Integer to Str
  48. char ket_str[20];
  49. char message[40];
  50. String keterangan;
  51.  
  52.  
  53. void setup()
  54. {
  55.  Serial.begin(9600);
  56.  if (gsm.begin(2400))
  57.    Serial.println("\nstatus=READY");
  58.  else Serial.println("\nstatus=IDLE");
  59. };
  60.  
  61. void loop()
  62. {
  63. sensor1 = bacaketinggian();
  64. sensor2 = bacacurahhujan();
  65.  
  66. //Cek Kondisi Ketinggian Air
  67.  
  68. //Normal = <50
  69. //Siaga1 = 51-74
  70. //Siaga2 = 75-100
  71. //Siaga3 = 100-150
  72. //Siaga4 = >150
  73. if (ketinggian<50) {
  74.    keterangan= "*Tidak Banjir*";
  75. }
  76. else
  77. if (ketinggian>51 && ketinggian<=74) {
  78.     //keterangan = ", Siaga 1";
  79.     keterangan = "*Siaga 1*";    
  80. }
  81. else
  82. if (ketinggian>75 && ketinggian<=100) {
  83.     //keterangan = ", Siaga 2";
  84.     keterangan = "*Siaga 2*";    
  85. }
  86. else
  87. if (ketinggian>100 && ketinggian<=150) {
  88.     //keterangan = ", Siaga 3";}
  89.     keterangan = "*Siaga 3*";}    
  90. else
  91. if (ketinggian >150) {
  92.     //keterangan = ", Siaga 4";
  93.     keterangan = "*Siaga 4*";
  94.    
  95.    
  96. }
  97. else
  98. {
  99.  //keterangan = ", Tidak Terdefenisikan";
  100.   keterangan = "*Tidak Terdefenisikan*";
  101. };
  102. Serial.println(keterangan);
  103.  
  104. //Kirim SMS
  105.  kirimsms(keterangan);
  106.  
  107. };
  108.  
  109.  
  110. void kirimsms(String keterangan)
  111. {
  112.  message[0]='\0';
  113.    //strcat(message,"Curah Hujan: ");
  114.    strcat(message,"*D01*");
  115.    itoa(counter*.2794,value_str,10);
  116.    strcat(message,value_str);
  117.    
  118.    //strcat(message,", Ketinggian Air: ");
  119.    strcat(message,"*");  
  120.    itoa(ketinggian,value_str,10);
  121.    strcat(message,value_str);
  122.    
  123.    keterangan.toCharArray(ket_str, 20);
  124.  
  125.    strcat(message, ket_str);
  126.    sms.SendSMS(number,message);
  127.    if (keterangan ="Siaga 4*") {
  128.      sms.SendSMS(number2,message);
  129.    }
  130.    delay(120000); //Delay Pengiriman SMS
  131.  }
  132.  
  133. int bacaketinggian(){
  134.   //Baca Ketinggian Air Asusmsi ketinggian sensor ke permukaan 160 cm
  135.   int result;
  136.   long duration, cm;
  137.   pinMode(pingPin, OUTPUT);
  138.   digitalWrite(pingPin, LOW);
  139.   delayMicroseconds(2);
  140.   digitalWrite(pingPin, HIGH);
  141.   delayMicroseconds(5);
  142.   digitalWrite(pingPin, LOW);
  143.   pinMode(pingPin, INPUT);
  144.   duration = pulseIn(pingPin, HIGH);
  145.   cm = mmtocm(duration);
  146.   ketinggian = tinggisensor - cm;
  147.   result = ketinggian;
  148.   Serial.print("  Ketinggian: ");
  149.   Serial.println(ketinggian);
  150. //  delay (500);
  151. //===END Ketinggian Air
  152. }  
  153.  
  154. long mmtocm(long microseconds)
  155. {
  156.   return microseconds / 29 / 2;
  157. }
  158.  
  159.  
  160.  int bacacurahhujan(){
  161.   //Baca Curah Hujan
  162.  duration = pulseIn(pulsePin, HIGH, timeout);
  163.  if (duration == 0) {
  164.    Serial.print("Mulai Menghitung Curah Hujan.");
  165.    Serial.println("");
  166.  } else {
  167.    counter++;
  168.    //Serial.print(counter);
  169.   // Serial.print(", ");
  170.    Serial.print(duration*.000001);
  171.    Serial.println(" s");
  172.    //Serial.println("");
  173.    Serial.print (counter*.2794);
  174.    Serial.println(" mm");
  175. }
  176. //== END Rain
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement