TKK_E32210550/blynk_v2.ino

90 lines
2.5 KiB
C++

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define BLYNK_TEMPLATE_ID "TMPL65-q3gCp1"
#define BLYNK_TEMPLATE_NAME "Monitoring Tambak"
#include <BlynkSimpleEsp8266.h> // Library Blynk untuk ESP8266
char auth[] = "gg0y3wCGEGo7g9MBSYX6PvguebjWJMpn"; // Token otorisasi Blynk
const int oneWireBus = 2; // Pin D4 pada NodeMCU untuk sensor suhu DS18B20
const int turbidityPin = A0; // Pin analog untuk sensor turbidity
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD 16x2
void setup() {
Serial.begin(115200);
sensors.begin();
lcd.init();
lcd.backlight();
// Menampilkan pesan "Connecting WiFi" di LCD
lcd.setCursor(0, 0);
lcd.print("Connecting WiFi");
// Menghubungkan ke server Blynk
Blynk.begin(auth, "feny", "123456789");
// Tunggu sampai terhubung ke Blynk
while (!Blynk.connected()) {
delay(500);
Serial.print(".");
}
// Menampilkan pesan "Connected" di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Connected");
delay(2000); // Tampilkan pesan "Connected" selama 2 detik
lcd.clear();
}
void loop() {
Blynk.run(); // Memanggil fungsi Blynk
// Membaca suhu dalam derajat Celsius
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
// Mengirim nilai suhu ke widget V2 di Blynk
Blynk.virtualWrite(V2, temperatureC);
// Membaca nilai kekeruhan dari sensor turbidity
int turbidityValueRaw = analogRead(turbidityPin);
// Mengubah nilai analog menjadi nilai dalam rentang 0-100 dengan kondisi terbalik
int turbidityValue = map(turbidityValueRaw, 0, 1023, 100, 0);
// Mengirim nilai kekeruhan ke widget V1 di Blynk
Blynk.virtualWrite(V1, turbidityValue);
// Menampilkan hasil ke LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(temperatureC);
lcd.print(" C");
lcd.setCursor(0, 1);
if (turbidityValue >= 0 && turbidityValue <= 25) {
lcd.print("Tingkat: Jernih");
Serial.println("Tingkat kekeruhan: Jernih");
Blynk.virtualWrite(V3, "Jernih"); // Mengirim nilai kekeruhan ke widget V3 di Blynk
} else {
lcd.print("Tingkat: Kotor");
Serial.println("Tingkat kekeruhan: Kotor");
Blynk.virtualWrite(V3, "Kotor"); // Mengirim nilai kekeruhan ke widget V3 di Blynk
}
// Menampilkan nilai kekeruhan dan suhu ke Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperatureC);
Serial.print(" C, Kekeruhan: ");
Serial.println(turbidityValue);
delay(1000); // Delay 1 detik
}