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
Post a Comment