第12章 AI怎样连接设备:传感器、执行器与反馈
章首语
前面的班级AI系统都在网页和虚拟文件中工作。即使文案写错或流程停住,影响通常还留在屏幕里。当系统接入相机、按钮、指示灯和扬声器后,输入来自不断变化的现场,输出也会被人听见或看见。一次误判可能反复响铃,设备断开可能让页面仍显示“已提醒”,过时的信号还可能在几秒后触发错误动作。
物理现场不会像测试表那样整齐。灯光闪动会使视觉分数在阈值附近跳变,机械按钮按下一次可能产生多次电信号,通信需要时间,摄像头也会暂时断开。如果系统只写“识别到就提醒”,它无法回答连续出现几次才算识别到、提醒后多久可以再次触发、设备没有反馈怎么办、有人误入画面时怎样停止。
本章开发“现场助手v6.0”。核心任务在离线模拟器中完成:信号序列代替相机或按钮,页面状态代替设备反馈,屏幕、指示灯和提示音由可观察图形模拟。设备充足且学校允许时,可以连接打印信号卡、普通摄像头或低压教学开发板作扩展。我们先让第一版按单次阈值直接发声,再加入采样确认、去抖、冷却、反馈、默认安全状态和动作降级,让“会动”变成“知道何时允许动、动后怎样确认”。
学习目标
完成本章学习后,你能够:
- 说明传感器、控制程序、执行器和环境的信号关系。
- 区分事件、采样、阈值、噪声、延迟和设备状态。
- 用反馈判断命令是否真正产生了预期结果。
- 为重复触发、断连和不确定输入设计动作降级。
- 比较模拟与实机结果,写出部署边界和责任。
本章项目 开发现场助手v6.0
现场助手接收0—100的信号分数。它可以表示第5章视觉模块对“需要提醒信号卡”的检测分数,也可以表示按钮、光照或距离等经过归一化后的教学信号。页面不声称这些数值来自真实AI模型;使用者可以选择稳定、高噪声、重复触发、设备断开、反馈缺失、延迟和时间戳乱序等场景。
动作分为三级:低风险时只在日志中静默记录;较明确时显示屏幕提示;达到更严格条件且设备在线时,才允许发出指示灯或提示音请求。高影响动作不在本章自动执行,必须由人确认。每次动作记录事件时间、接收时间、信号值、设备状态、命令、设备确认和环境反馈。
四人组可以担任传感与数据员、控制逻辑员、设备与安全员、测试记录员。交付v1/v2、16项开发测试、8项最终测试、模拟/实机对照表、一次误触发复盘、动作降级表和模块说明卡。没有硬件的组完成相同核心学习,不因设备数量影响基本评价。
让第一版按一次阈值直接提醒
12.1 物理信号进入程序后成为数据
现场中的光、声音、压力、距离和图像不能直接被程序处理。测量装置把物理变化转换成电信号,采集设备再把它表示为数字。程序读取的是某个时刻的数值、布尔状态或图像帧,而不是现实对象本身。数值还要配单位、量程、时间戳和设备编号才有完整含义。
本章把不同来源统一成0—100分,是为了让阈值和时间实验可比较。这种归一化会丢失原始单位,不能把65分说成某种真实距离或亮度。若接入实机,原始读数、转换公式和校准版本必须保留,避免只见分数不知来源。
第一版规则为“当前分数大于等于70,立即响一次”。稳定序列20, 25, 74, 78, 82看起来可用;高噪声序列65, 72, 68, 75, 67, 76会在阈值两侧来回跳动。每个超过70的样本都触发声音,五秒内可能连续提醒三次。
12.2 传感器测量环境,不直接给出事实
传感器(Sensor)是把环境中的物理量或事件转换为系统可读取信号的装置。按钮可以提供高/低状态,光敏元件提供随光变化的数值,相机提供像素阵列。视觉模型还要把像素转换为类别或检测分数,因此“相机输入”和“模型判断”是两层。
传感器读数可能受噪声、安装位置、遮挡、量程、采样频率和故障影响。同一个纸卡在不同光线下会得到不同图像,同一次按键会因机械接触产生短暂抖动。程序要把读数当作带条件的测量,不能把一个数字直接写成“现场事实已确认”。
打开离线实训页,先运行稳定序列,再运行高噪声序列。记录每个样本是否触发、两次触发间隔、设备是否在线。保存v1轨迹,不急于把阈值调高;单纯提高阈值可能减少误报,也可能漏掉真正信号。
用未知现场序列测试第一版
12.3 事件和采样表示两种输入方式
事件(Event)是程序关注的状态变化或输入到达,例如按钮从未按下变为按下、视觉分数首次越过阈值、设备连接状态变为离线。采样(Sampling)是在一系列时刻读取信号数值。连续采样可以看到变化趋势,事件处理则让程序在特定变化发生时执行动作。
若每100毫秒采样一次,按住按钮一秒会得到十个“高”值,但用户只完成了一次按下动作。程序要识别从低到高的边沿,或要求状态稳定若干次,避免把采样条数当事件次数。机械按键的短时跳变常用去抖处理;视觉分数也可用连续样本、滑动平均或滞回阈值减少抖动。
未知测试加入八种现场变化:阈值附近噪声、同一信号持续、设备断开、连接恢复、动作确认丢失、观察延迟、人员误入和时间戳乱序。第一版可能把持续高值重复当新事件,设备离线时仍显示“已响铃”,迟到样本又触发旧动作。
运行v1的16项开发测试并保存记录。错误不只统计误报和漏报,还要看重复触发、错误状态、超时和不安全动作。一个系统只响了一次,却在设备离线时谎称成功,同样未通过。
从命令到现场结果理解执行与反馈
12.4 执行器把控制信号转成可感知动作
执行器(Actuator)是把控制信号转换成物理动作或可感知输出的装置。指示灯把电信号转换成光,扬声器转换成声音,电机转换成运动。屏幕提示属于软件输出,本章把它作为低风险动作;真实设备动作还受到电源、连接、驱动程序和机械状态影响。
程序通常先发出命令,例如light:on或beep:300ms,设备再返回接受、拒绝或超时。命令发送成功只说明数据离开控制程序,不证明灯真的亮了。若设备没有状态反馈,可以通过独立传感器或人工观察确认;无法确认时,日志应写“命令已发送,现场结果未知”。
本章模拟器把输出分成命令状态、设备确认和环境反馈三列。v1只看命令状态,v2要求三者形成证据链。接入硬件时,学生不得把电机、加热、门锁等高风险设备作为本章扩展,默认只使用低压指示灯或短促提示音,并遵守设备说明。
12.5 反馈让系统根据结果修正下一步
反馈(Feedback)是动作之后重新观察环境或设备状态,并用观察结果调整后续控制。只根据输入发出一次命令、完全不看结果,属于开环;把执行结果重新送回判断,形成闭环。闭环不自动保证正确,反馈传感器也可能迟到或故障。
例如系统请求指示灯亮起,设备确认“命令已接收”,光照传感器却没有变化。v2应进入feedback-missing,停止升级动作并提示检查设备;不能为了完成状态再次不断发送light:on。若反馈晚于超时时间到达,要用事件ID判断它属于哪一次动作,避免把旧反馈认成新动作成功。
反馈还可以用于恢复。设备断开时进入默认安全状态,输出关闭并只记录;重新连接后先做自检和一次低风险试灯,确认反馈正常,再恢复提示动作。恢复不是连接标志变绿就立即补发断线期间的全部提醒,因为过时事件可能已经失去现场意义。
用时间、状态和动作降级处理现场变化
12.6 延迟和设备状态会改变事件顺序
从物理变化到传感器读数、模型计算、命令发送、设备动作和反馈返回都需要时间。延迟(Latency)是事件发生与系统完成某一处理之间的时间差。日志至少区分event_time和received_time;只有接收时间时,迟到数据会被误认为刚刚发生。
网络或设备缓冲可能使样本乱序。时间戳1000毫秒的高值若在时间戳1400毫秒的低值之后到达,系统不能简单按到达顺序重新触发旧提醒。第二版先按事件ID和时间戳检查新旧,超过允许窗口的样本只记录为迟到,不进入动作判断。
设备状态也要进入控制条件。本章使用online、busy、offline、fault四种状态。在线才允许发送;忙时进入队列但不得无限堆积;离线时降级为屏幕提示;故障时停止设备动作并要求检查。状态未知不能默认当作在线。
去抖和冷却处理不同问题。去抖要求连续三次达到阈值才确认事件,减少瞬时噪声;冷却规定提醒后1500毫秒内不再次触发,减少持续信号重复提醒。冷却过长会漏掉新的真实事件,因此要用分开的两次纸卡事件进行边界测试。
下面是一条v2现场事件日志。它同时记录信号发生、系统接收、判断、命令、设备确认和环境反馈,便于区分“算法慢”“通信迟到”和“设备没有动作”。
{
"event_id": "EV-0142",
"source": "sim-camera-01",
"event_time_ms": 8200,
"received_time_ms": 8310,
"samples": [72, 75, 78],
"decision": {
"threshold": 70,
"confirm_count": 3,
"cooldown_remaining_ms": 0,
"risk_flag": "none",
"level": "L2"
},
"device": {
"id": "indicator-01",
"state_before": "online",
"command": "light:on:800ms",
"accepted_time_ms": 8360
},
"feedback": {
"observed": true,
"observed_time_ms": 8420,
"state_after": "off"
},
"result": "confirmed"
}
received_time-event_time=110毫秒,表示从事件时间到系统接收的差,不包括后续判断与执行。设备在8360毫秒接受命令,反馈在8420毫秒观察到,总链路不同阶段可以分别计算。若只记录最终8420,就无法知道延迟来自采集、传输、程序还是设备。
三次样本都达到阈值,因此通过连续确认;cooldown_remaining_ms为0,说明没有被旧提醒抑制;risk_flag没有人员误入,允许进入L2。设备动作后状态回到off,符合短促提示和默认安全状态。日志没有保存图像原帧,因为复现这一控制判断只需事件编号、分数、时间和风险标记。
再看一种反馈缺失记录:命令已接受,observed:false,到达反馈超时。系统应把结果写成feedback-missing并退到L1,不应直接把accepted_time当作灯已亮的证明。若允许一次重试,日志还要增加attempt:2并关联同一事件ID,不能把重试统计为第二次现场事件。
现场日志的时间基准也要一致。两台设备的时钟若相差几秒,即使各自记录很精确,合并后仍可能倒序。真实系统需要同步时钟、记录精度和误差范围;教学页使用同一个模拟时钟,仍专门保留乱序事件,训练学生不把数组位置当事件先后。
事件队列要限制长度与过期时间。设备忙时,新事件可以短暂排队;超过现场有效窗口后只记录而不执行。若断线三分钟后把所有旧提醒一次性播放,技术上“没有丢数据”,现场行为却可能失去意义。是否补发要由任务规则决定,而不是一律追求全部执行。
下面的判定表把时间与动作联系起来:
| 现场证据 | 设备状态 | 时间条件 | 最高动作 |
|---|---|---|---|
| 单次高值 | 在线 | 未确认连续性 | L1屏幕提示 |
| 连续三次高值 | 在线 | 不在冷却期 | L2灯光/短音 |
| 连续高值 | 忙 | 未过期 | 排队并保持L1 |
| 任意信号 | 离线或故障 | 任意 | L0记录,不发设备命令 |
| 人员误入风险 | 任意 | 任意 | L0/L1,停止摄像保存 |
| 迟到或乱序信号 | 在线 | 超过允许窗口 | L0记录并标记过期 |
这个表不是从分数直接跳到动作,而是同时检查证据、设备与时间。新增设备时要重新评估动作影响,不能因为接口名称相同就沿用L2授权。例如light:on与motor:on都可以写成字符串,物理后果完全不同。
12.7 动作降级按证据和风险限制影响
动作降级(Action Degradation)是在输入、设备或反馈不可靠时,把系统动作切换到影响更小、容易恢复的级别。现场助手的四级策略为:L0静默记录,L1屏幕提示,L2低压灯光或短促提示音,L3高影响动作必须人工确认且本章不自动执行。
连续三次分数达到70、设备在线、距离上次提醒超过1500毫秒且没有人员误入标记时,可以进入L2。只有一次高值时保持L0或L1;设备离线、反馈缺失、时间戳过旧或人员误入时退到L0/L1。降级不是把阈值统一调高,而是根据证据质量和动作后果选择输出。
人员误入场景用于说明视觉边界。页面只使用一个布尔风险标记,不进行人脸识别、身份判断或情绪分析;一旦画面可能包含人员,摄像头扩展应停止保存,系统降级为屏幕提示。能检测信号卡,不代表有权分析背景中的人。
默认安全状态要在断电、断连和程序重启时成立。本章规定指示灯和提示音默认关闭,待处理队列不在恢复后自动补发,未知设备状态不执行动作。对于不同设备,安全状态可能不同,必须由具体场景负责人确认,不能把“关闭”机械套用到所有工业系统。
动作级别还要防止被不同模块相互抬高。视觉模块只应提交“检测分数和区域”,不能直接要求扬声器播放;控制模块根据时间、设备和风险选择最高允许级别;执行模块再检查本设备授权。即使资料问答或智能体在文本中写“立即响铃”,也不能越过这三层接口。把权限落实到程序边界,比在提示词中反复写“注意安全”更可靠。
使用者应能看懂为什么动作被降级。页面至少显示原始分数、连续确认次数、冷却剩余、设备状态和风险标记。例如“L2→L1:设备离线”比“系统谨慎处理”更可操作。解释也要避免暴露无关原始画面和设备内部信息,在可复核与数据最小化之间取得平衡。
12.8 模拟通过后还要验证实机差异
模拟可以稳定重放噪声、延迟、断连和乱序,便于比较版本;实机则会加入接线、电源、设备精度、安装角度、驱动、操作系统权限和现场人员等条件。模拟与实机不是相互替代,而是先在低风险环境验证逻辑,再在受控现场检查新增差异。
有普通摄像头的组只拍打印信号卡,网页由用户点击后申请权限,画面默认不保存、不上传,结束后停止视频轨道;有教学开发板的组按设备说明连接低压LED或蜂鸣器,由指导人员检查接线。没有设备的组使用内置序列完成全部测试,并在对照表中把实机项标为“未实施”,不能伪造记录。
对照表至少包含输入来源、采样间隔、阈值、确认次数、触发时间、设备动作、反馈时间、误报/漏报和现场差异。若实机结果不一致,先检查时间、单位、连接和状态,再判断是否要改控制逻辑;不要看到一次成功就覆盖模拟中的失败证据。
一次实机成功也不能代表系统已经适合长期运行。连续运行会暴露温度变化、电量下降、连接重建和日志累积等新问题,换一个安装位置还会改变传感范围。课堂验证的是一组明确条件下的功能与安全边界,不是给设备签发永久合格证明。模块说明卡应写出测试持续时间、设备型号或模拟版本、未覆盖条件和下次复测触发条件,让后续使用者知道结论可以用到哪里。
实机测试还要写明停止条件和观察区域。第一次只运行短序列,由一人操作、一人随时断开输出、一人记录,确认默认状态和反馈有效后再增加变化。现场有人进入、线缆松动、设备发热或输出无法停止时,立即终止并保存当时状态,不以完成演示为由继续。
完成第二版并形成部署边界
第二版先检查设备状态和时间戳,再对信号做三次连续确认。事件成立后,根据风险选择动作级别;L2动作前检查1500毫秒冷却,发送后等待设备确认和环境反馈。任一步超时、断连、乱序或反馈缺失,停止升级并记录明确状态。
运行16项开发测试,目标16/16符合期望。随后锁定阈值70、连续3次、冷却1500毫秒和设备状态规则,运行8项最终测试。B08包含时间戳乱序与恢复交错,当前简单排序器仍可能把迟到高值认作新事件;保留这项失败,并提出事件序号、允许迟到窗口和去重表三项修订。
将现场助手加入班级AI系统主页,版本v6.0。说明卡写明输入只是教学信号分数,默认模拟模式,摄像头和开发板均可选,动作最高到低压提示,设备断开时降级。不得写“自动监控人员”“控制现场设备”或“识别准确率100%”。
90秒展示包含稳定成功、噪声去抖、断连降级、反馈缺失停止和B08乱序失败。若开展实机扩展,还要展示关闭权限、停止设备和恢复默认状态,不把现场效果替代测试证据。
安全与责任
传感和执行把系统带入物理环境。摄像头可能采集人脸、工牌和位置,声音会影响周围人员,错误电路还可能损坏设备。课堂优先模拟,实机只接低风险、低压、可立即关闭的教学设备,并由使用者主动授权。
数据员对传感来源与时间负责,逻辑员对阈值和状态负责,设备员对接线、反馈与安全状态负责,发布者对部署范围负责。系统无法确认现场结果时必须说“不确定”,人应能够随时停止并恢复到安全状态。
本章小结
传感器把物理量或事件转换为系统可读取信号,读数受到噪声、量程、采样和故障影响。执行器把控制信号变成光、声或运动,命令发送不等于现场动作完成。反馈把动作结果重新送回判断,使系统能够确认、修正或停止。
事件、采样、延迟、时间戳和设备状态决定输入怎样进入控制程序。去抖减少瞬时噪声,冷却减少持续信号重复触发;断连、反馈缺失和人员误入应触发动作降级。默认安全状态必须在未知和故障条件下成立。
现场助手v6.0先模拟、后可选实机,通过三次确认、1500毫秒冷却、反馈回读和四级动作限制现场影响。下一章将把字符、规则、模型、语言、视觉、生成、资料、工具、智能体、工作流和设备模块集成为完整作品。
习题
基础题
- 分别解释传感器、执行器、反馈和动作降级,并用本章系统连接四者。
- 为什么传感器读数不是现场事实本身?列出四项可能影响读数的条件。
- 区分事件与采样。按住按钮一秒产生十个高值,通常应算几个按下事件?
- 命令状态、设备确认和环境反馈分别说明什么?
应用题
- 信号序列
68,72,69,73,74,75进入阈值70、连续3次确认的系统,何时形成事件?若冷却1500毫秒,应记录哪些时间? - 设备返回“已接收”,光照反馈没有变化。设计状态、动作降级、重试上限和人工提示。
- 一个高值事件迟到2秒,在新低值之后到达。说明事件时间、接收时间、窗口和去重怎样共同处理。
探究题
- 【选做】为低压指示灯或屏幕提示设计模拟/实机对照表,列出三项模拟无法覆盖的现场差异。
本章交付物
1. 现场助手与证据
- 现场助手v6.0的v1/v2版本和信号流程图。
- 16项开发测试、8项最终测试和B08乱序失败。
- 一条重复触发或误触发复盘记录。
- 四级动作降级表、设备状态表和默认安全状态。
- 一条命令—确认—环境反馈证据链。
- 模拟/实机对照表;未实施实机时如实标注。
- 模块说明卡和90秒展示记录。
2. 自评单
- [ ] 我没有把传感器读数直接写成现实事实。
- [ ] 我能区分采样值、事件、命令、设备确认和反馈。
- [ ] 去抖与冷却分别解决不同问题,并做过边界测试。
- [ ] 设备离线、故障、反馈缺失和人员误入都会降级。
- [ ] 默认安全状态明确,使用者可以停止并恢复。
- [ ] 我没有伪造实机记录,也没有采集无关人员信息。
- [ ] 我能说明模拟通过后仍需检查哪些现场差异。