#define BLYNK_TEMPLATE_ID "TMPL4eOKYk8Wm"
#define BLYNK_TEMPLATE_NAME "Erdbeben"
#define BLYNK_AUTH_TOKEN "Xb3GkAv_2f4Ndo-v0wXNUBPuXA-lYWIc"
#define BLYNK_PRINT Serial
#define pinBuzzer 2
#define greenLED 4
#define redLED 5
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <LiquidCrystal.h>
Adafruit_MPU6050 mpu;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void myTimerEvent()
{
Blynk.virtualWrite(V2, millis() / 1000);
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(pinBuzzer, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
timer.setInterval(1000L, myTimerEvent); //Staring a timer
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("");
delay(100);
}
void loop()
{
detect();
timer.run();
}
void detect(){
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
int acX = a.acceleration.x;
int acY = a.acceleration.y;
int acZ = a.acceleration.z;
String v = ",";
String x = String(acX);
String y = String(acY);
String z = String(acZ);
int sum = acX+acY+acZ;
String staerke;
if(acX && acY && acZ > 0){
if (sum >= 3 && sum <=15){
staerke = "schwach";
}else if (sum > 15 && sum <= 30){
staerke = "mittel";
}else if (sum >30 && sum <= 45){
staerke = "stark";
}else if (sum > 45 ){
staerke = "verheerend";
}
}
if(acX && acY && acZ > 0){
ledcAttachPin(pinBuzzer, 0);
ledcWriteTone(0, 1000);
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
Serial.println("EARTHQUAKE DETECTED !!! "+ x + v + y+ v + z);
Serial.println("");
Blynk.virtualWrite(V0, "EARTHQUAKE DETECTED !!!");
Blynk.virtualWrite(V1, sum);
Blynk.virtualWrite(V10, staerke);
}else{
ledcDetachPin(pinBuzzer);
sum = 0;
staerke = "ruhig";
Serial.println("SAFE "+ x + v + y+ v + z);
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
Serial.println("");
Blynk.virtualWrite(V0, "SAFE");
Blynk.virtualWrite(V1, sum);
Blynk.virtualWrite(V10, staerke);
}
delay(1500);
Blynk.run();
}