#define BLYNK_TEMPLATE_ID "TMPL6v-8dbHQm"
#define BLYNK_TEMPLATE_NAME "PH value and temperature"
#define BLYNK_AUTH_TOKEN "gKl3ElD5F0dwEDBJHcPUt1fSAWZk-xkm"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "ThingSpeak.h"
#define BLYNK_PRINT Serial
#define ONE_WIRE_BUS 5 // Correct pin for D5
const int LED_PIN = 13;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2262241;
const char* myApiKey = "SQQYS43N4B9LAPM0";
const char* server = "api.thingspeak.com";
WiFiClient client;
OneWire oneWire1(ONE_WIRE_BUS);
DallasTemperature sensor1(&oneWire1);
BlynkTimer timer;
const int pot1Pin = 33;
const int redPin = 19;
const int greenPin = 18;
const int relayPin = 25; // Relay connected to GPIO 25
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin(115200);
delay(2);
sensor1.begin();
delay(20);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(relayPin, OUTPUT); // Initialize relay pin as OUTPUT
digitalWrite(relayPin, LOW); // Ensure relay is initially off
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, sendSensor);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensor() {
sensor1.requestTemperatures();
float temperature1C = sensor1.getTempCByIndex(0);
if (temperature1C == DEVICE_DISCONNECTED_C) {
Serial.println("Error: Could not read temperature data");
Blynk.virtualWrite(V0, "Error");
} else {
Blynk.virtualWrite(V0, temperature1C);
Serial.print("Temperature: ");
Serial.print(temperature1C);
Serial.println("C");
}
int pot1Value = analogRead(pot1Pin);
float pHValue = (pot1Value / 4095.0) * 14.0; // Convert ADC value to pH value
Blynk.virtualWrite(V2, pHValue);
Serial.print("pH Value: ");
Serial.println(pHValue);
if (pHValue < 7) {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(relayPin, LOW); // Turn off the relay
} else if (pHValue >= 8) {
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(relayPin, LOW); // Turn off the relay
} else {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(relayPin, LOW); // Turn off the relay
}
delay(100); // This speeds up the simulation
}