#define BLYNK_TEMPLATE_ID "TMPL6q7jDUaoN"
#define BLYNK_TEMPLATE_NAME "UAS IOT"
#define BLYNK_AUTH_TOKEN "QbrcSvl5OJTkMeITpVanYFUoGtymkXJc"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include "LiquidCrystal_I2C.h"
#include "DHT.h"
#include <HTTPClient.h>
#define relayPin 18
#define ldrPin 35
#define DHT_PIN 15
#define DHTTYPE DHT22
#define LED_PIN 33
#define pHPin 32 // Pin sensor pH
#define turbidityPin 36 // Pin sensor kekeruhan (turbidity)
DHT dht(DHT_PIN, DHT22);
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600);
pinMode(ldrPin, INPUT);
pinMode(DHT_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(pHPin, INPUT);
pinMode(turbidityPin, INPUT);
Wire.begin();
Serial.println("Sistem Pemantauan Kualitas Air Kolam Nila");
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Pemantauan Air");
delay(2000);
lcd.clear();
// Koneksi ke Wi-Fi
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Menghubungkan ke WiFi...");
}
Serial.println("Terhubung ke WiFi");
}
void loop() {
// Pembacaan data dari sensor DHT22
float hum = dht.readHumidity();
float temp = dht.readTemperature();
Serial.println("Suhu: " + String(temp, 2) + " °C");
Serial.println("Kelembaban: " + String(hum, 1) + " %");
// Pembacaan data dari sensor pH
int pHValue = analogRead(pHPin);
float voltage = pHValue * (5.0 / 4095.0);
float pH = 3.5 * voltage; // Rumus konversi pH
Serial.println("pH: " + String(pH, 2));
// Pembacaan data dari sensor kekeruhan (turbidity)
int turbidityValue = analogRead(turbidityPin);
float turbidityVoltage = turbidityValue * (5.0 / 4095.0);
float turbidity = (turbidityVoltage - 2.5) * -1120.4 + 5742.3; // Rumus konversi kekeruhan
Serial.println("Kekeruhan: " + String(turbidity, 2) + " NTU");
// Tampilkan di LCD
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(temp);
lcd.print("C "); // Menambahkan spasi untuk menghindari karakter yang tertinggal
lcd.setCursor(0, 1);
lcd.print("pH: ");
lcd.print(pH);
lcd.print(" "); // Menambahkan spasi untuk menghindari karakter yang tertinggal
lcd.setCursor(0, 2);
lcd.print("Kekeruhan: ");
lcd.print(turbidity);
lcd.print(" NTU "); // Menambahkan spasi untuk menghindari karakter yang tertinggal
lcd.setCursor(0, 3);
lcd.print("Kelembaban: ");
lcd.print(hum);
lcd.print("% "); // Menambahkan spasi untuk menghindari karakter yang tertinggal
Serial.println("--------------");
delay(2000);
lcd.clear();
// Kirim data ke server
sendDataToServer(temp, hum, pH, turbidity);
}
void sendDataToServer(float temp, float hum, float pH, float turbidity) {
HTTPClient http;
http.begin("http://172.111.138.132:8000/post");
http.addHeader("Content-Type", "application/json");
String httpRequestData = "{\"temperature\": " + String(temp)
+ ", \"humidity\": " + String(hum)
+ ", \"pH\": " + String(pH)
+ ", \"turbidity\": " + String(turbidity) + "}";
int httpResponseCode = http.POST(httpRequestData);
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println(response);
} else {
Serial.print("Kesalahan saat mengirim POST: ");
Serial.println(httpResponseCode);
}
http.end();
}