湿度为什么总是高十个点:大金传感器的同位对表
先有读数,才有资格谈准不准
这台大金空气传感器的温湿度,一度根本读不出来。芯片明明在总线上应答,正式版固件却恒报「未检测到」。逐行比对才定案:这颗温湿度芯片上电默认是顺序测量模式——一次触发后温、湿两路先后转换,要等满十几毫秒一次读回;旧驱动按「分开读」的时序去取,转换没完就伸手,被芯片直接拒绝,读一辈子也读不到。2.2.4 对齐时序,温湿度回归。
然后新问题来了:湿度显示 79.5%,同屋的 HomePod 说 70%。
系数是继承来的,从没对过表
显示值不是原始值:固件里有一组校准参数——温度偏移 −6.0°C、湿度倍率 ×1.4。这组数是随上游开源驱动一起继承的出厂参数,在别人家的硬件上或许成立,在本机、这个房间里,从没跟任何参照对过表。湿度被 ×1.4 放大,高出近十个点毫不奇怪。
对表:把传感器搬到参照旁边
土办法最可靠:把大金挪到 HomePod mini 旁边贴放,同位同环境,等读数稳定:
- HomePod:19.5°C / 73%
- 大金显示:18.7°C / 82.7%(温度低 0.8°,湿度高 9.7 个点)
再加上此前另一个房间的一组数据(同屋 70% 对 79.5%),两个房间独立反推湿度倍率:1.237 与 1.235——高度吻合,这不是巧合,是系数本身错了。定版:湿度倍率 ×1.24,温度偏移 −5.2°C。
落地与验收(2.2.5)
- 新参数成为默认值;
- 校准搬进网页后台,用户可调、存设备本地、保存后 5 秒内生效、免重启——下回换房间不用再刷固件;
- 网页、HomeKit、历史曲线、导出数据同源一个作用点,不会出现两处读数打架。
复验:与同位参照偏差温度 0~+0.1°、湿度 −1.0 个点(校准前是 −0.8° / +9.7 点)。结案。
尾巴:给固件加功能之前,先学会瘦身
这类单片机固件有个体积红线:应用分区上限 1,835,008 B。2.2.5 做完,余量只剩 64 B。后来每个新功能——补徽章、补曲线、挪端口——都得先在包里等效瘦身腾出字节,才有资格谈实现。约束先行,是这台小设备教的规矩。