#include #include #include #define BLYNK_TEMPLATE_ID "TMPL65-q3gCp1" #define BLYNK_TEMPLATE_NAME "Monitoring Tambak" #include // 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 }