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(MPU9250) / ±4900µT(ICM20948) 工作电流: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
- 4. 重新使用 ICM20948, 更改丝印名为Pico-10DOF-IMU Rev3.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/Pico2文件系统,如图所示
例程使用
Arduino
1. 按住Pico/Pico2上BOOT按键再接入USB线缆, 打开.ino示例程序,点击菜单栏选择Tools->Board->Raspberry Pi Pico.如下图所示
2. 点击Edit下方upload下载代码到Pico/Pico2, 下载完毕后打开设备管理器查看Pico/Pico2的虚拟COM号,然后在Tools->Ports选择对应COM号
3. 点击打开Arduino IDE右上方的Monitor Serial , 按照串口提示初始化Pico-10DOF-IMU, 详细过程请查阅Pico-10DOF-IMU初始化章节
Micropython
安装Thonny Python IDE (Windows版本 V3.3.3)
- 打开thonny,点击File,再点击open打开需要运行的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系列
安装Thonny IDE
为了方便在电脑上使用MicroPython开发Pico/Pico2板,建议下载Thonny IDE
- 下载Thonny IDE并按照步骤安装,安装包均为Windows版本,其他版本请参考Thonny官网
- 安装完成之后,第一次要配置语言和主板环境,由于我们是为了使用Pico/Pico2,所以注意主板环境选择Raspberry Pi 选项
- 配置Micrpython环境及选择Pico/Pico2端口
- 先将Pico/Pico2接入电脑,左键点击Thonny右下角的配置环境选项--》选择configture interpreter
- 在弹出的窗口栏中选择MicroPython(Raspberry Pi Pico),同时选择对应的端口
- 点击ok后返回到Thonny主界面,下载对应的固件库并烧录到设备中,然后点击停止按钮,在Shell窗口中即可显示当前使用到的环境
- Pico/Pico2在windows下载固件库方法: 按住BOOT键后连接电脑后,松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可
- RP2040/RP2350在windows下载固件库方法: 连接电脑后,同时按下BOOT键跟RESET键,先松开RESET键再松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可(用Pico/Pico2的方式也可以)
讲解视频
【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++,建议使用 Pico VS Code 进行开发,这是一款 Microsoft Visual Studio Code 扩展,旨在让您在为 Raspberry Pi Pico 系列开发板创建、开发和调试项目时更加轻松。无论您是初学者还是经验丰富的专业人士,此工具都可以帮助您自信而轻松地进行 Pico 开发。下面我们介绍如何安装该扩展并使用。
- 官网教程:https://www.raspberrypi.com/news/pico-vscode-extension/
- 本教程适用于树莓派Pico、Pico2与本公司开发的RP2040、RP2350系列开发板
- 开发环境默认以 Windows 为例,其他环境请参考官网教程进行安装
安装VSCode
-
首先,点击下载 pico-vscode 程序包,解压并打开程序包,双击安装 VSCode
注意:如果已安装 vscode 注意检查版本是否为 v1.87.0 或更高版本
安装扩展
-
点击扩展,选择从 VSIX 安装
-
选择 vsix 后缀的软件包,点击安装
-
随后 vscode 会自动安装 raspberry-pi-pico 及其依赖扩展,可以点击刷新查看安装进度
-
右下角显示完成安装,关闭 vscode
配置扩展
-
打开目录 C:\Users\用户名,将整个 .pico-sdk 拷贝至该目录
-
拷贝完成
-
打开 vscode,对 Raspberry Pi Pico 扩展中各个路径进行配置
配置如下:Cmake Path: ${HOME}/.pico-sdk/cmake/v3.28.6/bin/cmake.exe Git Path: ${HOME}/.pico-sdk/git/cmd/git.exe Ninja Path: ${HOME}/.pico-sdk/ninja/v1.12.1/ninja.exe Python3 Path: ${HOME}/.pico-sdk/python/3.12.1/python.exe
新建工程
-
配置完成,测试新建工程,输入工程名、选择路径后点击 Creat 创建工程
测试官方示例,可以点击工程名旁的 Example 进行选择
-
创建工程成功
-
选择SDK版本
-
选择 Yes 进行高级配置
-
选择交叉编译链,13.2.Rel1 适用 ARM 核,RISCV.13.3 适用 RISCV 核,这里根据您的需求任意选择其中一个即可
-
CMake 版本选择 Default(前面配置的路径)
-
Ninja 版本选择 Default
-
选择开发板
-
点击 Complie 进行编译
-
成功编译出 uf2 格式文件即可
导入工程
- 导入工程的 Cmake 文件不能有中文(包括注释),否则可能导致导入失败
-
导入自己的工程需要在 Cmake 文件中加一行代码,才能正常切换 pico 和 pico2,否则即使选择 pico2,编译得到的固件仍是适用于 pico 的
set(PICO_BOARD pico CACHE STRING "Board type")
更新扩展
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/4.0.2/package_rp2040_index.json
注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/4.0.2/package_rp2040_index.json
-
点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
国内用户
- 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
- 若已经成功配置了pico环境,可以直接跳过本章
-
下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
C:\Users\[username]\AppData\Local\Arduino15\packages
第一次上传程序
-
按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
- 下载程序,打开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这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装
开源例程
MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)
FAQ