Mendeteksi Curah Hujan

Pada kali ini saya akan menjelaskan mengenai progres awal dari pembuatan pendeteksi curah hujan. Dalam progres pengerjaan curah hujan kali ini terdapat beberapa tahapan yang akan saya jelaskan yaitu perancangan desain serta pengujian water sensor. Mekanisme kerja rancangan alat ini yaitu alat yang dapat merekam curah hujan secara otomatis, data yang terekam akan diolah oleh mikrokontroller dan dikirim ke database online.


Perancangan desain

Seperti yang telah dijelaskan sebelumnya bahwa mekanisme dari pengerjaan alat ini yaitu alat yang dapat merekam curah hujan secara otomatis, maka kita memerlukan beberapa alat untuk menjalankan mekanisme kerja alat pendeteksi curah hujan ini sebagaimana mestinya. 

Alat & Bahan
  • NodeMCU V3 ESP8266
  • Water Sensor
  • Arduino IDE

  • ThingsSpeak
  • Wadah 
Dari alat dan bahan di atas, berikut perancangan awal dari pendeteksi curah hujan :

NodeMCU ESP8266 ini akan digunakan sebagai mikrokontroller yang sekaligus akan mengirimkan data dari water sensor ke database online ThingSpeak. Water sensor digunakan untuk merekam ketinggian air yang terdapat didalam wadah. NodeMCU, Water Sensor, dan ThingSpeak akan dihubungkan melalu ArduinoIDE.

Gambaran rangkaian sistem


Deskripsi Kerja Rainfall

Setelah pengujian pertama dilakukan dapat dilihat bahwa water sensor ini dapat mengukur ketinggian air hingga 4 cm. Secara mendasar cara kerja dari water sensor ini yaitu watersensor akan menghitung tegangan dalam bentuk biner yang nantinya akan diformulasikan dengan panjang sensor serta tegangan maksimum sehingga akan mendapatkan nilai dari ketinggian air.

Setelah pengujian WaterSensor telah dilakukan percobaan untuk menghubungkan antara mikrokontroller NodeMCU dengan ThingsSpeak. Untuk data-data yang dikirim pada thindgspeak yaitu berupa tinggi air dan nilai tegangan (sensor value) yang dideteksi oleh water sensor.

Source Code
#include <ESP8266WiFi.h>

String apiKey = "5FFCIV7ZFNZPSWZZ";     //  Enter your Write API key from ThingSpeak
const char *ssid =  "Hnnn..hnn";     // replace with your wifi ssid and wpa2 key
const char *pass =  "zxcvbnmqwer";
const char* server = "api.thingspeak.com";
#define pinSensor A0          //pin where the dht11 is connected
int sensorValue = 0; //variable untuk menampung nilai baca dari sensor dalam bentuk integer
float tinggiAir = 0; //variabel untuk menampung ketinggian air
float sensorVoltage = 0; //untuk menampung nilai ketinggian air


int nilaiMax = 507; // nilai "sensorValue" saat sensor terendam penuh kedalam air, bisa dirubah sesuai sensor dan jenis air yang anda pakai
float panjangSensor = 4.0 ; // 4.0 cm, bisa dirubah, menyesuikan dengan panjang sensor yang kalian gunakan


WiFiClient client;

void setup()
{
       Serial.begin(115200);
       delay(10);
//       dht.begin();

       Serial.println("Connecting to ");
       Serial.println(ssid);


       WiFi.begin(ssid, pass);

      while (WiFi.status() != WL_CONNECTED)
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");

}

void loop()
{
 
  sensorValue = analogRead(pinSensor); // membaca tengan dari sensor dalam bentuk integer
  tinggiAir = sensorValue*panjangSensor/nilaiMax;
     
              if (isnan(sensorValue))
                 {
                     Serial.println("Failed to read from Water Level sensor!");
                      return;
                 }
                         if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                      { 
                           
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(sensorValue);
//                             postStr +="&field2=";
//                             postStr += String(h);
                             postStr += "\r\n\r\n";

                             client.print("POST /update HTTP/1.1\n");
                             client.print("Host: api.thingspeak.com\n");
                             client.print("Connection: close\n");
                             client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
                             client.print("Content-Type: application/x-www-form-urlencoded\n");
                             client.print("Content-Length: ");
                             client.print(postStr.length());
                             client.print("\n\n");
                             client.print(postStr);

                            Serial.print("Sensor Value = ");
                            Serial.println(sensorValue);
                            Serial.print("Sensor Voltage = ");
                            Serial.println(sensorVoltage);
                            Serial.print("Tinggi Air = ");
                            Serial.println(tinggiAir);
                            Serial.println();
                            delay(1000);
                             Serial.println("%. Send to Thingspeak.");
                        }
          client.stop();

          Serial.println("Waiting...");
 
  // thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
  delay(10000);
}
  

Comments

Popular posts from this blog

Alat Deteksi Intensitas Curah Hujan

Sistem Pengukur Intensitas Curah Hujan