规划一台机器人 — 方块图、选型过滤与试装¶
这一章讲什么: 动手之前怎么规划。书里给出的流程是:先想清楚「这台机器人要干什么」, 把它画成两张方块图——一张画硬件(什么零件、怎么连),一张画软件(代码分几块、谁调谁); 然后拿一票硬性条件去过滤候选零件,定下底盘、控制器、主扩展板、电池; 最后用真实尺寸画一张「试装图」,确认装得下,才掏钱买。 读完你应该能照这个流程,给自己设计的另一台机器人做一遍完整选型。
1. 先看现象:零件买错的代价¶
造机器人的第一步不是买,是想。但「想」容易停在脑子里,所以书里给的第一步是画。
为什么值得?因为每一个没想清楚就下单的零件,都会变成钱和时间上的双重损失: 底盘选小了,控制器和电池塞不进去;电机驱动板电流不够,机器人一爬坡就重启; 供电带不动全部负载,电压一掉 Raspberry Pi 就复位、SD 卡就损坏1。 这一章的所有方法——方块图、条件过滤、试装——都是在花钱之前把错误犯在纸上。
书里还立了一个全书适用的工程观:代码和硬件一样要「成块」。 代码被拆成有逻辑的一块块时,比一大坨更容易想清楚、更容易改2。 硬件按功能分块(第 01 章那三张方块),软件也按功能分块——这一章的两张图,就是后面 十七章代码结构的预告片。
本章的主线例子,就用书里自己那个:假设这台机器人要「追踪一个物体」。 我们跟着作者的思路,从这个用例一路走到一张购物清单。
2. 顶层全景:从用例到清单的五步¶
① 用例 「追踪一个物体」
│ 反推:需要什么能力?
▼
② 硬件图 一个传感器(摄像头)+ 两个输出(左电机、右电机)
│ 每个硬件配一段代码 → 代码也要分块
▼
③ 软件图 电机块 / 摄像头块 / 物体位置块 / 监控块 / 行为块
│ 行为要换硬件不重写 → 加一层「接口层」
▼
④ 选型过滤 控制器? 主扩展板? 底盘? 电池? —— 每个都列条件、筛候选
▼
⑤ 试装 查真实尺寸 → 画图对一遍 → 下单
图说:五步走下来,「想」就变成了「买得准」。
下面五节把每一步的机制讲透。
3. 核心原理之一:硬件方块图——从用例反推零件¶
用例「追踪一个物体」翻译成硬件需求,只需要三个方块:一个传感器(摄像头)+ 两个输出 (左电机、右电机)3。书里在这里点破了一个通用的思考方向:
每个硬件模块都可能有很多「款式」——读相似的数据、做相似的动作,但接口各不相同。 不同电机驱动板需要不同的代码来驱动;给机器人写「行为」代码时, 我们不想因为换了电机驱动板就把行为重写一遍。4
这个「不想重写」是软件工程里一个经典问题的机器人版。书里给的解法是个专门的名字:
接口层(interface layer)——在真实的电机驱动代码和一套标准接口之间,夹一层抽象, 让换零件成为可能4。这是全书代码组织的总纲:第 6 章会把电机驱动包进 MQTT 服务、 第 8 章把距离传感器包进同样的服务,都是这个「接口层」思想的具体化。 书里甚至把话说得更远:一个行为写好了,可以换到别的机器人上——只要给那台机器人 改装一个配套的电机块5。
4. 核心原理之二:软件方块图——五个块与「行为」这个名字¶
硬件图定了,软件图怎么画?书里拿笔在信封背面画了一版,又用画图软件画了一版, 强调两种都要练:手稿快速、随手可画(吃饭时在收据背面就能画);软件版整齐、好存档6。 我们照原书的教法,接住这张软件方块图——「用摄像头追踪物体」的完整软件分解:
| 块 | 干什么 | 数据从哪来、到哪去 |
|---|---|---|
| Motors(电机) | 驱动电机,可能用厂商写的库或直接操作 I/O 引脚 | 接收别的块发来的电机指令 |
| Camera(摄像头) | 配置分辨率、白平衡,抓图、推流 | 把图像流交给「物体位置」块 |
| Object position(物体位置) | 处理图像流,提取物体位置数据 | 从 Camera 收图,交给「行为」块 |
| Monitoring(监控) | 给人看:调试与日志 | 接收各块的监控数据 |
| Face object and drive(朝向并行驶) | 行为(behavior):把其他块连起来完成一个任务 | 从「物体位置」收数据 → 思考 → 发指令给「电机」块,同时发监控数据 |
这张表里有一个词是全书的暗线,必须现在立住:
行为(behavior)——书里给的定义是「执行一个任务的代码,它倾向于把其他组件连接在一起」7。 注意它和普通代码块的区别:电机块、摄像头块都是「被用的」,行为块是「用人的」—— 它读传感器数据、做决定、指挥执行器。第 9 章的避障、第 11 章的直行、第 14 章的追脸, 全都是「行为」。
分块的价值,书里给了两条,都值得带走:
到这里,软件的骨架已经能随硬件变化而站稳:换电机驱动板?只改「电机」块对下的接口层, 「行为」块一行不动。这就是接口层存在的意义。
5. 核心原理之三:需求清单——「这台机器人要干什么」的全部答案¶
光会追踪物体不够,书里把全书要实现的功能一次摊开,列成两张对照清单。 能力清单(要干什么):在地上行驶、指示自身状态、看脸或检测物体、循线、避墙、 空间导航、响应语音命令、能被网页或手机控制、安全工作8。 零件清单(为此需要什么):轮子和电机、电机驱动、几颗彩色 LED、避障与导航用的距离传感器、 知道走了多远的轮式编码器、带云台的摄像头、麦克风和喇叭、手机/网页端代码、 一个统筹这一切的强力主控制器、电源8。
然后把两张清单合成一张硬件方块图(第 01 章 §3 我们画过它的成品):主控制器居中, 电机驱动接轮电机,编码器把轮速读回控制器,云台舵机载着摄像头,距离传感器阵列和 IMU 各自回传数据,LED 做状态反馈,人和机器的主要交互走智能手机,辅以喇叭和麦克风9。 书里特别安抚了一句:看着吓人,但每章只攻一个功能区,建好、测好、调试好再往前走10—— 这就是全书章节的编排逻辑。
硬件摆位上,书里给了一张「草图级别的物理布局图」,规则值得背下来:
- 电池最重,放低点(重心以下),防翻车,还要留得出换电池的通道;
- IMU 离电机远一点(电机磁场会干扰它);
- 主控制器放顶层,方便接线;
- 距离传感器放正前方,视野无遮挡;
- 云台摄像头架在顶上。11
这些不是审美偏好,每一条后面都有章节在还账:IMU 避电机是第 13 章的话题, 电池低位是任何移动机器人的 Stability(稳定性)常识。
回到主线例子:追踪物体的用例,现在长什么样¶
把前五步套回主线:用例「追踪物体」→ 硬件三方块(摄像头 + 左右电机)→ 软件五块图 → 「哦,还要云台把摄像头转过去、要 LED 显示状态、要编码器知道自己走了多远」→ 需求清单膨胀成上面那张全书图。你看,规划的过程就是「用例 → 能力 → 零件」的反复翻译, 每发现一个新需求,就回到图上添一块。
6. 核心原理之四:I/O 引脚——控制器伸出来的手,有四种用法¶
选型控制器之前,书里插播了一节基础课:控制器怎么和零件说话。这部分是后面所有 接线章节的地基,照原书的分类接住——I/O 引脚就是控制器上用来输入输出的引脚, 它们让控制器能连接传感器、执行器和电机驱动12:
6.1 数字引脚:只会说「开」和「关」¶
最简单的引脚,只能读或写一个开关信号。书里给了一张电压随时间变化的图: 高电平区域是逻辑 1(True、On),低电平区域是逻辑 0(False、Off), 控制器会把任何值硬解释为「高或低」二选一13。
看似简陋,实则够用:靠信号的时机,数字引脚能完成复杂的通信—— 比如和距离传感器对话(发一个脉冲、量回波间隔,第 8 章的超声波就是这个套路)。 数字引脚就是我们机器人上伺服电机、编码器、超声波传感器的主要接口14。
6.2 模拟引脚:能读「中间状态」¶
模拟输入引脚读的是连续变化的电平,接那种输出可变电阻/电压的传感器15。 它有个硬指标叫分辨率:8 位(bit)的模拟输入能读出 256 个可能值—— 位数越高,切得越细。这类引脚也常叫 ADC(模数转换)引脚。
一个对本书选型的关键推论书里写得很明白:我们决定全部用带数字接口的传感器模块, 所以模拟引脚不需要16。选控制器时可以放心划掉这一项。
6.3 PWM:用开关信号假装连续变化¶
有些输出想要「半开半关」的效果——电机半速、LED 半亮——数字引脚只有开和关两档, 怎么办?答案是 PWM(脉宽调制):引脚还是快速地开关,但每个周期里「开」的时间占比 (这个占比有个名字,叫占空比(duty cycle))在变——占空比高,平均效果就像输出高; 占空比低,就像输出低17。频率够高时,电机感受到的就是平滑的「半速」。
书里点明用途:控制电机转速和 LED 亮度18——第 5、6 章马上要用。
6.4 中断:引脚一变就立刻执行一小段代码¶
在 Raspberry Pi Pico、Arduino 这类单片机上,引脚电平一变,可以立刻触发一小段代码, 这叫中断(interrupt)——用来应对要快得来不及等的信号,比如高速计数编码器脉冲19。
书里给了一个诚实的重要区别:Raspberry Pi 这类系统更强,但隔着一层层软件, 你摸不到硬件中断, tightly timed(紧时限)的信号处理会费劲19。 这是个伏笔——第 11 章编码器计数时会再碰到它。
6.5 数据总线:多根引脚排成一队传数据¶
最后一种用法:几根引脚组队,一根发数据、一根发时钟、一根收数据,按协议传数据, 这叫总线(bus)。书里列了机器人常见的五种:串口 UART、I²C(I2C,读 eye-squared-see)、 I²S(传声音)、SPI、USB20。书里的选择:用 I²C 总线接电机控制器(第 6 章兑现), 因为 I²C 只花两根线(SDA 数据 + SCL 时钟)就能挂一串智能设备。
7. 核心原理之五:控制器选型——一票否决式的过滤¶
选主控制器,书里用的是「列条件 → 筛候选」的过滤法。条件来自前文的需求: 能跑 Python(对初学者最友好的语言)、带 Wi-Fi/蓝牙(无头化的前提)、 有摄像头接口(要做视觉和语音识别,这直接指向单板计算机 SBC 这个类别)、 有数字 I/O、文档齐全、成本可接受21。
拿这张筛子过一遍市面上的控制器,书里演示了否决逻辑:
| 候选 | 判决 | 理由 |
|---|---|---|
| 裸单片机芯片(如 PIC) | ✗ | 要自己焊 PCB、配编程器22 |
| Arduino 板 | ✗ | 不会跑 Python、没有 Wi-Fi22 |
| ESP32、Pi Pico 这类能跑 Python 的控制器 | ✗ | 跑得了 Python,但视觉和语音识别能力非常有限22 |
| Raspberry Pi 等单板计算机 | ✓ | Python、Wi-Fi、语音、视觉全包;同类的 BeagleBone、LattePanda、Jetson Nano 被成本和易用性比下去22 |
选 Pi 的哪个型号?书里比了三款带 Wi-Fi/蓝牙的:
| 型号 | 书里的话 |
|---|---|
| Pi 4B | 快、上限 8 GB 内存;贵一点、耗电多一点;作者推荐这款 |
| Pi 3A+ | 尺寸和功耗的平衡之选;视觉处理完全胜任;「没 4B 快,但够快」 |
| Pi Zero 2 W | 便宜轻;焊排针(除非买带头版本);内存只有 512 MB,速度会让人抓狂 |
注意书里专门设的澄清题:Pi Pico 不是 Raspberry Pi——它是单片机,跑得动 Python, 但跑不动视觉和语音识别程序23。买错这款,整本书的代码都跑不了。
顺带记两个供电数字:Pi 官方推荐 2.5 A 的电源,超过 2.1 A 就够用24; 全书的视觉/语音代码在更快的 4B、3B+、3A+ 上体验最好,Zero 2 W 能跑但慢25。
GPIO 引脚的三副面孔¶
Raspberry Pi 顶上那排 40 针的大连接器叫 GPIO 口,机器人上的传感器和电机大多从这里接26。 书里按用途把它分成三组,值得照单记住:
| 引脚组 | 干什么 |
|---|---|
| 电源组:5 V、3.3 V、GND | 供电。GND 是地(电池的负极那端);5 V 可以从电池给 Pi 供电,3.3 V 伺候小传感器 |
| I²C 组:SDA、SCL | 数据总线,挂传感器和电机控制板,指令从这里过 |
| GPIO 组:带编号的针 | 通用数字输入输出,接舵机、编码器、超声波 |
一个必踩的坑书里用 Tip 框标了:Pi 文档里的引脚号大多是 BCM 编号, 对应主芯片上的脚位,和排针的物理位置对不上——查图请上 pinout.xyz27。
8. 核心原理之六:主扩展板——在 Pi 和零件之间架桥¶
主扩展板(main breakout)是配合控制器处理外接设备的电路板——可以简单到 「一块电机驱动 + 几根杜邦线」,也可以集成度更高28。
选它的条件,书里又是一张过滤清单,每一项都对应一个真实约束:
- 集成度:最分散的方案(面包板上点对点连线)最灵活,但线多、占地方、故障点多; 集成度最高的(电机、舵机、传感器全在一块板上)又牺牲了传感器摆位自由——取中间29。
- HAT 形态:Raspberry Pi 有个叫 HAT(Hardware Attached on Top)的规格—— 直接扣在 Pi 上、插进 GPIO 口的扩展板30。注意多个 HAT 叠用可能抢同一组引脚, 上 pinout.xyz 查引脚占用再叠31。
- 引脚占用:有的板子吃掉太多 I/O,留给你的不够;聪明的板子用 I²C 这类智能总线, 替你省引脚32。
- 功率匹配:大电机要吃大电流或大电压,配小了会憋停、过热甚至起火; 对我们这台小机器人,每路(通道)1 到 1.5 安培就够;电机受不了 7 V 以上, 大功率驱动板反而不合适33。好驱动板还带电容,抑制电机噪声——不然电机会让 附近舵机发抖、总线信号错乱34。
- 焊接量:有些板子买回来是一袋元件加一块裸板,得自己焊一整个晚上(书里的例子: Adafruit 步进电机 HAT 套件)——第一台机器人请选预组装模块35。
- 连接器:板上的接口可能和电机、传感器对不上;螺丝端子好接但怕震动, 书里后面会用预压接好线尾的「pig-tail(猪尾线)」来解决36。
拿这张清单过六块候选板(书里的逐一评点,我们压缩成表):
| 候选板 | 书里的判决 |
|---|---|
| L298N 电机驱动 | 只会驱电机;舵机、编码器、I²C 全要自己另搭,工作量大 |
| CamJam Edukit 驱动 | 有 I²C 和 4 个编码器输入,但舵机还得另配 |
| Adafruit 步进 HAT | 功能全,但要自己焊排针和舵机扩展——新手「勇敢的选择」 |
| RedRobotics RedBoard+ | 7.2 V 最低输入,电压对我们的电机太高;适合大电机 |
| Adafruit CRICKIT | 能力极强,但 I²C 口不外露,接不了传感器 |
| Pimoroni Inventor HAT Mini | I²C(QW/ST 接口带供电)、舵机位、电机接口带编码器针脚——缺一个:电机线得焊转接板才能接上。作者选定它 |
选定 Inventor HAT Mini 的代价书里没藏:电机连接器需要焊转接板37。 没有完美的板子,只有说得清的取舍——这是这一节真正的教训。
9. 核心原理之七:供电——电机和电脑不要抢一碗饭¶
机器人的电源要伺候两类负载:数字部分(Pi、传感器)和电机部分。 电机是耗电大户,有时舵机比驱动电机还贪;电压不合适还会把 Pi 拖垮: 供电扛不住全部需求时,电压下跌,Pi 会复位,SD 卡会损坏——这必须避免1。
书里给了三种供电架构:
| 方案 | 做法 | 书里的话 |
|---|---|---|
| 双电池 | 电机和其余部分各用各的电池 | 最安全,但占空间、增重量38 |
| 单电池 + 稳压器(UBEC) | 一块高电压电池,经 DC 稳压分出 5 V 喂 Pi | 只带一块电池,但接线复杂;稳压器要扛得住约 3 A38 |
| 带稳压的充电宝(USB 电源) | 充电宝内置稳压,直接出 5 V | 省空间省复杂度;认准 5 V 3 A(书里反例:一块 2.4 A 的可能不够)39 |
锂聚合物电池(航模电池)配 UBEC 能量大,但接错线就是火灾风险,新手不要碰40。
最终方案:一块能输出 5 V 3 A 的充电宝(作者挑了 NanoWave 3 5000 mAh, 型号 UBP0119A41);主扩展板与 Pi 共电,把「独立电机电源」留作备选(那要焊线割铜箔, 复杂度高一档)。
传感器选型在本章一并定案,三款都埋着后文:
- VL53L5CX 距离传感器阵列——低成本实现「类 LiDAR」的多点测距(第 8 章);
- Raspberry Pi 摄像头——视觉处理(第 14、15 章);
- BNO055 IMU——书里明说选它是因为比同类省大量编程复杂度(第 13 章)42。
10. 核心原理之八:试装——用真实尺寸在纸上犯完所有的错¶
买之前的最后一道工序:试装(test fit)——查每个零件的真实尺寸,画一张等比草图, 确认装得下43。书里演示的数字:Pi 4 约 86 × 57 mm,充电宝 76 × 35 mm, Shadow 底盘 192 × 126 × 44 mm——电池最长边 76 mm,放底盘上绰绰有余44。
工具不拘:Inkscape 这类画图软件、纸笔、甚至纸板剪的实物模型都行, 关键是把尺寸标上去45。这一步省下的是「到货才发现装不下」的时间与运费。
11. 作者的判断与证据¶
事实层(书里给了依据的):
- 各候选控制器的能力对比、各扩展板的引脚与电压限制、充电宝的安培数要求, 这些都是可查的产品规格,书里引用了具体数字(2.5 A 推荐电源、1–1.5 A 每通道、5 V 3 A、 86 × 57 mm 等)。
- Pi 4B 与 Zero 2 W 的内存差距(8 GB 对 512 MB)、全系四核 ARM CPU25。
作者的判断层(选择,不是必然):
- 「第一台机器人要简单」是贯穿全章的价值判断:反对大四轮、反对履带/麦克纳姆轮/足式、 反对大底盘——理由不是它们不好,而是第一步走简单路线,把独特而炫的移动机构留给以后46。
- 推荐 SparkFun Shadow 底盘 + DFRobot FIT0450 电机 + Inventor HAT Mini 的组合, 是「权衡之后」的选择,书里对每个候选都给了否决理由——而且明说 你可以换,但接线不同的部分要自己改代码37。
- 「焊一整个晚上的套件对新手是 brave(需要勇气)的选择」——主观但诚实的经验之谈35。
12. 边界与局限¶
- 型号会过时。 书里自己承认:市面零件「太多」「变化快」,Pi 5 出的时候「适不适合机器人 还没评估」25。读这一章要学金过滤方法,而不是背型号——型号是 2025 年的快照。
- 只对两轮差速小车负责。 四驱、履带、麦轮、足式在这一章被一致否决,如果你要造那些, 这里几乎没有可直接搬的东西(只有方法)。
- 供电一章没有讲电池容量怎么换算续航。 5000 mAh 能玩多久,书里没给数——只讲了 「输出功率要够」这个安全底线。
- 模拟电路知识一笔带过。 电容为什么能抑噪、电机噪声的机理,书里只说「会出问题」, 没讲电磁原理。
13. 可带走的¶
- 规划顺序锁死:用例 → 能力清单 → 零件清单 → 硬件方块图 → 软件方块图 → 选型过滤 → 试装下单。
- 代码要像硬件一样分块;行为(behavior)= 连接各组件、完成一个任务的代码7。
- 在驱动代码和标准接口之间加接口层,换硬件就不重写行为4——这是全书 MQTT 服务化的设计原点。
- I/O 引脚四种用法背下来:数字(开关)、模拟(连续,看位数)、PWM(占空比假装连续)、总线(I²C/UART/SPI……)121720。
- Pi 摸不到硬件中断,紧时限信号(如高速编码器)是弱项——选控制器时要想好19。
- 选控制器先列一票否决条件再筛:Python、Wi-Fi、摄像头、数字 I/O、文档、成本21。
- 主扩展板没有完美的:集成度、引脚占用、功率匹配、焊接量、连接器,五项都要权衡2933。
- 供电记住「5 V 3 A」这条线;带不动就电压下跌 → Pi 复位 → SD 卡损坏139。
- 零件布局三原则:电池放低、IMU 离电机远、控制器放顶便接线11。
- 下单前画试装图,真实尺寸标上去43。
14. 原文地图¶
| 主题 | 原书位置 |
|---|---|
| 软件分块与接口层 | text/23-fm-technical-requirements.txt:13(搜「easier to reason about」) · text/23-fm-technical-requirements.txt:29(搜「an interface layer」) |
| 软件五方块与「行为」定义 | text/23-fm-technical-requirements.txt:68(搜「behavior is code that」) |
| 能力清单与零件清单 | text/24-fm-planning-the-physical-robot.txt:21(搜「Drive on the floor」) |
| 底盘尺寸比较与两轮驱动 | text/25-fm-choosing-a-robot-chassis-kit.txt:60(搜「200 mm and will comfortably fit」) · text/25-fm-choosing-a-robot-chassis-kit.txt:92(搜「A two-wheel drive is the simplest」) |
| 电机选型与推荐底盘 | text/25-fm-choosing-a-robot-chassis-kit.txt:121(搜「N20 or TT motor」) · text/25-fm-choosing-a-robot-chassis-kit.txt:154(搜「SparkFun Shadow chassis」) |
| I/O 引脚四种用法 | text/26-fm-exploring-controllers-and-i-o.txt:12(搜「I/O pins are used for input and output」) · text/26-fm-exploring-controllers-and-i-o.txt:59(搜「duty cycle」) · text/26-fm-exploring-controllers-and-i-o.txt:43(搜「interrupts can be used」) · text/26-fm-exploring-controllers-and-i-o.txt:78(搜「Inter-Integrated Circuit」) |
| 控制器过滤与 Pi 选型 | text/26-fm-exploring-controllers-and-i-o.txt:108(搜「Single-Board Computers」) · text/27-fm-exploring-raspberry-pi-s-capabilities.txt:59(搜「Pico is not the same」) · text/27-fm-exploring-raspberry-pi-s-capabilities.txt:99(搜「2.5 A power supplies」) |
| GPIO 三组引脚与 BCM 编号 | text/28-fm-choosing-a-main-breakout-board.txt:26(搜「BCM numbers」) |
| 主扩展板条件过滤 | text/28-fm-choosing-a-main-breakout-board.txt:32(搜「main breakout is a circuit board」) · text/28-fm-choosing-a-main-breakout-board.txt:52(搜「Hardware Attached on Top」) · text/28-fm-choosing-a-main-breakout-board.txt:85(搜「1 to 1.5 amps per channel」) · text/28-fm-choosing-a-main-breakout-board.txt:87(搜「capacitors」) |
| 六块候选板的取舍 | text/29-fm-powering-the-robot.txt:2(搜「no breakout is yet perfect」) |
| 三种供电架构 | text/29-fm-powering-the-robot.txt:46(搜「voltage drops and cause Raspberry Pi resets」) · text/29-fm-powering-the-robot.txt:51(搜「Dual batteries」) · text/29-fm-powering-the-robot.txt:72(搜「5 V 3 A output」) · text/29-fm-powering-the-robot.txt:84(搜「fire risk if incorrectly wired」) |
| 传感器定案与试装 | text/30-fm-test-fitting-the-robot.txt:8(搜「NanoWave 3」) · text/30-fm-test-fitting-the-robot.txt:18(搜「VL53L5CX distance sensor array」) · text/30-fm-test-fitting-the-robot.txt:22(搜「BNO055」) · text/30-fm-test-fitting-the-robot.txt:29(搜「A test fit is an important stage」) · text/30-fm-test-fitting-the-robot.txt:36(搜「86 mm by 57 mm」) |
-
出处:「Powering the robot」第 46 段(
text/29-fm-powering-the-robot.txt:46,搜「voltage drops and cause Raspberry Pi resets」)。原文:扛不住全部功率的供电会电压下跌,导致 Pi 复位和 SD 卡损坏,必须避免。 ↩↩↩ -
出处:「Technical requirements」第 13 段(
text/23-fm-technical-requirements.txt:13,搜「easier to reason about」)。原文:代码被当作有逻辑的块、而不是一大坨时,更容易想清楚。 ↩ -
出处:「Technical requirements」第 20 段(
text/23-fm-technical-requirements.txt:20,搜「a sensor and two outputs」)。原文:「追踪一个物体」需要图 2.1 的硬件——一个传感器加两个输出(左右电机)。 ↩ -
出处:「Technical requirements」第 29 段(
text/23-fm-technical-requirements.txt:29,搜「an interface layer」)。原文:不同电机驱动需要不同代码;写行为时不该因换驱动而重写;推荐在真实驱动代码和标准接口之间建一层抽象,使换件成为可能;第 6 章见实例。 ↩↩↩ -
出处:「Technical requirements」第 73 段(
text/23-fm-technical-requirements.txt:73,搜「approach a single block at a time」)。原文:一块一块地理解、测试、调参;块可以混搭配复用,行为可移植到其他机器人(改装电机块后)。 ↩↩↩ -
出处:「Technical requirements」第 47 段(
text/23-fm-technical-requirements.txt:47,搜「back of receipt paper」)。原文鼓励两种画法:纸上快 sketch(吃饭时在收据背面都行),再用 Draw.io、Inkscape 等软件升级;另有一条 Tip:手稿拍照存档防褪色。 ↩ -
出处:「Technical requirements」第 68 段(
text/23-fm-technical-requirements.txt:68,搜「behavior is code that」)。原文:「a behavior is code that performs a task and tends to connect the other components together」——行为是执行任务、把其他组件连起来的代码。 ↩↩ -
出处:「Planning the physical robot」第 21 段(
text/24-fm-planning-the-physical-robot.txt:21,搜「Drive on the floor」)。原文两清单:能力(行驶/状态指示/看脸或检测物体/循线/避墙/导航/语音/手机网页控制/安全)与零件(轮电机/电机驱动/LED/距离传感器/编码器/云台摄像头/麦克风喇叭/手机网页代码/主控制器/电源)。 ↩↩ -
出处:「Planning the physical robot」第 59 段(
text/24-fm-planning-the-physical-robot.txt:59,搜「sending sensor data back」)。原文描述图 2.3:主控制器连电机驱动;编码器回读;电机驱动兼控云台舵机;距离传感器与 IMU 回传;LED 反馈;交互主要走智能手机,辅以喇叭麦克风。 ↩ -
出处:「Planning the physical robot」第 68 段(
text/24-fm-planning-the-physical-robot.txt:68,搜「daunting number of robot parts」)。原文:零件看着吓人,但每章聚焦一个功能区,建好测好调试好再前进。 ↩ -
出处:「Choosing a robot chassis kit」第 17 段(
text/25-fm-choosing-a-robot-chassis-kit.txt:17,搜「below the center of gravity」)与同文件第 11 段(搜「some distance from」)。原文布局规则:电池放低(重心以下)便更换;IMU 离电机远些;主控制器放顶便接线;距离传感器在前方视野无遮挡;云台摄像头架顶上。 ↩↩ -
出处:「Exploring controllers and I/O」第 12 段(
text/26-fm-exploring-controllers-and-i-o.txt:12,搜「I/O pins are used for input and output」)。原文:I/O 引脚用于控制器输入输出,让它能接传感器、输出和电机驱动;也常写作 GPIO(通用输入输出)。 ↩↩ -
出处:「Exploring controllers and I/O」第 28 段(
text/26-fm-exploring-controllers-and-i-o.txt:28,搜「digital logic high」)。原文:数字引脚只读写开关信号;上阴影区是高(1/True/On),下阴影区是低(0/False/Off);控制器把任何值硬解释为高或低。 ↩ -
出处:「Choosing a main breakout board」第 21 段(
text/28-fm-choosing-a-main-breakout-board.txt:21,搜「digital inputs and outputs」)。原文:带编号的 GPIO 针用于伺服电机、编码器、超声波传感器的数字输入输出。 ↩ -
出处:「Exploring controllers and I/O」第 38 段(
text/26-fm-exploring-controllers-and-i-o.txt:38,搜「changing resistance or voltage」)。原文:模拟引脚读连续变化电平,接输出可变电阻/电压的传感器;8 位模拟输入读 256 个值,这类引脚也叫 ADC。 ↩ -
出处:「Exploring controllers and I/O」第 112 段(
text/26-fm-exploring-controllers-and-i-o.txt:112,搜「focus on digital pins」)。原文:既然选定用传感器模块,就聚焦数字引脚,模拟引脚不需要。 ↩ -
出处:「Exploring controllers and I/O」第 59 段(
text/26-fm-exploring-controllers-and-i-o.txt:59,搜「duty cycle」)。原文:PWM 保持恒定频率,改变每周期内高电平的时长占比(占空比)来表示信号;常用于电机速度和 LED 亮度。 ↩↩ -
出处:「Exploring controllers and I/O」第 63 段(
text/26-fm-exploring-controllers-and-i-o.txt:63,搜「speed of motors」)。原文:PWM 常用于控制电机速度或 LED 亮度;第 5、6 章细讲。 ↩ -
出处:「Exploring controllers and I/O」第 43 段(
text/26-fm-exploring-controllers-and-i-o.txt:43,搜「interrupts can be used」)。原文:单片机上引脚变化可触发一小段代码(中断),应对高速编码器计数等;Pi 这类系统更强但隔着软件层,摸不到硬件中断,紧时限信号处理更棘手。 ↩↩↩ -
出处:「Exploring controllers and I/O」第 78 段(
text/26-fm-exploring-controllers-and-i-o.txt:78,搜「Inter-Integrated Circuit」)。原文列出 UART、I²C(发音 eye-squared-see 或 eye-two-see)、I²S、SPI、USB 五种总线,用于在控制器和智能设备间传控制、音频、传感器数据;第 6 章用 I²C 接电机控制器。 ↩↩ -
出处:「Exploring controllers and I/O」第 94 段(
text/26-fm-exploring-controllers-and-i-o.txt:94,搜「worth making early」)与同文件第 108 段。原文:控制器至少要有可编程 I/O;要好文档、好编程语言、封装好的硬件;要 Wi-Fi/蓝牙;推荐 Python;视觉与语音识别指向带摄像头接口的单板计算机;成本让位于能力。 ↩↩ -
出处:「Exploring Raspberry Pi's capabilities」第 5 段(
text/27-fm-exploring-raspberry-pi-s-capabilities.txt:5,搜「clear choice」)。原文对四组候选的过滤:SBC(含 Pi)能跑 Python、Wi-Fi、语音、视觉,成本低易用,胜过 BeagleBone、LattePanda、Jetson Nano;ESP32/Pico 能跑 Python 但视觉语音非常有限;Arduino 无 Wi-Fi 不跑 Python;裸芯片要自配编程器和 PCB。 ↩↩↩↩ -
出处:「Exploring Raspberry Pi's capabilities」第 59 段(
text/27-fm-exploring-raspberry-pi-s-capabilities.txt:59,搜「Pico is not the same」)。原文 Note:Pi Pico 不是 Raspberry Pi,是单片机,跑得了 Python 但不胜任视觉和语音识别。 ↩ -
出处:「Exploring Raspberry Pi's capabilities」第 99 段(
text/27-fm-exploring-raspberry-pi-s-capabilities.txt:99,搜「2.5 A power supplies」)。原文:Pi 推荐 2.5 A 电源,超过 2.1 A 即可;USB 充电宝可由此口供电。 ↩ -
出处:「Exploring Raspberry Pi's capabilities」第 41 段(
text/27-fm-exploring-raspberry-pi-s-capabilities.txt:41,搜「quad-core ARM」)。原文:4B 上限 8 GB RAM,Zero 2 W 与 3A+ 只有 512 MB;全系四核 ARM;更快型号视觉语音体验更好;Pi 5 是写作时最新最快,适不适合机器人尚待评估,供电可能有挑战。 ↩↩↩ -
出处:「Exploring Raspberry Pi's capabilities」第 106 段(
text/27-fm-exploring-raspberry-pi-s-capabilities.txt:106,搜「large connector」)。原文:顶上大连接器是 GPIO 口,多数传感器电机从这里接,可挂 SPI、I²C、串行总线或数字 I/O;查引脚上 pinout.xyz。 ↩ -
出处:「Choosing a main breakout board」第 26 段(
text/28-fm-choosing-a-main-breakout-board.txt:26,搜「BCM numbers」)。原文 Tip:文档里的引脚号多为 BCM 编号,对应博通主芯片的脚位;用图或 pinout.xyz 对照。 ↩ -
出处:「Choosing a main breakout board」第 32 段(
text/28-fm-choosing-a-main-breakout-board.txt:32,搜「main breakout is a circuit board」)。原文:主扩展板是配合控制器处理外接设备的电路板,可以简单到电机驱动加几根引脚,也可以集成更多。 ↩ -
出处:「Choosing a main breakout board」第 42 段(
text/28-fm-choosing-a-main-breakout-board.txt:42,搜「point-to-point wiring」)。原文:集成度谱系——面包板点对点最灵活但线多易错;全集成板牺牲传感器摆位;取中间,让传感器可按需加在方便位置。 ↩↩ -
出处:「Choosing a main breakout board」第 52 段(
text/28-fm-choosing-a-main-breakout-board.txt:52,搜「Hardware Attached on Top」)。原文:HAT 是扣在 Pi 上、插进 GPIO 的扩展板规格;不同 HAT 可能抢引脚(如音频 HAT 用 I²S 引脚,电机 HAT 拿同一组引脚驱电机),叠用要查 pinout.xyz;插满 40 针不等于全用。 ↩ -
出处:「Choosing a main breakout board」第 63 段(
text/28-fm-choosing-a-main-breakout-board.txt:63,搜「usually actually connected」)。原文 Note:HAT 虽插满所有引脚,通常只用其中一小组;pinout.xyz 可查各 HAT 实际占用。 ↩ -
出处:「Choosing a main breakout board」第 67 段(
text/28-fm-choosing-a-main-breakout-board.txt:67,搜「too many I/O」)。原文:有的板吃掉太多 I/O 引脚;好选择是露出你需要的引脚,并用 I²C 智能设备省引脚。 ↩ -
出处:「Choosing a main breakout board」第 85 段(
text/28-fm-choosing-a-main-breakout-board.txt:85,搜「1 to 1.5 amps per channel」)。原文:小机器人每通道 1–1.5 A 正好;电机受不了 7 V 以上,大驱动板反而不合适;欠配会憋停、过热甚至起火。 ↩↩ -
出处:「Choosing a main breakout board」第 87 段(
text/28-fm-choosing-a-main-breakout-board.txt:87,搜「capacitors」)。原文:好驱动板应带电容,减少电机噪声与尖峰;电机噪声可致附近舵机抖动、总线信号错乱。 ↩ -
出处:「Choosing a main breakout board」第 98 段(
text/28-fm-choosing-a-main-breakout-board.txt:98,搜「a bag of components with a bare board」)。原文:小排针焊接快而简单;一袋元件加裸板的套件(如 Adafruit 步进 HAT)要花掉大半个晚上还要自己调试;本书多推荐预组装模块;想学焊接有 Adafruit 教程链接。 ↩↩ -
出处:「Choosing a main breakout board」第 111 段(
text/28-fm-choosing-a-main-breakout-board.txt:111,搜「may not match」)。原文:板上接口可能和电机传感器对不上;螺丝端子灵活但后文用预压接的 pig-tail 线解决布线。 ↩ -
出处:「Powering the robot」第 2 段(
text/29-fm-powering-the-robot.txt:2,搜「no breakout is yet perfect」)与第 24 段(搜「solder adaptor boards」)。原文:没有完美的扩展板;Inventor HAT Mini 的 I²C(QW/ST 带供电)、舵机位、带编码器针脚的电机接口都合适,代价是要焊转接板接电机;换板要自己改贴近 I/O 引脚的代码。 ↩↩ -
出处:「Powering the robot」第 51 段(
text/29-fm-powering-the-robot.txt:51,搜「Dual batteries」)。原文:双电池——电机与其余部分完全独立,最安全但占空间重量;单电池加 UBEC 稳压省电池但接线复杂,要能扛约 3 A。 ↩↩ -
出处:「Powering the robot」第 72 段(
text/29-fm-powering-the-robot.txt:72,搜「5 V 3 A output」)。原文:带稳压的充电宝(常见 USB 电源)省空间;认准 5 V 3 A;反例 2.4 A 可能不够;注意 Pi 3 用 micro-USB、4B 用 USB-C;多数充电宝充电时会断电。 ↩↩ -
出处:「Powering the robot」第 84 段(
text/29-fm-powering-the-robot.txt:84,搜「fire risk if incorrectly wired」)。原文 Note:锂聚合物电池配 UBEC 可以带动 Pi 和电机,但必须小心管理;不推荐新手,接错线有火灾风险。 ↩ -
出处:「Test fitting the robot」第 8 段(
text/30-fm-test-fitting-the-robot.txt:8,搜「NanoWave 3」)。原文:选定 NanoWave 3 5000 mAh(UBP0119A),输出 5 V 3 A,体积紧凑;主扩展板与 Pi 共电,独立电机电源留作备选。 ↩ -
出处:「Test fitting the robot」第 18 段(
text/30-fm-test-fitting-the-robot.txt:18,搜「VL53L5CX distance sensor array」)与第 22 段(搜「BNO055」)。原文:VL53L5CX 像低成本 LiDAR 一样给多点距离,Pimoroni breakout 较小较便宜;IMU 选 BNO055 因为它省大量编程复杂度。 ↩ -
出处:「Test fitting the robot」第 29 段(
text/30-fm-test-fitting-the-robot.txt:29,搜「A test fit is an important stage」)。原文:试装在下单前帮你确信零件装得进预期位置,省时间省钱;尺寸可从搜索引擎和厂商页收集,养成习惯。 ↩↩ -
出处:「Test fitting the robot」第 36 段(
text/30-fm-test-fitting-the-robot.txt:36,搜「86 mm by 57 mm」)。原文:Pi 4 约 86 × 57 mm;NanoWave 3 电池 76 × 35 mm(Pimoroni 页);Shadow 底盘 192 × 126 mm、高 44 mm;电池最长边 76 mm,放底盘上没问题。 ↩ -
出处:「Summary」第 9 段(
text/31-fm-summary.txt:9,搜「The important part is that you type in」)。原文:Inkscape 画的试装草图也可以是纸笔或纸板;关键是输入每个零件的尺寸并标注;上下两层甲板都画。 ↩ -
出处:「Choosing a robot chassis kit」第 138 段(
text/25-fm-choosing-a-robot-chassis-kit.txt:138,搜「not because they are flawed」)。原文:反对第一台机器人用大底盘或独特炫的移动机构(履带、麦轮、足式),不是它们有缺陷,而是从简单起步更好;但 fully built 的成品套件又没留学习空间。 ↩