#include <Wire.h>
#include <MPU6050_tockn.h>
#include <WiFi.h>
// Initialize MPU6050
MPU6050 mpu6050(Wire);
// WiFi credentials
const char* ssid = "Seed";
const char* password = "password";
// Google Maps API Key (if needed for future purposes)
String GMAP_API_KEY = "AIzaSyBAB5i6zlA1-nnWWtgTLQn9URcL1fzXkKc";
WiFiServer server(80);
// Define pins
const int buzzerPin = 25; // Adjust the pin as needed
const int ledPin = 4; // Adjust the pin as needed
// Movement detection thresholds
const float accelThreshold = 0.1; // Adjust as necessary
const float gyroThreshold = 1.0; // Adjust as necessary
// Previous sensor readings
float prevAccX, prevAccY, prevAccZ;
float prevGyroX, prevGyroY, prevGyroZ;
void setup() {
Serial.begin(115200);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
// Initialize previous readings
mpu6050.update();
prevAccX = mpu6050.getAccX();
prevAccY = mpu6050.getAccY();
prevAccZ = mpu6050.getAccZ();
prevGyroX = mpu6050.getGyroX();
prevGyroY = mpu6050.getGyroY();
prevGyroZ = mpu6050.getGyroZ();
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
connectToWiFi();
}
void loop() {
mpu6050.update();
int h;
float currAccX = mpu6050.getAccX();
float currAccY = mpu6050.getAccY();
float currAccZ = mpu6050.getAccZ();
float currGyroX = mpu6050.getGyroX();
float currGyroY = mpu6050.getGyroY();
float currGyroZ = mpu6050.getGyroZ();
bool isMoved = false;
// Check if there's a significant change in acceleration
if (abs(currAccX - prevAccX) > accelThreshold ||
abs(currAccY - prevAccY) > accelThreshold ||
abs(currAccZ - prevAccZ) > accelThreshold) {
isMoved = true;
}
// Check if there's a significant change in gyroscope
if (abs(currGyroX - prevGyroX) > gyroThreshold ||
abs(currGyroY - prevGyroY) > gyroThreshold ||
abs(currGyroZ - prevGyroZ) > gyroThreshold) {
isMoved = true;
}
if (isMoved) {
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
} else {
digitalWrite(buzzerPin, HIGH);
digitalWrite(ledPin, HIGH);
}
Serial.println("=======================================================");
Serial.print("temp : ");
Serial.println(mpu6050.getTemp());
Serial.print("Movement: ");
Serial.println(isMoved ? "body moved" : "body not moved");
h = isMoved ? 1 : 0;
// Update previous readings
prevAccX = currAccX;
prevAccY = currAccY;
prevAccZ = currAccZ;
prevGyroX = currGyroX;
prevGyroY = currGyroY;
prevGyroZ = currGyroZ;
delay(10000); // Short delay to avoid rapid toggling
}
void connectToWiFi() {
Serial.println("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}