Skip to main content

外设模块参考说明

本文列出已在Muse Pi Pro上调试过的硬件模块及使用说明,可供开发者参考。

1. 环境搭建

(1)安装系统依赖

sudo apt update
sudo apt install -y libopenblas-dev \
python3-dev \
python3-venv \
libcjson-dev libasound2-dev

(2)安装python依赖

设置python pip源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.extra-index-url https://git.spacemit.com/api/v4/projects/33/packages/pypi/simple

创建虚拟环境:

python3 -m venv ~/hwenv
source ~/hwenv/bin/activate

在虚拟环境中安装python依赖:

pip install gpiozero==2.0.5
pip install lgpio==0.2.2.0
pip install pyserial
pip install smbus

(3)下载示例代码

cd ~
git clone https://github.com/wangannyi/riscv-competitions.git

2. 设备引脚布局

Muse Pi Pro开发板引脚示意图如下所示:

3. USB转串口设置

3.1 USB转串口设备映射规范

所有硬件模块均通过USB转串口设备与开发板连接,系统自动识别并映射以下芯片型号:

  • CH343系列芯片 → /dev/ttyACM*(CDC-ACM协议设备)
  • CH340系列芯片 → /dev/ttyUSB*(标准USB串行设备)

3.2 权限配置指南

(1)创建UDEV规则文件

执行以下命令配置通用权限规则:

# 配置CH343设备权限(ttyACM*)
sudo tee /etc/udev/rules.d/99-usb-serial.rules <<<'KERNEL=="ttyACM*", MODE="0666"'

# 配置CH340设备权限(ttyUSB*)
sudo tee /etc/udev/rules.d/100-usb-serial.rules <<<'KERNEL=="ttyUSB*", MODE="0666"'

(2)应用配置变更

# 重新加载规则并触发设备更新
sudo udevadm control --reload-rules && sudo udevadm trigger

(3)查看权限是否生效

# 查看CH343系列串口设备
ls -al /dev/ttyACM*
# 输出应该类似:
# crw-rw-rw- 1 root dialout 166, 0 1月17日 17:56 /dev/ttyACM0

# 查看CH340系列串口设备
ls -al /dev/ttyUSB*
# 输出应该类似:
# crw-rw-rw- 1 root dialout 166, 0 1月17日 17:56 /dev/ttyUSB0

4. 硬件模块参考列表

在进行硬件模块调试之前,请先进行环境搭建和USB转串口设置。

4.1 ToF激光雷达测距传感器

ToF(Time of Flight,飞行时间)激光雷达是一种基于光脉冲飞行时间原理的非接触式测距传感器,通过测量激光发射到目标物体并反射回来的时间差,计算目标距离。

4.1.1 官网资料

产品资料参考:https://www.waveshare.net/wiki/TOF_Laser_Range_Sensor_Mini

4.1.2 UART使用示例

(1) 硬件连接

ToF激光雷达通过USB串口设备与开发板连接如图所示:

(2) 确认串口信息

连接好之后,执行下述命令查看设备是否存在以及权限是否正确:

查看CH343系列串口设备:

ls -al /dev/ttyACM*

查看CH340系列串口设备:

ls -al /dev/ttyUSB*

(3) 设备测试

进入虚拟环境运行测试脚本:

source ~/hwenv/bin/activate
cd ~/riscv-competitions/TOF_Laser_Range_Sensor_demo/python/UART/example
python main.py

查看输出结果如图所示:

4.2 红外测温模块

红外测温模块基于红外辐射定律(普朗克黑体辐射定律),通过检测物体表面发射的红外能量,结合环境温度补偿,计算得出目标温度。

4.2.1 规格书

规格书下载:安服优红外测温模块规格书

4.2.2 通信协议

通信协议参考:安服优红外测温模块通信协议

4.2.3 UART使用示例

(1) 硬件连接

上电之后,红外测温模块通过USB串口设备与开发板连接如图所示:

(2) 确认串口信息

连接好之后,执行下述命令查看设备是否存在以及权限是否正确:

查看CH343系列串口设备:

ls -al /dev/ttyACM*

查看CH340系列串口设备:

ls -al /dev/ttyUSB*

(3) 设备测试

进入虚拟环境运行测试脚本:

source ~/hwenv/bin/activate
cd ~/riscv-competitions/infrared_temperature_demo/
python main.py

查看输出结果如图所示:

image-20250409202222736

(4) 切换体温和物温模式

测人体体温:

python switch_to_body.py
python main.py

测物体温度:

python switch_to_object.py
python main.py

4.3 RGB-LED

RGB-LED(红绿蓝LED)是一种能够发出红色、绿色和蓝色光的多色 LED 灯。它由三个独立的 LED 元件组成,每个元件分别控制红、绿、蓝三种颜色的光。通过调节这三种颜色的亮度,组合出不同的颜色,广泛应用于显示、指示灯、照明和装饰等领域。

4.3.1 gpiozero库介绍

树莓派中通常采用RPi.GPIO库来控制GPIO引脚。由于Bianbu Star系统尚未移植RPi.GPIO库,因此提供gpiozero库来控制引脚输出。

gpiozero库是一种高层次的Python库,简化了硬件接口的使用,非常适合用于教育和开发。

更多信息可以参考 Bianbu 官网:从 Python 使用 GPIO

4.3.2 引脚控制用例

(1) 硬件连接

RGB-LED 彩灯与开发板的连接方式如下图所示:

  • GPIO-71引脚连接B引脚(控制蓝灯)
  • GPIO-72引脚连接G引脚(控制绿灯)
  • GPIO-73引脚连接R引脚(控制红灯)

(2) LED控制用例

进入虚拟环境运行测试脚本:

source ~/hwenv/bin/activate
cd ~/riscv-competitions/led
python led.py

启动程序之后,彩灯会循环地闪烁红灯、绿灯、蓝灯。

4.4 数码管

数码管(又称七段显示器)是一种广泛用于显示数字或字母的电子显示设备。它由七个独立的发光二极管(LED)组成,通常排列成数字“8”形状。每个 LED 对应一个显示段,通过点亮不同的组合显示数字 0 - 9 以及一些字母。

4.4.1 产品参考资料

本案例使用4位数码管,产品说明请参考淘宝链接详情页:数码管产品参考资料

4.4.2 UART试用示例

(1)硬件连接

数码管通过UART与开发板连接如图所示:

(2)确认串口信息

连接好之后,执行下述命令查看设备是否存在以及权限是否正确:

查看CH343系列UART设备:

ls -al /dev/ttyACM*

查看CH340系列UART设备:

ls -al /dev/ttyUSB*

(3)设备测试

进入虚拟环境运行测试脚本:

source ~/hwenv/bin/activate
cd ~/riscv-competitions/digital_tube
python digital_serial.py

启动程序之后,数码管会依次显示11、345、66、78数字。

4.5 二维云台舵机

二维云台舵机(2D Pan-Tilt Servo)是一种用于精确控制相机或其他设备在水平方向(俯仰)和垂直方向(左右)上的运动的机械系统。通常应用于无人机、机器人、监控摄像头、卫星通讯设备等领域,通过实时调整设备的视角获取目标对象的图像或数据。

4.5.1 技术参考资料

测试的二维云台采用高性能伺服电机驱动,可通过PWM信号实现精确角度控制。

详细技术参数和API文档可参考:GPIO Zero Servo官方文档

幻尔二维云台参数说明请参考:幻尔二维云台商品详情

4.5.2 PWM使用示例

(1) 硬件连接指南

电源连接:

  • 伺服电机红色电源线 → 开发板5V输出引脚
  • 伺服电机黑色/棕色地线 → 开发板GND引脚

信号连接:

  • 伺服电机橙色/白色信号线 → 控制伺服的GPIO引脚

对照第2章的引脚图,开发板与云台的连接如图所示,信号线(橙色)连接到GPIO-73号引脚:

(2) 设备测试

进入虚拟环境运行测试脚本:

source ~/hwenv/bin/activate
cd ~/riscv-competitions/steering_gimbal
python base_control.py

查看输出结果如图所示:

image-20250410152351299

根据提示输入[-1,1]之间的浮点数即可控制舵机在最小位置和最大位置之间的运动。

5. I2C使用说明

I2C的工具在: ~/riscv-competitions/dev-tools/i2ctools

cd ~/riscv-competitions/dev-tools/i2ctools

5.1 可用的I2C引脚

I2C-3 与 I2C-4 为可用状态,对应如下:

5.2 查看当前有哪些 I2C 总线

sudo ./i2cdetect -l

输出如下:

i2c-3 i2c spacemit-i2c-adapter I2C adapter
i2c-1 i2c spacemit-i2c-adapter I2C adapter
i2c-8 i2c spacemit-i2c-adapter I2C adapter
i2c-4 i2c spacemit-i2c-adapter I2C adapter
i2c-2 i2c spacemit-i2c-adapter I2C adapter
i2c-0 i2c spacemit-i2c-adapter I2C adapter
i2c-9 i2c spacemit-i2c-adapter I2C adapter
i2c-5 i2c spacemit-i2c-adapter I2C adapter

5.3 查看某个总线上连接的设备

硬件连接如图:

sudo ./i2cdetect -yr 4

其中 3 是总线编号(比如 I2C-4),你可以选择3或者4。

输出类似:

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

表示检测到地址 0x68 上有设备

之后你可以使用 python 的 smbus 库完成I2C设备的使用