#define BLYNK_TEMPLATE_ID "TMPL3grG9nPT7"
#define BLYNK_TEMPLATE_NAME "soil moisture and npk"
#define BLYNK_AUTH_TOKEN "gFxZ4mVCpGZFPmfDFYFFeOtDOb9_5hxY"
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <DHT.h>
// Pin definitions
#define DHT_PIN 16
#define BUZZER_PIN 17
#define MOISTURE_PIN A0
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
// Virtual pin definitions
#define VIRTUAL_PIN_TEMP V3
#define VIRTUAL_PIN_HUMIDITY V4
#define VIRTUAL_PIN_NITROGEN V0
#define VIRTUAL_PIN_PHOSPHOROUS V1
#define VIRTUAL_PIN_POTASSIUM V2
char auth[] = "gFxZ4mVCpGZFPmfDFYFFeOtDOb9_5hxY";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
dht.begin();
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
while (Blynk.connect() == false) {
Serial.println("Couldn't connect to Blynk.");
}
}
void loop() {
Blynk.run();
byte val1, val2, val3;
val1 = random(0, 350);
delay(250);
val2 = random(0, 350);
delay(250);
val3 = random(0, 330);
delay(250);
Serial.println();
Serial.print("Nitrogen: ");
Serial.print(val1);
Serial.println(" mg/kg");
Serial.print("Phosphorous: ");
Serial.print(val2);
Serial.println(" mg/kg");
Serial.print("Potassium: ");
Serial.print(val3);
Serial.println(" mg/kg");
int moistureValue = analogRead(MOISTURE_PIN);
String moistureLevel;
if (moistureValue <= 300) {
moistureLevel = "Low";
} else {
moistureLevel = "High";
}
Serial.print("Moisture Level: ");
Serial.println(moistureLevel);
delay(2000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (temperature > 30.0 || temperature < 0.0) {
digitalWrite(BUZZER_PIN, HIGH);
tone(BUZZER_PIN, 1000);
} else {
digitalWrite(BUZZER_PIN, LOW);
noTone(BUZZER_PIN);
}
Blynk.virtualWrite(VIRTUAL_PIN_TEMP, temperature);
Blynk.virtualWrite(VIRTUAL_PIN_HUMIDITY, humidity);
Blynk.virtualWrite(VIRTUAL_PIN_NITROGEN, val1);
Blynk.virtualWrite(VIRTUAL_PIN_PHOSPHOROUS, val2);
Blynk.virtualWrite(VIRTUAL_PIN_POTASSIUM, val3);
}