Codee
Codee
h>
#include <BlynkSimpleEsp32.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// WiFi credentials
// Pin Definitions
#define TRIG_PIN 12
#define ECHO_PIN 14
#define DS18B20_PIN 4
#define PH_PIN 35
#define IN1_PIN 26
#define IN2_PIN 27
#define V_TEMP_C 2
#define V_TEMP_F 3
#define V_PH 4
#define V_WATER_LEVEL 1
#define V_PUMP_CONTROL 5
// Sensor Setup
OneWire oneWire(DS18B20_PIN);
DallasTemperature sensors(&oneWire);
// Pump Control
// Function Prototypes
float readWaterLevel();
float readPH();
void setup() {
Serial.begin(115200);
// Sensor Initialization
sensors.begin();
pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
void loop() {
Blynk.run();
// Read Temperature
sensors.requestTemperatures();
// Read pH value
Blynk.virtualWrite(V_TEMP_C, tempC);
Blynk.virtualWrite(V_TEMP_F, tempF);
Blynk.virtualWrite(V_PH, phValue);
Blynk.virtualWrite(V_WATER_LEVEL, waterLevel);
// Check conditions
checkTemperature(tempC);
checkPH(phValue);
controlPump(waterLevel);
float readWaterLevel() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
return distance;
float readPH() {
pumpState = true;
} else if (waterLevel > 50.0) {
pumpState = false;
if (pumpState) {
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
} else {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, LOW);
BLYNK_WRITE(V_PUMP_CONTROL) {
pumpState = value;
if (pumpState) {
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
} else {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, LOW);