#include <WiFi.h>
#include <WiFiClient.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include "ThingSpeak.h"
#define pinBuzzer 18
int LEDmerah = 23;
int LEDhijau = 19;
WiFiClient client;
String thingSpeakAddress = "api.thingspeak.com";
String writeAPIKey;
String tsfield1Name;
String request_string;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
// definisi led alert
Adafruit_MPU6050 mpu;
void setup()
{
pinMode(LEDmerah, OUTPUT); //Set LEDmerah sebagai output
pinMode(LEDhijau, OUTPUT); //Set LEDhijau sebagai output
Serial.begin(115200);
// Koneksi Wifi
WiFi.disconnect();
WiFi.begin("Wokwi-GUEST", "");
while ((!(WiFi.status() == WL_CONNECTED))) {
delay(300);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
//koneksi mpu6050
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("");
delay(100);
lcd.init();
lcd.backlight();
}
//inisilisai nilai sensor
double x,y,z ;
double xg,yg,zg;
int t;
void loop()
{
mpu6050();
kirim_thingspeak(x,y,z,xg,yg,zg,t);
}
void mpu6050(){
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
//Acceleration
x = a.acceleration.x;
y = a.acceleration.y;
z = a.acceleration.z;
// Gyroscope
xg = g.gyro.x;
yg = g.gyro.y;
zg = g.gyro.y;
t = temp.temperature;
//Tidak Gempa
if ((x==0)and (y==0)){
lcd.clear();
lcd.setCursor(1, 1);
lcd.println("Aman Tidak Terjadi");
lcd.setCursor(5, 2);
lcd.println("GEMPA BUMI");
Serial.print("Aman : ");
Serial.print(x);
Serial.print(",");
Serial.print(y);
Serial.print(",");
Serial.print(z);
Serial.print(", ");
delay(1000);
tone(pinBuzzer, 0);
digitalWrite(LEDmerah, LOW);
digitalWrite(LEDhijau, HIGH);
}
//Terjadi Gempa
else{
lcd.clear();
lcd.setCursor(1, 1);
lcd.println("Terjadi Gempa Bumi");
lcd.setCursor(3, 2);
lcd.println("GEMPA GEMPA !!!");
//Acceleration
Serial.println("Acceleration : ");
Serial.print(" X: ");
Serial.print(x);
Serial.print(", Y: ");
Serial.print(y);
Serial.print(", Z: ");
Serial.print(z);
Serial.println(" m/s^2");
tone(pinBuzzer, 800);
digitalWrite(LEDmerah, HIGH);
digitalWrite(LEDhijau, LOW);
delay(100);
//Rotation
Serial.println("Rotation : ");
Serial.print(" X: ");
Serial.print(xg);
Serial.print(", Y: ");
Serial.print(yg);
Serial.print(", Z: ");
Serial.print(zg);
tone(pinBuzzer, 700);
digitalWrite(LEDmerah, HIGH);
digitalWrite(LEDhijau, LOW);
delay(100);
//Temperature
Serial.println("Temperature : ");
Serial.print("Temp :");
Serial.print(t);
Serial.println(" degC");
delay(100);
}
}
void kirim_thingspeak(double x, double y,double z,double xg, double yg,double zg,double t) {
if (client.connect("api.thingspeak.com", 80)) {
request_string = "/update?";
request_string += "key=";
request_string += "DJJBY2GVDN935JXJ";
request_string += "&";
request_string += "field1";
request_string += "=";
request_string += x;
request_string += "&";
request_string += "field2";
request_string += "=";
request_string += y;
request_string += "&";
request_string += "field3";
request_string += "=";
request_string += z;
request_string += "&";
request_string += "field4";
request_string += "=";
request_string += xg;
request_string += "&";
request_string += "field5";
request_string += "=";
request_string += yg;
request_string += "&";
request_string += "field6";
request_string += "=";
request_string += zg;
request_string += "&";
request_string += "field7";
request_string += "=";
request_string += t;
}
}