“MEMS传感器数据的探索性分析”

Exploratory analysis of MEMS sensor data

从MPU6050传感器读取、收集和分析数据

MEMS(微电子机械系统)传感器广泛应用于不同的应用中,从游戏控制器和智能手机到无人机。在本文中,我将展示如何连接陀螺仪和加速度计传感器,以及可能从中获得的数据类型,以及如何处理和可视化这些数据。

让我们开始吧。

硬件

MPU-6050是一个6轴传感器,结合了3轴陀螺仪、3轴加速度计和I2C接口。如数据手册中所述,它广泛用于平板电脑和智能手机。当我们的智能手机或智能手表在锻炼期间计算步数和卡路里时,实际上使用的是MEMS传感器的数据。但是像这样的传感器不仅可以用于运动。我决定将传感器放在我的公寓里几天,看看我是否能够探测和分析我所居住的建筑物中的不同振动。

如果我们想在几天内收集数据,树莓派是一个不错的解决方案。树莓派是一款便宜(30-50美元)的单板计算机,功耗低,并且有很多引脚可以连接不同类型的硬件。可以在亚马逊上订购一个MPU-6050原型板,价格为3-5美元。传感器本身使用I2C总线进行数据传输,只需用4根线就可以连接到树莓派上:

连接图,作者提供的图片

在使用传感器之前,需要在Raspbian操作系统上启用I2C总线(有足够的教程介绍如何将MPU6050连接到树莓派,所以我将跳过这里的“硬件”细节)。连接传感器后,我创建了一个简单的Python应用程序,读取传感器数据并将其“按原样”写入日志文件中:

from datetime import datetimeimport smbusimport mathimport time# MPU6050 RegistersPWR_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():    """ 初始化MPU-6050 """    bus.write_byte_data(address, SMPLRT_DIV, 0x4)…