Pico-10DOF-IMU
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品简介
Pico-10DOF-IMU 是一款专为 Raspberry Pi Pico 设计的传感器扩展板,板载了陀螺仪、加速度计、磁力计、气压计等传感器,I2C 接口通信。 搭配 Raspberry Pi Pico 使用,可以采集周围环境的温度、大气压强等传感器数据,也可以轻轻松松就 DIY 一个可以检测运动姿态和方位的机器人。
产品特性
- 板载 Raspberry Pi Pico 接口,适用于 Raspberry Pi Pico 系列主板
- 板载 MPU9250 (3 轴加速度、3 轴陀螺仪和 3 轴磁力计),可检测运动姿态、方位和磁场
- 板载 LPS22HB 大气压强传感器,可感知环境的大气压强
- 提供完善的配套资料手册 (Raspberry Pi Pico C/C++ 和 MicroPython 等示例程序)
产品参数
传感器 | 参数 |
加速度计特性 | 分辨率:16 位 量程 (可选):±2、±4、±8、±16g 工作电流:450uA |
陀螺仪特性 | 分辨率:16 位 量程 (可选):±250、±500、 ±1000、±2000°/sec 工作电流:3.2mA |
磁力计特性 | 分辨率:14 位 量程:±4800µT 工作电流:280uA |
气压计特性 | 测量范围:260 ~ 1260hPa 测量精度 (常温下):±0.025hPa 测量速率:1Hz - 75Hz |
电气 | 参数 |
工作电压 | 5V |
硬件说明
- Pico-10DOF-IMU 有三次改版
- 1. USB丝印更新,增加XYZ轴丝印,增加0R电阻进行电源管理
- 2. FSYNC,ICM.INT,LPS.INT三个管脚分别使用0欧电阻连接两组GPIO,避免和其它模块共用时GPIO冲突
- 3. 使用 MPU9250 替代 ICM20948, 更改丝印名为Pico-10DOF-IMU Rev2.1
硬件连接
1. 注意Pico-10DOF-IMU Rev2.1 上USB Logo标志和Raspberry Pi Pico的USB连接方向对应
2. 下载C程序时, 注意按住BOOT键再接入USB线缆
轴向说明
MPU9250上的加速度计,陀螺仪,磁力计等轴向如下图所示, MPU9250上的磁力计会受硬磁干扰导致磁力计读出来的数据进行椭球拟合的时候,球偏离中心,并且不圆.这样就会给磁力计带来一个初始磁场偏移,使得磁力计数据偏心,所示上电时候需要对磁力计进行初始化, 请参考下面初始化章节.
引脚说明
1. Pico-10DOF-IMU Rev2.1 使用如上图所示的GPIO , 其中SDA(GPIO6) , SCL(GPIO7)引脚固定连接, MPU9250 INT(GPIO4) , FSYNC(GPIO22) , LPS22HB INT(GPIO5) 可通过0R电阻改变连接引脚为MPU9250 INT(GPIO22) , FSYNC(GPIO16) , LPS22HB INT(GPIO3) , 详情点击查看原理图
2. Pico-10DOF-IMU Rev2.1的40Pin座子上默认使用Raspberry Pi Pico的VSYS引脚的电源供电,若要控制切断10DOF的供电可将R13位置上0R电阻焊接到R15上, 则可用Raspberry Pi Pico上GPIO14关断或打开10DOF供电,详情点击查看原理图
3. 若要使用Pico的3.3V供电,将R13的0R电阻焊接到R12处位置上,详情点击查看原理图
4. 若要去除 Pico-10DOF-IMU Rev2.1 上的LED电源指示灯, 剔除板载R11位置的0R电阻,详情点击查看原理图
I2C总线
- Pico-10DOF-IMU板载MPU9250使用I2C总线进行通信,读写时序示意图如下图所示,更多细节请参考datasheet
1. Raspberry Pi Pico作为Master设备先后拉低SDA,SCL的引脚发起I2C总线的START condition 然后写入设备地址(7bits)和写命令(占1bit)共8bits数据, 如果引脚连接正确,10ODF作为Slave设备发出ACK响应
2. Raspberry Pi Pico继续分别写入寄存器地址(RA)和寄存器值(DATA)并等待ACK响应 , 写入完毕后 , Raspberry Pi Pico先后拉高SCL,SDA引脚发送STOP condition
3. 如果Raspberry Pi Pico读取寄存器(RA)的DATA , 当写入RA等待ACK响应后重新发起START condition,再写入设备地址(7bits)和读命令(占1bit)共8bits等待ACK响应后, 10DOF返回DATA,Pico接收DATA完毕后,保持SDA高电平即可
4. 连续写寄存器寄存器值请参考上图中的burst Read/Write Sequence
产品尺寸
环境搭建
- 本教程使用Arduino IDE 和 Thonny进行代码测试,点击下载相关IDE并安装后打开Arduino IDE,Thonny.
1. Arduino IDE安装Pico SDK , 点击菜单栏的Tools->Board->Boards Manager后搜索Raspberry Pi Pico ,找到对应库并点击Install进行安装 ,如下图所示
2.请参考Micropython官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示
程序下载
1. 点击下载示例程序
2. 解压示例程序,Arduino示例程序直接点击.ino打开, Micorpython示例程序请上传到Pico文件系统,如图所示
例程使用
Arduino
1. 按住Pico上BOOT按键再接入USB线缆, 打开.ino示例程序,点击菜单栏选择Tools->Board->Raspberry Pi Pico.如下图所示
2. 点击Edit下方upload下载代码到Pico , 下载完毕后打开设备管理器查看Pico的虚拟COM号,然后在Tools->Ports选择对应COM号
3. 点击打开Arduino IDE右上方的Monitor Serial , 按照串口提示初始化Pico-10DOF-IMU, 详细过程请查阅Pico-10DOF-IMU初始化章节
Micropython
- 打开Pico文件系统中的mpu9250.py,lps22hb.py脚本, 并点击Run运行 , 其中mpu9250.py会输出相关信息对Pico-10DOF-IMU进行初始化配置,如下图所示,详细过程请查阅Pico-10DOF-IMU初始化章节
初始化
- MPU9250上的磁力计会受硬磁干扰导致磁力计读出来的数据进行椭球拟合的时候,球偏离中心,并且不圆.这样就会给磁力计带来一个初始磁场偏移,使得磁力计数据偏心,如下图所示
- 上电后, 根据串口发出的提示信息进行初始化.计算出磁力计偏心offset值,如下图所示
例程简析
本小节简析mpu9250.py示例程序.
- mpu9250 = MPU9250()实例化MPU9250类,实例化过程会有陀螺仪初始化, 地磁校准环节
- mpu9250.readAccel() , mpu9250.readGyro() , mpu9250.readMagnet()分别读取加速度计,陀螺仪,地磁计等原始数据.
- mpu9250.imuAHRSupdate()是mahony算法用于将加速度计,陀螺仪,地磁计的值转变成欧拉角(pitch ,roll , yaw).请点击链接查阅mahony算法详细过程
- 欧拉角如下图所示
mpu9250 = MPU9250() try: while True: mpu9250.readAccel() mpu9250.readGyro() mpu9250.readMagnet() mpu9250.imuAHRSupdate(Gyro[0]/32.8*0.0175, Gyro[1]/32.8*0.0175,Gyro[2]/32.8*0.0175, Accel[0],Accel[1],Accel[2], Mag[0], Mag[0], Mag[2]) pitch = math.asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3 roll = math.atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3 yaw = math.atan2(-2 * q1 * q2 - 2 * q0 * q3, 2 * q2 * q2 + 2 * q3 * q3 - 1) * 57.3 print("\r\n /-------------------------------------------------------------/ \r\n") print('\r\n Roll = %.2f , Pitch = %.2f , Yaw = %.2f\r\n'%(roll,pitch,yaw)) print('\r\nAcceleration: X = %d , Y = %d , Z = %d\r\n'%(Accel[0],Accel[1],Accel[2])) print('\r\nGyroscope: X = %d , Y = %d , Z = %d\r\n'%(Gyro[0],Gyro[1],Gyro[2])) print('\r\nMagnetic: X = %d , Y = %d , Z = %d'%((Mag[0]),Mag[1],Mag[2])) time.sleep(0.1) except KeyboardInterrupt: sys.exit()
资料
文档
程序
开发软件
Pico快速上手
固件下载
| ||
|
视频教程
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
文字教程
基础介绍
MicroPython系列
【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解
C/C++系列
【C/C++】 Windows教程1——环境搭建
【C/C++】 Windows教程2——创建工程
Arduino IDE 系列
安装Arduino IDE
-
首先到Arduino官网下载Arduino IDE的安装包。
-
这里选择仅下载就可以了。
-
下载完成后,点击安装。
注意:安装过程中会提示你安装驱动,我们点击安装即可
Arduino IDE中文界面
在Arduino IDE中安装Arduino-Pico Core
-
打开Arduino IDE,点击左上角的文件,选择首选项
-
在附加开发板管理器网址中添加如下链接,然后点击OK
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
国内用户
- 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
- 若已经成功配置了pico环境,可以直接跳过本章
-
下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
C:\Users\[username]\AppData\Local\Arduino15\packages
第一次上传程序
- 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
-
点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)
-
用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口
-
点击工具>开发板>Raspberry Pi Pico/RP2040>Raspberry Pi Pico
- 设置完成后,点击向右箭头上传将程序
- 如果期间遇到了问题,需要重新安装或者更换Arduino IDE版本时,卸载Arduino IDE需要卸载干净,卸载软件后需要手动删除C:\Users\[name]\AppData\Local\Arduino15这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装
Pico-W系列教程(即将上线)
- 敬请期待
开源例程
MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)
FAQ