#define BLYNK_TEMPLATE_ID "TMPL6NBp1q1LA"
#define BLYNK_TEMPLATE_NAME "CHEMTEC"
#define BLYNK_AUTH_TOKEN "BRfkThKIxUciVDBKIj_82Pkdbs1fW5LZ"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#define redPin 2 // Red LED pin
#define greenPin 4 // Green LED pin
char auth[] = BLYNK_AUTH_TOKEN ;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
Serial.println("Water Quality Analyzer");
Wire.begin(21, 22);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("Water Quality ");
lcd.setCursor(4, 1);
lcd.print("Analyzer");
delay(5000);
lcd.clear();
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
// Set the pinMode for sensor pins in the setup() function.
pinMode(32, INPUT);
pinMode(34, INPUT);
pinMode(35, INPUT);
}
void loop() {
Blynk.run();
// Read EC
int elConductivity = analogRead(32);
float ec = map(elConductivity, 0, 1023, 0, 2000);
// Read TDS
int Turb1 = analogRead(34);
float Turb = map(Turb1, 0, 1023, 0, 10);
// Read pH
int PH = analogRead(35);
float PH1 = map(PH, 0, 1023, 0, 14);
Serial.print("EC: ");
Serial.println(ec);
Serial.print("Turbidity: ");
Serial.println(Turb);
Serial.print("pH: ");
Serial.println(PH1);
lcd.setCursor(1, 0);
lcd.print("EC: ");
lcd.print(ec);
Blynk.virtualWrite(V0, ec);
delay(1000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Turbidity: ");
lcd.print(Turb);
Blynk.virtualWrite(V1, Turb);
delay(1000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("pH: ");
lcd.print(PH1);
Blynk.virtualWrite(V2, PH1);
delay(1000);
lcd.clear();
if (ec >= 1000 && ec <= 1200 && Turb >=0 && Turb <= 10 && PH1 >= 6.5 && PH1 <= 7.5){
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
Blynk.virtualWrite(V3, HIGH);
Blynk.virtualWrite(V4, LOW);
Serial.print("No treatment is needed!");
lcd.setCursor(2, 0);
lcd.print("No treatment");
lcd.setCursor(3, 1);
lcd.print("is needed!");
delay(1000);
lcd.clear();
}
else {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, HIGH);
Blynk.virtualWrite(V3, LOW);
Blynk.virtualWrite(V4, HIGH);
Serial.print("Treatment is needed!");
lcd.setCursor(3, 0);
lcd.print("Treatment");
lcd.setCursor(3, 1);
lcd.print("is needed!");
delay(1000);
lcd.clear();
}
}