2. 开发环境搭建:Python虚拟环境创建、RPi.GPIO与wiringPi库安装、pyserial库安装、逻辑分析仪驱动配置

好,咱们正式开始动手。这一章说白了就是“把家伙事儿备齐”。

我见过太多学员,代码写得挺溜,结果一跑起来报错“ModuleNotFoundError”,或者逻辑分析仪插上电脑没反应——全是环境没搭好。咱们别走那个弯路,一步到位。

2.1 Python虚拟环境:为什么必须搞?

你想想看,一个项目用 RPi.GPIO 0.7.0,另一个项目可能要用 0.6.3。要是全装到系统 Python 里,迟早打架。虚拟环境就是给每个项目一个“独立的小房间”。

核心原则:每个硬件项目都新建一个虚拟环境,别偷懒。

我个人习惯用 venv,Python 3.3+ 自带,不用额外装。操作很简单:

# 创建虚拟环境(在项目目录下执行)
python3 -m venv gpio_env

# 激活环境(Linux/Mac)
source gpio_env/bin/activate

# 激活环境(Windows)
gpio_env\Scripts\activate

# 退出环境
deactivate

激活后,终端前面会出现 (gpio_env) 字样,说明你已经在“小房间”里了。之后所有 pip install 都只装在这个环境里,不影响系统。

小技巧:我习惯把虚拟环境建在项目根目录下,取名 venv 或 gpio_env,这样一眼就能看出来。别取什么 env1、test 这种名字,三个月后你自己都忘了是干嘛的。

2.2 RPi.GPIO 与 wiringPi 库安装

这两个库是树莓派 GPIO 控制的“两把刀”。RPi.GPIO 是 Python 原生库,简单易用;wiringPi 是 C 语言写的,性能更好,但配置稍麻烦。

库名 语言 特点 适用场景
RPi.GPIO Python 安装简单,API 直观 快速原型、教学、简单控制
wiringPi C/Python绑定 性能高,支持中断、PWM 高频控制、实时性要求高的项目

2.2.1 安装 RPi.GPIO

确保虚拟环境已激活,然后:

pip install RPi.GPIO

就这么简单。不过要注意——RPi.GPIO 只能在树莓派上跑。你在普通电脑上装会报错,因为底层依赖树莓派的硬件寄存器。我刚开始学的时候就在笔记本上试,折腾了半天才发现……嗯,白费劲。

避坑指南:如果你用的是树莓派 5,RPi.GPIO 目前(2024年)还不完全支持。建议用 lgpio 或 gpiozero 替代。我会在后续章节详细讲。

2.2.2 安装 wiringPi

wiringPi 的安装稍微曲折一点。官方版本已经停止维护,但社区有 fork 版本。我推荐用这个:

# 克隆仓库
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi

# 编译安装
./build

# 验证安装
gpio -v

如果看到版本号输出,说明装好了。wiringPi 的 Python 绑定需要单独装:

pip install wiringpi

我曾经在一个项目里用 wiringPi 做步进电机控制,PWM 频率跑到 20kHz 都没问题。RPi.GPIO 在这个场景下就有点吃力了。

2.3 pyserial 库安装

串口通信是硬件自动化的“基本功”。pyserial 是 Python 里最成熟的串口库,跨平台,API 统一。

pip install pyserial

装完之后,写个简单脚本测试一下:

import serial

# 打开串口(端口号根据实际情况修改)
ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)

# 发送数据
ser.write(b'Hello from Python!\n')

# 读取数据
response = ser.readline()
print(response)

# 关闭串口
ser.close()

经验之谈:树莓派上串口设备名通常是 /dev/ttyAMA0 或 /dev/ttyS0。如果你用的是 USB 转串口模块,一般是 /dev/ttyUSB0。不确定的话,插拔设备时执行 ls /dev/tty* 对比一下。

2.4 逻辑分析仪驱动配置

逻辑分析仪是调试串口、I2C、SPI 等协议的“照妖镜”。信号对不对,一抓便知。我用的是 Saleae Logic 系列,驱动配置比较典型。

2.4.1 安装驱动

  1. 去 Saleae 官网下载对应操作系统的软件(Windows/Mac/Linux 都支持)。
  2. Linux 下需要添加 udev 规则,否则普通用户没权限访问设备。
# 创建 udev 规则文件
sudo nano /etc/udev/rules.d/99-saleae.rules

# 写入以下内容
SUBSYSTEM=="usb", ATTR{idVendor}=="21a9", ATTR{idProduct}=="1004", MODE="0666"

# 重新加载 udev 规则
sudo udevadm control --reload-rules
sudo udevadm trigger

插上逻辑分析仪,运行 Logic 软件,应该就能识别到了。

注意:不同品牌的逻辑分析仪 VID/PID 不同。我遇到过学员买了个山寨版,VID 是 1a86 开头的,得自己查一下。用 lsusb 命令就能看到。

2.4.2 验证连接

把逻辑分析仪的通道 0 夹到树莓派的 TX 引脚上,地线夹到 GND。然后在树莓派上发一串数据:

import serial
ser = serial.Serial('/dev/ttyAMA0', 115200)
ser.write(b'TEST123\n')
ser.close()

在 Logic 软件里设置采样率 1MHz,触发方式选“上升沿”,你应该能看到一串方波信号。如果看到的是平的一条线,检查接线和波特率设置。

关键点:逻辑分析仪的“地”必须和树莓派的“地”共地,否则信号全是乱的。我刚开始用的时候忘了接地,抓出来的波形像鬼画符,排查了半天才发现是这个问题。

2.5 本章知识体系

下面这张图把本章的核心内容串起来了,方便你对照检查:

开发环境搭建知识体系 开发环境搭建 Python虚拟环境 RPi.GPIO / wiringPi pyserial 串口库 逻辑分析仪驱动 venv 创建 pip install udev 规则 波形验证 检查清单 ✅ 虚拟环境已激活,终端显示 (gpio_env) ✅ RPi.GPIO 或 wiringPi 导入无报错 ✅ pyserial 能打开串口并收发数据 ✅ 逻辑分析仪能抓到有效波形

到这步,你的开发环境就齐活了。后面咱们就可以真刀真枪地写代码、接硬件、抓波形了。