#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <Adafruit_MPU6050.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define BOT_TOKEN "6615261736:AAEQGpcZkXV8Z_dJWmbRxb-cOwJaS4ZfIew"
#define CHAT_ID "6242476867"
const unsigned long BOT_MTBS = 1000;
unsigned long bot_lasttime;
int magnitude = 0;
int kirim;
float z = 0;
float richter = 0;
Adafruit_MPU6050 mpu;
WiFiClientSecure secured_client;
UniversalTelegramBot bot (BOT_TOKEN, secured_client);
void setup(void) {
Serial.begin(115200);
while (!Serial)
delay(500);
Serial.print("CONNECTING TO: ");
Serial.print(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WIFI CONNECTED");
pinMode(12, OUTPUT);//led hijau
pinMode(14, OUTPUT);//led kuning
pinMode(27, OUTPUT);//led merah
while (!mpu.begin()){
Serial.println("MPU6050 ready!");
delay(1000);
}
lcd.init();
lcd.backlight();
}
sensors_event_t event;
void apel_teknik(){
mpu.getAccelerometerSensor()->getEvent(&event);
float yk = event.acceleration.y * event.acceleration.y;
float xk = event.acceleration.x * event.acceleration.x;
z = (yk + xk) * 0.075;
}
void apel_gempa(){
if(event.acceleration.y >= 0&& event.acceleration.x >=0){
if(z <= 0){
tone(26, 0);
magnitude = 0;
richter = 0;
}else if(z > 0 && z <= 0.017){
magnitude = 1;
kirim = 0;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(12, HIGH);
delay(50);
noTone(26);
digitalWrite(12, LOW);
delay(50);
}else if(z > 0.017 && z <= 0.14){
magnitude = 2;
kirim = 0;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(12, HIGH);//led hijau hidup
delay(50);
noTone(26);
digitalWrite(12, LOW);
delay(50);
}else if(z > 0.14 && z <= 0.39){
magnitude = 3;
kirim = 0;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(12, HIGH);//led hijau hidup
delay(50);
noTone(26);
digitalWrite(12, LOW);
delay(50);
}else if(z > 0.39 && z <= 0.92){
magnitude = 4;
kirim = 0;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(14, HIGH);//led kuning hidup
delay(600);
noTone(26);
digitalWrite(14, LOW);
delay(250);
}else if(z > 0.92 && z <= 1.8){
magnitude = 5;
kirim = 1;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(14, HIGH);//led kuning hidup
delay(2000);
noTone(26);
digitalWrite(14, LOW);
delay(100);
}else if(z > 1.8 && z <= 3.4){
magnitude = 6;
kirim = 1;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(27, HIGH);//led merah hidup
delay(2000);
noTone(26);
digitalWrite(27, LOW);
delay(100);
}else if(z > 3.4 && z <= 6.5){
kirim = 1;
magnitude = 7;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(27, HIGH);//led merah hidup
delay(5000);
noTone(26);
digitalWrite(27, LOW);
delay(100);
}else if(z > 6.5 && z <= 12.4){
kirim = 1;
magnitude = 8;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(27, HIGH);//led merah hidup
delay(5000);
noTone(26);
digitalWrite(27, LOW);
delay(100);
}else if(z > 12.4){
kirim = 1;
magnitude = 9;
richter = ((log (z)) + 1.6 * (log (30)) - 0.15);
tone(26, 500);
digitalWrite(27, HIGH);//led merah hidup
delay(5000);
noTone(26);
digitalWrite(27, LOW);
delay(100);
}
}else{
tone(26, 0);
}
}
void loop(){
apel_teknik();
apel_gempa();
lcd.setCursor(1,0);
lcd.print("SR= ");
lcd.print(richter);
lcd.setCursor(0,1);
lcd.print("MMI= ");
lcd.print(magnitude);
delay(2000);
if(kirim == 1){
bot.sendMessage(CHAT_ID, "Skala Richter British= " + String(richter) + "\n" + "Skala Richter MMI= " + int(magnitude));
kirim = 0;
}
}