MENGUKUR INTENSITAS CURAH HUJAN


Pembahasan ini tentang mengukur intensitas curah hujan menggunakan NodeMCU ESP8266. Digunakan NodeMCU untuk mengirim data yang sudah dihitung dan dikirim ke database. Serta digunakan Water Sensor untuk intensitas curah hujannya.

Alat dan bahan

-          - Wadah




















Yang pertama adalah wadah, sebagai penampung air hujan dan menaruh water sensonya di dinding dalam wadah


-         - NodeMCU ESP8266

NodeMCU ini berfungsi sebagai mikrokontroler serta akan mengirim data ke database.

-          -Water Sensor

Water sensor ini yang akan mengambil data ketinggian air hujan.

-         - Arduino IDE




Software yang digunakan untuk memasukkan code program ke mikrokontroler agar proyek dapat berjalan.

-         - Thingspeak



Data Yang telah didapatkan di NodeMCU akan di kirim ke Thingspeak ini, dari NodeMCU ke Thingspeak.



-          -Jumper

Serta jumper untuk menghubungkan NodeMCU ke Water Sensor.


Rangkaian

Setelah mengumpulkan semua alat dan bahan kemudian melakukan perangkaian.
Berikut adalah  rangkaian NodeMCU ke sensor :


Dan sketch programnya sebagai berikut:

                       int pinSensor = A0;
                         float panjangSensor = 4.0 ;
                         void setup() {
                            Serial.begin(9600);
                            Serial.println("Mengukur Ketinggian Air");
                            delay(500);
                         }

                         void loop() {
                            int nilai = analogRead(pinSensor);
                            float tinggiAir = nilai * panjangSensor / 1023;
                            Serial.print("Tinggi Air = ");
                            Serial.print(tinggiAir);
                            Serial.println(" cm");
                            delay(1000);
                         }

Menghubungkan NodeMCU ke Thingspeak

Untuk menghubungkan NodeMCU ke Thingspeak pertama harus membuat akun di website Thinkspeak, lalu memasukkan kode program pada arduino IDE. Kode programnya sebagai berikut:

#include <ESP8266WiFi.h>

const char* ssid     = "xxx";
const char* password = "xxx";

const char* host = "api.thingspeak.com";
char thingSpeakAddress[] = "api.thingspeak.com";

String writeAPIKey = "xxx";
const int updateThingSpeakInterval = 30 * 1000;      // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval)

// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;

float myvalue = 1234;
// Initialize Arduino Ethernet Client
WiFiClient client;

void setup()
{
  // Start Serial for debugging on the Serial Monitor
  Serial.begin(9600);

  // Start Ethernet on Arduino
  startEthernet();
}

void loop()
{
  // Read value from Analog Input Pin 0
  String analogValue0 = String(myvalue++, DEC);

  // Print Update Response to Serial Monitor
  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }

  // Disconnect from ThingSpeak
  if (!client.connected() && lastConnected)
  {
    Serial.println("...disconnected");
    Serial.println();

    client.stop();
  }

  // Update ThingSpeak
  if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))
  {
    updateThingSpeak("field1="+analogValue0);
  }

  // Check if Arduino Ethernet needs to be restarted
  if (failedCounter > 3 ) {startEthernet();}

  lastConnected = client.connected();
}

void updateThingSpeak(String tsData)
{
  if (client.connect(thingSpeakAddress, 80))
  {        
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");

    client.print(tsData);

    lastConnectionTime = millis();

    if (client.connected())
    {
      Serial.println("Connecting to ThingSpeak...");
      Serial.println();

      failedCounter = 0;
    }
    else
    {
      failedCounter++;

      Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");  
      Serial.println();
    }

  }
  else
  {
    failedCounter++;

    Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");  
    Serial.println();

    lastConnectionTime = millis();
  }
}

void startEthernet()
{
   failedCounter = 0;

  client.stop();

  Serial.println("Connecting Arduino to network...");
  Serial.println(); 

  delay(1000);

  WiFi.begin(ssid, password);

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

  Serial.println("");
  Serial.println("WiFi connected"); 
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  delay(1000);
}

Catatan: ssid dan password di ganti dengan id dan password dari wifi/hotspot yang tersambung dengan NodeMCU.



oleh: Dandi Wisnu Shoreandi

Comments

Popular posts from this blog

Alat Deteksi Intensitas Curah Hujan

Sistem Pengukur Intensitas Curah Hujan