#define BLYNK_TEMPLATE_ID "TMPL3a10pG72j"
#define BLYNK_TEMPLATE_NAME "smart soil monitoring system"
#define BLYNK_AUTH_TOKEN "Ly4MkjpL-xLP1coNiG1n652csOv0486E"
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h> // Use BlynkSimpleEsp8266.h for ESP8266
#include <Adafruit_ADS1015.h> // Library for ADS1015 ADC
#include <OneWire.h>
#include <DallasTemperature.h>
char auth[] = "Ly4MkjpL-xLP1coNiG1n652csOv0486E";
char ssid[] = "WIFIGUEST";
char pass[] = "";
#define soilMoisturePin A0 // Analog pin for soil moisture sensor
#define pHPin A1 // Analog pin for pH sensor
#define temperaturePin A2 // Analog pin for temperature sensor
Adafruit_ADS1115 ads; // Create an instance of the ADS1115 object
OneWire oneWire(temperaturePin);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
ads.begin();
sensors.begin();
}
void loop() {
Blynk.run();
int soilMoistureValue = analogRead(soilMoisturePin);
int moisturePercent = map(soilMoistureValue, 0, 1023, 0, 100); // Map the analog reading to percentage
int pHValue = analogRead(pHPin);
float pH = map(pHValue, 0, 1023, 0, 14); // Map the analog reading to pH range (0-14)
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
Serial.print("Soil Moisture: ");
Serial.print(moisturePercent);
Serial.println("%");
Serial.print("pH Value: ");
Serial.println(pH);
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println("°C");
Blynk.virtualWrite(V0, moisturePercent); // Send soil moisture data to Blynk app
Blynk.virtualWrite(V1, pH); // Send pH data to Blynk app
Blynk.virtualWrite(V2, temperatureC); // Send temperature data to Blynk app
delay(1000); // Wait for a second before taking another reading
}