// Import blynk
#define BLYNK_TEMPLATE_ID "TMPL6F1OXV8IJ"
#define BLYNK_TEMPLATE_NAME "Notifikasi Gempa"
#define BLYNK_AUTH_TOKEN "tAqX-GC9tx_NvkkU5mOD7B2oh3OKSw_1"
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
LiquidCrystal_I2C lcd(0x27,20,4);
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = BLYNK_AUTH_TOKEN;
Adafruit_MPU6050 mpu;
float skala_richter = 0;
// Inisialisasi Pin LED
const int ledHijau = 27;
const int ledKuning = 14;
const int ledMerah = 12;
const int pinBuzzer = 19;
sensors_event_t event;
float get_skalaRichter() {
mpu.getAccelerometerSensor()->getEvent(&event);
float yKuadrat = event.acceleration.y * event.acceleration.y;
float xKuadrat = event.acceleration.x * event.acceleration.x;
skala_richter = sqrt(yKuadrat + xKuadrat);
return skala_richter;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(ledHijau, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledMerah, OUTPUT);
lcd.init();
lcd.backlight();
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
}
void loop() {
float valueSR = get_skalaRichter();
if (event.acceleration.y == 0 && event.acceleration.x == 0) {
lcd.clear();
lcd.setCursor(1, 1);
lcd.println("AMAN, TIDAK TERJADI");
lcd.setCursor(5, 2);
lcd.println("GEMPA BUMI !");
delay(1500);
tone(pinBuzzer, 0);
digitalWrite(ledHijau, HIGH);
digitalWrite(ledKuning, LOW);
digitalWrite(ledMerah, LOW);
}
else {
digitalWrite(ledHijau, LOW);
if (valueSR > 0 && valueSR <=4) {
Blynk.logEvent("gempa_kecil");
lcd.clear();
lcd.setCursor(1, 1);
lcd.println("TERJADI GEMPA !!");
lcd.setCursor(5, 2);
lcd.print(valueSR);
lcd.println(" SR.");
tone(pinBuzzer, 500);
digitalWrite(ledKuning, HIGH);
delay(500);
noTone(pinBuzzer);
digitalWrite(ledKuning, LOW);
delay(500);
}
if (valueSR > 6) {
Blynk.logEvent("gempa_besar");
lcd.clear();
lcd.setCursor(1, 1);
lcd.println("TERJADI GEMPA !!");
lcd.setCursor(5, 2);
lcd.print(valueSR);
lcd.println(" SR.");
tone(pinBuzzer, 800);
digitalWrite(ledMerah, HIGH);
delay(250);
noTone(pinBuzzer);
digitalWrite(ledMerah, LOW);
delay(250);
}
}
}