#define BLYNK_TEMPLATE_ID "TMPL3kro0tic-"
#define BLYNK_TEMPLATE_NAME "cattle project"
#define BLYNK_AUTH_TOKEN "dPbE63msetqZ8ODxHKg9rVWlZte3yYM4"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <HardwareSerial.h>
#define DHTTYPE DHT22
#define DHTPIN 17
byte led = 4;
byte led2 = 27;
byte led3 = 26; // LED for humidity alert
int buzzer = 18;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = "dPbE63msetqZ8ODxHKg9rVWlZte3yYM4";
const float potPin = 34;
float potValue = 0;
DHT dht(DHTPIN, DHTTYPE, 22);
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(2000L, sendData);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
pinMode(led2, OUTPUT);
digitalWrite(led2, LOW);
pinMode(led3, OUTPUT);
digitalWrite(led3, LOW);
pinMode(buzzer, OUTPUT);
Serial.println("reading data from the cattle!");
}
void sendData() {
potValue = analogRead(potPin);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println("oxygen: " + String(potValue));
Serial.println("humidity: " + String(h));
Serial.println("temperature: " + String(t));
Blynk.virtualWrite(V2, potValue);
Blynk.virtualWrite(V1, h);
Blynk.virtualWrite(V0, t);
if (t > 38 || t < 35) {
Serial.println("health issues detected! Treat your cattle quickly.");
Blynk.virtualWrite(V3, HIGH);
digitalWrite(led, HIGH);
tone(buzzer, 200);
delay(1000L);
} else {
Blynk.virtualWrite(V3, LOW);
digitalWrite(led, LOW);
tone(buzzer, 0);
}
if (potValue < 50) {
Serial.println("your cattle oxygen level is too low");
Blynk.virtualWrite(V4, HIGH);
digitalWrite(led2, HIGH);
tone(buzzer, 200);
delay(1000L);
} else {
Blynk.virtualWrite(V4, LOW);
digitalWrite(led2, LOW);
tone(buzzer, 0);
}
if (h < 30 || h > 70) { // Example thresholds for low or high humidity
Serial.println("humidity is out of the safe range!");
Blynk.virtualWrite(V5, HIGH);
digitalWrite(led3, HIGH);
tone(buzzer, 200);
delay(1000L);
} else {
Blynk.virtualWrite(V5, LOW);
digitalWrite(led3, LOW);
tone(buzzer, 0);
}
}
void loop() {
Blynk.run();
timer.run();
}