树莓派 Pi Servo Hat 完整指南:硬件、接线与 Python 控制
简介
SparkFun Pi Servo Hat 扩展树莓派能力,通过 I²C 总线控制多达 16 路舵机。将舵机供电与通信卸载至 Hat,释放树莓派 GPIO 引脚供他用,并提供便捷的串口终端用于无头配置。
所需材料
请准备以下物品。建议使用空白 microSD 卡而非 NOOBS 卡,因 Pi Zero W 需要更新的系统镜像。
- 直插式排针
- 墙式电源适配器 – 5.1V DC 2.5A (USB Micro-B)
- microSD 卡带适配器 – 16GB (Class 10)
- 树莓派 GPIO 高排针 – 2×20
- 树莓派 Zero W
- SparkFun Pi Servo HAT
最后准备一款舵机用于测试。通用亚微型舵机是示例脚本的理想起点。
- 舵机 – 通用 (亚微型)
所需工具
除基本焊接用品外无需特殊设备。为获得最佳效果,建议使用 30W 烙铁和无铅焊锡。
- 无铅焊锡 – 15克管装
- 烙铁 – 30W (美规, 110V)
硬件概览
Hat 设计简洁。关键组件包括:
- USB Micro-B 接口 —— 为舵机提供 5V 供电,亦可为树莓派供电;同时提供串口控制台,无需显示器即可配置树莓派。
- 电源隔离跳线 —— 默认短接,将舵机电源轨与树莓派 5V 电源轨连接。驱动多个大电流舵机时应断开,防止噪声导致树莓派复位。
- 舵机排针 —— 16 路 0.1 英寸间距针脚,预排布为标准舵机连接器布局。
硬件组装
建议先将公排针焊接至 Pi Zero W,再安装 Pi Servo Hat。快速技巧:
- 先焊接单个针脚固定排针。
- 趁焊锡未冷,调整板卡使针脚平整,再固定排针。
- 完成其余针脚焊接。
对母排针与 Pi Servo Hat 重复上述过程,确保短针从板底插入。完成焊点前保持排针水平。
组装完成后,将 Hat 堆叠在 Pi Zero W 上。参考舵机数据手册引脚定义,将舵机连接至通道 0。使用 5V 墙式适配器通过标记 PWR IN 的 USB Micro-B 接口为树莓派和 Hat 供电。
软件 – Python 控制
Hat 的 PWM 控制器为 I²C 设备,常通过 SMBus 访问。完整示例代码见产品 GitHub 仓库。
初始化 SMBus
import smbus bus = smbus.SMBus(1) # 树莓派 I2C 总线 1 addr = 0x40 # PWM 芯片默认 I2C 地址
配置 PWM 芯片
bus.write_byte_data(addr, 0x00, 0x20) # 启用 PWM 模块 bus.write_byte_data(addr, 0xFE, 0x1E) # 自动递增寄存器地址
设置通道 0 脉宽
bus.write_word_data(addr, 0x06, 0) # 起始时间(200Hz 下始终为 0) bus.write_word_data(addr, 0x08, 1250) # 结束时间 → 1.5ms 脉宽
PWM 芯片运行于 200Hz(周期 5ms)。停止寄存器(0–4095)映射为 1.2µs 步进,1250 ≈ 1.5ms,为大多数舵机的中立位置。
控制其他通道时,寄存器地址每通道递增 4:
| 通道 | 起始地址 | 结束地址 |
|---|---|---|
| 0 | 0x06 | 0x08 |
| 1 | 0x0A | 0x0C |
| 2 | 0x0E | 0x10 |
| 3 | 0x12 | 0x14 |
| 4 | 0x16 | 0x18 |
| 5 | 0x1A | 0x1C |
| 6 | 0x1E | 0x20 |
| 7 | 0x22 | 0x24 |
| 8 | 0x26 | 0x28 |
| 9 | 0x2A | 0x2C |
| 10 | 0x2E | 0x30 |
| 11 | 0x32 | 0x34 |
| 12 | 0x36 | 0x38 |
| 13 | 0x3A | 0x3C |
| 14 | 0x3E | 0x40 |
| 15 | 0x42 | 0x44 |
每度转动约需 4.6 个寄存器计数。例如,偏离中立位 45° 需 207 计数(45 × 4.6),在 1250 基础上增减即可设定目标脉宽。
更多详细示例请访问 GitHub 仓库 查看内含 Python 脚本。
Pi Servo Hat 接线指南
制造工艺