#define BLYNK_TEMPLATE_ID "TMPL3zhHJvg_9"
#define BLYNK_TEMPLATE_NAME "Cattle Monitoring"
#define BLYNK_AUTH_TOKEN "MkTQK75aigQMT_NLHVtqpzaJZ3uXm5AG"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <TinyGPS++.h>
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = ""; // No password needed for Wokwi-GUEST
// Potentiometer (Pulse Sensor)
const int PulseWire = 36; // Use GPIO 36 (ADC1 channel 0)
// Accelerometer
Adafruit_MPU6050 mpu;
// Temperature Sensor
#define ONE_WIRE_BUS 4 // GPIO 4 for 1-Wire
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// GPS Module
// Use hardware serial port
HardwareSerial ss(2); // Serial2: RX = GPIO16, TX = GPIO17
TinyGPSPlus gps;
// Define the BPM range
const int BPM_MIN = 50;
const int BPM_MAX = 150;
void setup() {
Serial.begin(115200);
ss.begin(9600, SERIAL_8N1, 16, 17); // Serial2 with RX = GPIO16, TX = GPIO17
// Connect to WiFi
connectToWiFi();
// Initialize Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password);
// Initialize Accelerometer
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
// Initialize Temperature Sensor
sensors.begin();
}
void loop() {
Blynk.run();
// Simulate GPS Data (fallback if GPS not available)
float latitude = 37.7749; // Example latitude
float longitude = -122.4194; // Example longitude
// Read GPS Data
while (ss.available() > 0) {
gps.encode(ss.read());
}
if (gps.location.isUpdated()) {
latitude = gps.location.lat();
longitude = gps.location.lng();
}
// Read Potentiometer (Pulse Sensor) Data
int potValue = analogRead(PulseWire);
int myBPM = map(potValue, 0, 4095, BPM_MIN, BPM_MAX); // Map the potentiometer value to a BPM range
// Read Accelerometer Data
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// Read Temperature Data
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
// Send individual data points to Blynk
Blynk.virtualWrite(V1, latitude);
Blynk.virtualWrite(V2, longitude);
Blynk.virtualWrite(V3, myBPM);
Blynk.virtualWrite(V4, temperatureC);
Blynk.virtualWrite(V5, a.acceleration.x);
Blynk.virtualWrite(V6, a.acceleration.y);
Blynk.virtualWrite(V7, a.acceleration.z);
// Wait before sending the next set of data
delay(20000);
}
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
}
Loading
ds18b20
ds18b20