#include <Wire.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <DHT.h>
#include <Arduino.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
Adafruit_MPU6050 mpu;
#define DHT_PIN 12
#define PULSE_PIN 35
#define BLYNK_TEMPLATE_ID "TMPL3-rdMg-oI"
#define BLYNK_TEMPLATE_NAME "CATTLE MONITORING SYSTEM"
#define BLYNK_AUTH_TOKEN "ld1pTtP-YsixcJBhfNLDjR3q5glS36Kz"
#include <BlynkSimpleEsp32.h>
char auth[]=BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define MQTT_TOPIC_HR "/heartRate"
#define MQTT_TOPIC_TEMP "/tempValue"
#define MQTT_TOPIC_HUM "/humValue"
#define MQTT_TOPIC_ACCEL "/accelData"
#define MQTT_TOPIC_GYRO "/gyroData"
DHT dht(DHT_PIN, DHT22);
#define BLYNK_PRINT Serial
BlynkTimer timer;
void setup() {
Wire.begin(23, 22);
Serial.begin(9600);
Serial.println("Hello, ESP32!");
Blynk.begin(auth, ssid, pass);
dht.begin();
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int16_t pulseValue = analogRead(PULSE_PIN);
float voltage = pulseValue * (3.3 / 4095.0);
int heartRate = (voltage / 3.3) * 675;
Serial.print("Heart Rate: ");
Serial.print(heartRate);
Serial.print(" Temp: ");
Serial.print(temperature);
Serial.print(" Humidity: ");
Serial.println(humidity);
Blynk.virtualWrite(V3, heartRate);
Blynk.virtualWrite(V5, temperature);
Blynk.virtualWrite(V4, humidity);
sensors_event_t accel, gyro, temp;
mpu.getEvent(&accel, &gyro, &temp);
String accelData = String(accel.acceleration.x) + "," + String(accel.acceleration.y) + "," + String(accel.acceleration.z);
String gyroData = String(gyro.gyro.x) + "," + String(gyro.gyro.y) + "," + String(gyro.gyro.z);
Serial.print("Accel : ");
Serial.print(accelData);
Serial.print("Gyro : ");
Serial.print(gyroData);
delay(1000);
Blynk.run();
timer.run();
}