#define BLYNK_TEMPLATE_ID "TMPLG6TWumDw"
#define BLYNK_DEVICE_NAME "MPU6050 Deteksi Gempa"
#define BLYNK_AUTH_TOKEN "f70ninnjre52jASG0m9GNDY-3FrbIhP-"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Adafruit_MPU6050.h>
#include <LiquidCrystal.h>
#include <Wire.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
//mendefinisikan perangkat
LiquidCrystal lcd(15, 2, 4, 5, 18, 19);
Adafruit_MPU6050 mpu;
BlynkTimer timer;
const int pinBuzzer = 23;
void setup()
{
pinMode(pinBuzzer, OUTPUT);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
//membuat teks ke lcd
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Deteksi");
lcd.setCursor(0, 1);
lcd.print("Gempa");
delay(1500);
lcd.clear();
//inisialisasi mpu6050
if (!mpu.begin()) {
Serial.println("MPU6050 tidak terdeteksi!");
while (1) {
delay(10);
}
}
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("");
delay(100);
}
void loop()
{
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
//inisialisasi sumbu X Y Z dan mengambil data accelerometer
double accX = a.acceleration.x;
double accY = a.acceleration.y;
double accZ = a.acceleration.z;
//jika terdeteksi gempa
if (accX > 10 || accY > 10 || accZ > 10 ){
tone(pinBuzzer,500);
Blynk.virtualWrite(V3,"Gempa Terdeteksi!");
//membuat teks ke lcd
lcd.setCursor(00,1);
lcd.print(accX);
lcd.setCursor(6,1);
lcd.print(accY);
lcd.setCursor(12,1);
lcd.print(accZ);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("GEMPA");
lcd.setCursor(5, 0);
lcd.print("TERDETEKSI!");
delay(1500);
}
//jika tidak terdeteksi gempa
if (accX < 10 && accY < 10 && accZ < 10 ){
noTone(pinBuzzer);
Blynk.virtualWrite(V3,"Kondisi Aman!");
//membuat teks ke lcd
lcd.setCursor(00,1);
lcd.print(accX);
lcd.setCursor(6,1);
lcd.print(accY);
lcd.setCursor(12,1);
lcd.print(accZ);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KONDISI");
lcd.setCursor(11, 0);
lcd.print("AMAN!");
delay(1500);
}
//membaca dan menulis ke dalam Blynk
Blynk.virtualWrite(V4,accX);
Blynk.virtualWrite(V5,accY);
Blynk.virtualWrite(V6,accZ);
}