import machine
import utime
# Configuración del MPU6050
mpu6050_addr = 0x68
mpu6050_reg_accel_x = 0x3B
mpu6050_reg_accel_y = 0x3D
mpu6050_reg_accel_z = 0x3F
# Inicializar el I2C
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
# Función para leer el valor de un registro del MPU6050
def read_mpu6050_reg(reg):
i2c.writeto(mpu6050_addr, bytearray([reg]))
utime.sleep_ms(1)
data = i2c.readfrom(mpu6050_addr, 2)
return data[0] << 8 | data[1]
# Función para leer los valores de aceleración
def read_acceleration():
ax = read_mpu6050_reg(mpu6050_reg_accel_x)
ay = read_mpu6050_reg(mpu6050_reg_accel_y)
az = read_mpu6050_reg(mpu6050_reg_accel_z)
return ax, ay, az
# Función para detectar una caída
def detect_fall(ax, ay, az):
# Umbral de detección de caída (ajustar según sea necesario)
threshold = 2.5
if abs(ax) > threshold or abs(ay) > threshold or abs(az) > threshold:
return True
return False
# Bucle principal
while True:
ax, ay, az = read_acceleration()
if detect_fall(ax, ay, az):
print("Se ha caído!")
# Agregar aquí la lógica para enviar una alerta (por ejemplo, mediante Wi-Fi o Bluetooth)
utime.sleep_ms(50)