Pico-10DOF-IMU

来自Waveshare Wiki
跳转至: 导航搜索
Pico-10DOF-IMU
{{{name2}}}
{{{name3}}}
功能简介
特性 Sensors
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C

说明

产品简介

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

硬件连接

Pico-10DOF-IMU010.jpg
1. 注意Pico-10DOF-IMU Rev2.1 上USB Logo标志和Raspberry Pi Pico的USB连接方向对应
2. 下载C程序时, 注意按住BOOT键再接入USB线缆

轴向说明

MPU9250上的加速度计,陀螺仪,磁力计等轴向如下图所示, MPU9250上的磁力计会受硬磁干扰导致磁力计读出来的数据进行椭球拟合的时候,球偏离中心,并且不圆.这样就会给磁力计带来一个初始磁场偏移,使得磁力计数据偏心,所示上电时候需要对磁力计进行初始化, 请参考下面初始化章节. Pico-10DOF-IMU019.jpg

引脚说明

Pico-10DOF-IMU002.jpg
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

Pico-10DOF-IMU011.jpg
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

产品尺寸

Pico-10DOF-IMU003.jpg

环境搭建

  • 本教程使用Arduino IDEThonny进行代码测试,点击下载相关IDE并安装后打开Arduino IDE,Thonny.

1. Arduino IDE安装Pico SDK , 点击菜单栏的Tools->Board->Boards Manager后搜索Raspberry Pi Pico ,找到对应库并点击Install进行安装 ,如下图所示
Pico-10DOF-IMU012.jpg
2.请参考Micropython官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示
Pico-10DOF-IMU013.jpg

程序下载

1. 点击下载示例程序
2. 解压示例程序,Arduino示例程序直接点击.ino打开, Micorpython示例程序请上传到Pico文件系统,如图所示
Pico-10DOF-IMU014.jpg

例程使用

Arduino

1. 按住Pico上BOOT按键再接入USB线缆, 打开.ino示例程序,点击菜单栏选择Tools->Board->Raspberry Pi Pico.如下图所示
Pico-10DOF-IMU015.jpg
2. 点击Edit下方upload下载代码到Pico , 下载完毕后打开设备管理器查看Pico的虚拟COM号,然后在Tools->Ports选择对应COM号
3. 点击打开Arduino IDE右上方的Monitor Serial , 按照串口提示初始化Pico-10DOF-IMU, 详细过程请查阅Pico-10DOF-IMU初始化章节
Pico-10DOF-IMU016.jpg

Micropython

  • 打开Pico文件系统中的mpu9250.py,lps22hb.py脚本, 并点击Run运行 , 其中mpu9250.py会输出相关信息对Pico-10DOF-IMU进行初始化配置,如下图所示,详细过程请查阅Pico-10DOF-IMU初始化章节

Pico-10DOF-IMU017.jpg

初始化

  • MPU9250上的磁力计会受硬磁干扰导致磁力计读出来的数据进行椭球拟合的时候,球偏离中心,并且不圆.这样就会给磁力计带来一个初始磁场偏移,使得磁力计数据偏心,如下图所示

Pico-10DOF-IMU018.png

  • 上电后, 根据串口发出的提示信息进行初始化.计算出磁力计偏心offset值,如下图所示

Pico-10DOF-IMU020.jpg

例程简析

本小节简析mpu9250.py示例程序.

  • mpu9250 = MPU9250()实例化MPU9250类,实例化过程会有陀螺仪初始化, 地磁校准环节
  • mpu9250.readAccel() , mpu9250.readGyro() , mpu9250.readMagnet()分别读取加速度计,陀螺仪,地磁计等原始数据.
  • mpu9250.imuAHRSupdate()是mahony算法用于将加速度计,陀螺仪,地磁计的值转变成欧拉角(pitch ,roll , yaw).请点击链接查阅mahony算法详细过程
  • 欧拉角如下图所示

Pico-10DOF-IMU021.jpg

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固件下载
Pico MicroPython.gif
C_Blink固件下载
Pico Blink.gif
教程名3
列表3
教程名4
列表4
教程名5
列表5
教程名6
列表6
教程名7
列表7
教程名8
列表8

视频教程

PICO系列教程1——基础介绍

PICO系列教程2——外设GPIO

PICO系列教程3——PWM(脉冲宽度调制)

PICO系列教程4——ADC(模拟数字转换器)

PICO系列教程5——UART (异步收发传输器)

PICO系列教程6——I2C(集成电路总线)

PICO系列教程7——SPI(串行外设接口)

PICO系列教程8——PIO(可编程输入输出端口)

文字教程

基础介绍

Raspberry Pi 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

  1. 首先到Arduino官网下载Arduino IDE的安装包。
    Arduino下载2.0版本.jpg
  2. 这里选择仅下载就可以了。
    仅下载不捐赠.png
  3. 下载完成后,点击安装。
    IDE安装水印-1.gif
    注意:安装过程中会提示你安装驱动,我们点击安装即可
    Arduino驱动安装水印.jpg

Arduino IDE中文界面

  1. 第一次安装完成后,打开Arduino IDE全是英文界面,我们可以在File>Preferences切换成简体中文。
    首选项-简体中文.jpg
  2. 在Language里面选择简体中文,点击OK。
    首选项-简体中文ok.jpg

在Arduino IDE中安装Arduino-Pico Core

  1. 打开Arduino IDE,点击左上角的文件,选择首选项
    首选项水印-1.png
  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

    Pico首选项.png
    注意:如果您已经有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
  3. 点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
    开发板管理器.png
    开发板管理器-1.png
国内用户
  • 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
  • 若已经成功配置了pico环境,可以直接跳过本章
  1. 下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
    C:\Users\[username]\AppData\Local\Arduino15\packages

    Rp2040包.png
    注意:将里面用户名:[username]替换成自己的用户名

第一次上传程序

  1. 按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
    Pico连接数据线.gif


  1. 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
  2. 点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)
    Pico连接前端口.png
  3. 用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口
    Pico连接后uf2.png
  4. 点击工具>开发板>Raspberry Pi Pico/RP2040>Raspberry Pi Pico
    工具pico开发板.png
    Arduono-Raspberrypi pico.png
  5. 设置完成后,点击向右箭头上传将程序
    Pico上传程序.png
  • 如果期间遇到了问题,需要重新安装或者更换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


技术支持


联系人:钟工
EMAIL:3004517899@qq.com
电话:0755-83040712
QQ:3004517899
微信:扫下方二维码添加
Zsh.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证