3.30. 小结¶
你已经走过了 machine 模块中那些在脚本一接触物理世界就会用到的部分:
GPIO 输出与输入 —— 驱动一个 LED 或一个晶体管,读取一个按钮或一个限位开关。这是每个硬件项目所依赖的基本构件,配以上拉/下拉电阻和软件去抖,使读取必须可靠时能够可靠。
模拟信号 —— 用 ADC 读取传感器、电位器或任何其他连续变化的电压;以及在没有 DAC 时,用 PWM 加一个低通 RC 滤波器产生受控电压。
PWM 应用 —— 调暗一个 LED,通过 H 桥改变直流电机的速度,控制一个舵机的位置。同一种波形,不同的物理平均器(人眼、电机的电感)和不同的解读方式(占空比与绝对脉冲宽度)。
串行总线 ——
UART用于异步点对点链路;SPI用于快速的板上外设,每个设备一根片选线;I2C用于仅用两根线的低速多设备传感器总线;CAN用于模块之间稳健的多主机现场总线。生产环境模式 —— 用看门狗定时器从挂起中恢复,用睡眠模式延长电池续航。摄像头第一次离开工作台时,这两者都会变得必不可少。
这足以构建一个嵌入式设备的 感知 —— 规划 —— 执行 循环:通过 I2C / SPI / ADC 读取传感器,在 Python 中做决策,通过 PWM / GPIO 驱动执行器,通过 UART / CAN 报告状态,并在事件之间睡眠。
3.30.1. 日后使用本参考资料¶
把硬件相关章节当作参考资料,而不是只读一遍的内容。machine 模块参考页面在一处列出了每个类和方法,适合解决“这个调用的确切名字是什么”这类问题。而这里的各章节页面,则是当你需要“哪个旋钮做什么用、为什么”这种视角时该回来查阅的地方——这是参考资料本身无法单独提供的。
3.30.2. 接下来该看什么¶
视觉传感器 是下一个主要主题。本节讲授的是几乎在任何 MCU 上都会出现的通用外设——Pin、ADC、PWM、UART、SPI、I2C、CAN——而下一节将非常深入地讲授摄像头的 标志性 外设:图像传感器,以及从光子打到镜片玻璃到 RAM 中一缓冲区像素之间那条由光学、硅芯片和信号处理组成的长链路。工具集会转向 csi 和 image 模块,但你已经学到的关于驱动 GPIO、通过 I2C 通信和使用 PWM 的一切都将原封不动地延续下去——频闪灯、触发器和传感器扩展板都使用你刚刚学过的那些总线。