Análisis exploratorio de datos de sensores MEMS
Exploratory analysis of MEMS sensor data
Leyendo, recopilando y analizando datos del sensor MPU6050
Los sensores MEMS (Sistemas Microelectromecánicos) se utilizan ampliamente en diferentes aplicaciones, desde controladores de juegos y teléfonos inteligentes hasta vehículos aéreos no tripulados. En este artículo, mostraré cómo conectar un sensor de giroscopio y acelerómetro, qué tipo de datos es posible obtener de él y cómo se pueden procesar y visualizar estos datos.
Empecemos.
Hardware
El MPU-6050 es un sensor de 6 ejes que combina un giroscopio de 3 ejes, un acelerómetro de 3 ejes y la interfaz I2C. Según se indica en la hoja de datos, se utiliza ampliamente en tabletas y teléfonos inteligentes. Cuando nuestro teléfono inteligente o reloj inteligente calcula los pasos y las calorías durante el entrenamiento, en realidad se utilizan los datos de los sensores MEMS. Pero sensores como este pueden usarse para más que solo deportes. Decidí colocar el sensor en mi apartamento durante varios días y averiguar si sería capaz de detectar y analizar diferentes vibraciones en el edificio donde vivo.
Si queremos recopilar datos durante varios días, la Raspberry Pi es una buena solución para eso. La Raspberry Pi es una computadora de placa única barata (30–50$); consume poca energía y tiene muchos pines para conectar diferentes tipos de hardware. Una placa de prototipado MPU-6050 se puede pedir en Amazon por 3–5$. El propio sensor utiliza el bus I2C para la transferencia de datos y se puede conectar a una Raspberry Pi utilizando solo 4 cables:

Antes de usar el sensor, el bus I2C debe estar habilitado en el sistema operativo Raspbian (hay suficientes tutoriales sobre cómo conectar el MPU6050 a la Raspberry Pi, así que omitiré los detalles “hardware” aquí). Después de conectar el sensor, creé una aplicación simple en Python que lee los datos del sensor y los escribe “tal cual” en archivos de registro:
- Inteligencia artificial para la mejora y la productividad
- Dispositivo superconductor podría reducir drásticamente el consumo ...
- Más allá del bolígrafo la destreza del IA en la generación de texto...
from datetime import datetimeimport smbusimport mathimport time# Registros MPU6050PWR_MGMT_1 = 0x6BSMPLRT_DIV = 0x19CONFIG = 0x1AGYRO_CONFIG = 0x1BINT_ENABLE = 0x38ACCEL_XOUT_H = 0x3BACCEL_YOUT_H = 0x3DACCEL_ZOUT_H = 0x3FGYRO_XOUT_H = 0x43GYRO_YOUT_H = 0x45GYRO_ZOUT_H = 0x47bus = smbus.SMBus(1)address = 0x68def device_init(): """ Inicializar el MPU-6050 """ bus.write_byte_data(address, SMPLRT_DIV, 0x4)...