资讯详情

树莓派34/100 - Pico读取MPU6050加速度和陀螺仪传感器数据

某多平台花12元买了一个MPU-6050模块(三轴陀螺仪) 三轴加速度),网上关于MPU-6050的文章很多,但与Pico连接试验的文章不多,我先参考一下peppe8o.com上一篇文章。

芯片的外观(图片来自网络): 取自互联网

我买的质量似乎不好,字迹不清楚,中间核心芯片的字迹更模糊,字符的方向Y被旁边的小洞吃掉,但读取的数据仍然正常。

peppe8o文章说只需要连接四条线: 1)VCC,连接3.3V引脚 2)GND,接地 3)SDA和SCL,可以看出是I2C接口,连接Pico的一组I2C我可以用接口GP16和GP17 实际连线:

其他人已经写好了类库,从micropython-IMU下载imu.py和vector3d.py自己的两份文件Pico上。

开始写主程序:

import machine import utime import imu   i2c = machine.I2C(0, sda=machine.Pin(16), scl=machine.Pin(17), freq=400000) print("I2C addr: ", i2c.scan()[0]) sensor = imu.MPU6050(i2c)  while True:     #print(sensor.accel.xyz, sensor.gyro.xyz, sensor.temperature)     print("加速度:{:7.2f}{:7.2f}{:7.2f}  陀螺仪:{:9.2f}{:9.2f}{:9.2f}  温度:{:5.1f}" \           .format(sensor.accel.x, sensor.accel.y, sensor.accel.z,  \                   sensor.gyro.x, sensor.gyro.y, sensor.gyro.z, \                   sensor.temperature))     utime.sleep(1) 

不幸的是,程序报错一开始就在调用MPU6050的chip_id()函数抛出异常,查了很久文档也找不到原因,曾怀疑我买的芯片是假的。

后来看到一篇文章,说最好把它拿走AD0引脚接地,AD0代表i2c的地址,AD0为0时,i2c地址为104(16)x68),AD0为1时,i2c地址为105(16)x69)。如果AD0不接地,其电位状态可能不稳定。

AD0接地后,程序运行正常!连续输出传感器数据。前三个是加速度计,然后三个是陀螺仪数据,最后一个是温度数据。我拿起面包板摇了一会儿。我可以看到数据发生了变化。不幸的是,我不知道如何使用这些数据来分析物体的运动状态。 在文章和程序中经常出现imu,查了一下:

惯性测量单元(英语:Inertial measurement unit,简称 IMU)是测量物体三轴姿态角(或角速率)和加速度的装置。 一般,一个IMU三轴陀螺仪和三个方向的加速度计将安装在三维空间中中物体的角度速度和加速度,并解决物体的姿态。为了提高可靠性,每个轴都可以配备更多的传感器。一般来说IMU安装在被测物体的重心上。 IMU大部分用于需要运动控制的设备,如汽车和机器人。也用于需要姿势精确位移计算的场合,如潜艇、飞机、导弹和航天器的惯性导航设备。

参考资料

https://peppe8o.com/using-gyroscope-and-accelerometer-with-mpu6050-raspberry-pi-pico-and-micropython/

https://www.bilibili.com/read/cv7648341

https://moore.live/news/98685/detail/

https://zhuanlan.zhihu.com/p/98113366

https://mekesim.com/esp32/MPU6050加速度计 陀螺仪传感器/陀螺仪传感器/

https://stackoverflow.com/questions/1586658/combine-gyroscope-and-accelerometer-data

树莓派Pico开发一系列文章

标签: py2系列位移传感器py2陀螺仪传感器mpu陀螺仪力传感器3d陀螺仪传感器六轴姿态加速度传感器1207系列加速度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台