#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <WiFi.h>
#include <PubSubClient.h>
Adafruit_MPU6050 mpu;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqttServer = "3d27fb1b480a431988a1215963de401a.s1.eu.hivemq.cloud:8883";
const int mqttPort = 8883;
const char* mqttUser = "user1";
const char* mqttPassword = "User1234";
WiFiClient espClient;
PubSubClient client(espClient);
void conectarWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao WiFi...");
}
Serial.println("WiFi conectado");
}
void conectarMQTT() {
client.setServer(mqttServer, mqttPort);
while (!client.connected()) {
Serial.println("Conectando ao broker MQTT...");
if (client.connect("ESP32Client", mqttUser, mqttPassword)) {
Serial.println("Conectado ao MQTT");
} else {
delay(2000);
}
}
}
void enviarAlerta() {
if (!client.connected()) {
conectarMQTT();
}
client.publish("alerta/queda", "Queda detectada!" );
}
void setup() {
Serial.begin(115200);
if (!mpu.begin()) {
Serial.println("Falha ao inicializar o sensor MPU6050");
while (1);
}
conectarWiFi();
conectarMQTT();
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
float magnitude = sqrt(a.acceleration.x * a.acceleration.x +
a.acceleration.y * a.acceleration.y +
a.acceleration.z * a.acceleration.z);
if (magnitude > 2.5) {
Serial.println("Queda detectada!");
enviarAlerta();
}
delay(100);
}