🍓 第十五章 硬件接口实验范例(一):树莓派 WiFi 遥控视频车
📄 一句话概括

智能车不是一堆零件,而是四层结构:感知层看、决策层想、执行层动、供电层扛——本章把前十四章学过的每一块知识,分别插进这四层里。

📝 本节和前面几节的关系

到这里,本课的知识已经攒够了:7 章学过 GPIO 的数字输出与 PWM,10 章学过相机与视频串流,13-2 学过用 Flask 把 GPIO 搬上浏览器,14 章学过 Node-RED 分发数据。本章做的是把这几样装到一台会跑的车架上——前面全是零件,这一章开始组装。它是全课第一个【多系统合流】项目,也是硬件接口实验范例的第一章。

一、四层结构:一张图看懂整台车

层 职责 本章用什么
感知层 看路、看环境 相机模块(第十章)经 MJPEG 推给浏览器
决策层 接收指令、算输出 树莓派 + Flask(13-2 的延伸)
执行层 把电信号变成机械动作 电机驱动板 + 直流电机 + 车轮
供电层 给上面三层送电 电池组 + 独立供电 + 共地

关键认识:树莓派在车上只干【决策】这一件事。它输出的 GPIO 信号只有 3.3V、毫安级电流,连一个小电机都转不起来——真正把电送进电机的是执行层的电机驱动板。理解这个分工,本节后面的所有接线才有了逻辑。

二、三块板卡各管什么

  1. 树莓派:大脑。跑 Flask 服务、接 WiFi、发控制信号;
  2. 电机驱动板:肌肉。接收 GPIO 信号,把电池的大电流按指令送进左右两个电机;常见两种,15-2 细讲:
  3. L298N 模块:老牌选手,便宜、皮实、接线标识清楚,但发热大、压降大;
  4. TB6612FNG 模块:新派 MOSFET 方案,效率高、几乎不发热、体积小;
  5. 降压模块(可选但推荐):把电池电压稳定降到 5V 给树莓派供电。没有它就得另配充电宝给树莓派单独供电——绝不能用驱动板的 5V 输出反哺树莓派(15-2 详述为什么)。

三、控制链路:一次按键的旅行

在手机上按下【前进】按钮,到车轮转起来,中间经过这些站:

手机浏览器 --HTTP请求--> 树莓派WiFi --Flask路由--> Python函数
    --> gpiozero --GPIO电平--> 电机驱动板 --大电流--> 电机 --> 车轮

反向的画面同时在路上:

相机 --> picamera2 抓帧 --> Flask MJPEG 响应 --> 手机浏览器 <img> 标签

两条链一上一下、各走各的——这也是本章最大的技术难点:一个 Flask 服务要同时伺候【动作指令】这类短请求和【视频流】这类永不结束的长响应。15-3 会专门解决它。

四、要准备的硬件清单

类别 项目 备注
车体 2WD 亚克力车架(含两个 TT 电机+轮子+万向轮) 最常见的入门套件
主控 树莓派 4B/5(任意型号) 越大越费电,5 需要更大电池
驱动 L298N 或 TB6612FNG 模块 见 15-2 的选型对比
相机 Camera Module(CSI 排线)或 USB 摄像头 两条路第十章都学过
电源 电池盒(6×AA 或 2S 锂电池)+(可选)降压模块 电机与树莓派分开供电更稳
其他 杜邦线、扎带、双层板 固定用

选购提醒:先决定用哪块驱动板,再决定电池电压——TB6612FNG 的逻辑电平和电机电源是分开的两路,接线方式与 L298N 不同,别买回来才发现线不够。

五、动手 Demo:不接线,先把地图画出来

在纸上(或笔记里)完成这三项,就算本节的动手环节:

  1. 画四层框图:把上表四层竖着排,每层写出本章用到的具体元件;
  2. 标出链路:把【按键 → 路由 → GPIO → 驱动板 → 电机】的一条线画在图上,再把【相机 → 浏览器】的另一条线画上,用两种颜色区分;
  3. 对号入座:给每层标注学过它的章节号(例如执行层写 7-3 数字输出、感知层写 10-5 视频串流)。

看到什么算成功:图上每条连线都能说出【谁发信号、谁收信号、信号是什么形态】(HTTP 请求/GPIO 电平/电机电流)。

读结果:所有疑难杂症的排查逻辑都在这张图上——车不动,顺着执行层的线往回走(电机 → 驱动板 → GPIO → Python → 路由 → 网络);画面卡,顺着感知层的线往回走。没有这张图,就只能乱拆。

30 秒实验

用 ls 和 grep 快速复习本课已经学过的相关章节标题:

ls "/home/<用户名>/树莓派" 2>/dev/null   # 若笔记不在这台机器上就跳过

或者更直接:打开本课索引,数一数7、10、13 三章各贡献了这台车的哪一部分——7 章给执行层、10 章给感知层、13-2 给控制通道。这三章的合体,就是本章。

六、常见误区

  1. 树莓派可以直接带动电机 —— 绝对不能。GPIO 只有 3.3V/毫安级,而电机启动要几百毫安到安培级,还会在切换时产生电压尖峰。必须经驱动板,这是本章第一铁律。
  2. 买最大电压的电池肯定最好 —— 电池电压要匹配电机额定电压(常见 TT 电机 6V),太高压降不掉会烧电机或让车失控;树莓派那一路还要另外降压。
  3. 智能车和遥控车是一回事 —— 遥控车只转发你的操作(遥控器 → 接收机 → 电机),智能车里有一台计算机会自主决策(本章的决策层)。本课的车介于两者之间:人在回路里遥控,但计算与传输都走树莓派。
  4. 零件一次买齐最重要 —— 更重要的是先搞清【哪块板是执行层的核心】。驱动板型号一旦定了,接线、代码、电源方案全都跟着定;反过来先买电池常常白买。
自测三问(点开对答案) 1. 智能车四层分别是什么?本章各用什么实现? 感知层(相机+MJPEG 流)、决策层(树莓派+Flask)、执行层(驱动板+直流电机)、供电层(电池+独立供电+共地)。 2. 树莓派在车上的角色是什么?为什么它带不动电机? 只做决策(收指令、算输出、发 GPIO 信号);GPIO 只有 3.3V/毫安级,电机要安培级电流和更高电压,必须经驱动板放大。 3. 车不动、画面卡,分别该顺着哪条链排查? 车不动查执行链(电机→驱动板→GPIO→Python→路由→网络);画面卡查感知链(相机→picamera2→MJPEG→浏览器)。

相关笔记