序
2016 年,我买了一块树莓派,想让它不只停留在屏幕和命令行里,而是真正驱动一个看得见、摸得着的东西。于是,我找来三个无刷电机,画结构、装支架、接线,手工做了一台三轴机械臂。它谈不上精致,但当三个关节第一次按照程序缓慢转动时,我第一次真切地感到,软件写下的一行指令,正在改变物理世界。
真正做下去以后,问题很快多了起来。无刷电机需要驱动器接收 PWM 控制信号,也需要编码器返回关节位置。我又接入姿态传感器、限位开关和电流电压采集,帮助机械臂判断姿态、边界与负载。有的传感器通过 I²C 连接,有的使用 SPI 或串口,限位信号直接接入 GPIO。这些接口的差别不只是换一根线:I²C 要处理设备地址,SPI 要约定时钟和片选,串口要对齐波特率和数据格式,PWM 则用频率与占空比传递控制量。那时我才明白,协议决定了两个部件能不能准确理解对方。
我在接线和程序之间来回排查。机械臂抖动,可能是位置数据来得太慢;角度跳变,也可能只是总线受了干扰。树莓派运行的是通用操作系统,适合计算、通信和任务编排,却不适合承担严格时序的实时控制。慢慢地,我开始把采集、通信、计算和控制拆开看,也逐渐明白:系统能稳定工作,靠的是每一层都知道自己该做什么。
后来,我想在电脑上看到机械臂的状态,也想从远处给它下发任务。接触的设备越来越多,协议也从板级的 I²C、SPI 和串口,扩展到工业现场常见的 Modbus RTU、Modbus TCP,以及平台使用的 MQTT 和 HTTP。它们各有分工:Modbus 围绕寄存器组织读写,MQTT 传递设备消息,HTTP 提供平台接口。真正困难的,不是再写一个孤立的解析程序,而是接住这些差异,把数据整理成统一的设备、位号、状态和指令,并处理断线恢复与执行确认。这些问题逐渐把我带到物联网平台,IoT DC3 也从协议解析走向设备接入、数据采集与平台服务。
2024 年,我开始把大语言模型接入 IoT DC3。第一次用自然语言让 Agent 读到真实设备的数据时,我又想起了那台机械臂。交互方式变了,底层的问题却没有消失。AI 可以理解意图、分析异常、调用经过授权的工具,却不能替代闭环控制,不能接管安全联锁,更不能无边界地操控设备。数据要可靠采集,设备能力要准确描述,权限和失败后的处理方式也要事先确定,智能才有落脚的地方。
这本书写的,就是我从那台三轴机械臂一路走来的理解:设备怎样连接,数据怎样流动,平台怎样承接复杂系统,AI 又该在什么位置参与其中。IoT DC3 会用于说明一些工程选择,但不是唯一答案。我更希望你面对新的传感器、陌生的协议,或者一个看起来无所不能的模型时,知道应该先问什么,也知道哪些基础不能跳过。
封面上印着四个词:感知、推理、行动、进化。这四个词正是那条机械臂教给我的闭环——感知,让物理世界成为可信的数据;推理,把数据变成候选的判断;行动,让判断穿过确定性的边界回到物理世界;而进化,是这条闭环在时间里的展开方式:每一次向自主多走一步,都要先用新的约束证明这一步站得住。