当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]专为 Home Assistant 设计的本地 CO₂ 监测设备,外观不似传统测量仪器。LED 通过水晶扩散板发光,并随 ppm 值变化颜色;该设备还可作为原生的 Home Assistant 媒体播放器使用,可将通知内容大声朗读出来。无需云端、无需订阅、无需焊接。

专为 Home Assistant 设计的本地 CO₂ 监测设备,外观不似传统测量仪器。LED 通过水晶扩散板发光,并随 ppm 值变化颜色;该设备还可作为原生的 Home Assistant 媒体播放器使用,可将通知内容大声朗读出来。无需云端、无需订阅、无需焊接。

我坚持遵守的三大原则

1. 无需焊接。如果我的两个儿子(10岁和13岁)无法完成组装,这个项目就失败了。因此它使用M5Stack AtomS3 Lite板:带Grove接口、内置按钮和RGB LED、USB-C接口,所有部件都能直接连接。

2. 真实CO₂,非估算值。Sensirion SCD40 — 真实的非分散红外(NDIR)测量。如果数值不可靠,则颜色也不可靠。

3. 它必须看起来像是一件属于客厅的物品,而不是“放在架子上的Arduino项目”。一个实实在在的物体。

我为什么要制作它

这并不是一个电子小玩意的想法。而是我孩子们卧室的状况——那是在十一月。

早上房间里的空气明显很糟糕,那种沉重、难闻的感觉,你很难用语言形容。于是,我搭建了一个简易的二氧化碳记录仪,并让它整夜运行。到了早晨,浓度已经超过了2000 ppm。每晚,都在我的两个儿子睡觉的房间里。

而这里有一个成年人容易忽略的事实:孩子不会打开窗户。而成年人走进闷热的房间时,会本能地打开一扇窗。而十岁的孩子在玩耍、做作业、睡觉时,从不考虑空气问题。

我也学到了一点改变了设计的东西:在我夜间测试中发现,把窗户稍微倾斜打开,二氧化碳浓度几乎没变化;但真正让浓度大幅上升的是将窗户完全打开几分钟。

所以问题从来不是“二氧化碳浓度是多少”,而是:“现在是时候打开窗户了吗?以及要开多久?” 这是一个孩子可以回答的问题——如果答案是颜色,而不是数字的话。

绿色表示正常。红色表示该打开窗户。

为什么选择自己动手而非购买

便宜的传感器大多报告的是eCO₂值,这是根据挥发性有机物(VOC)读数计算得出的,而非直接测量。适合潮流,但对“现在要不要通风”来说毫无用处。

像Aranet4这样的好产品使用真正的NDIR传感器,可独立运行。它们是出色的设备——但本质上仍是专用的测量装置。

大多数联网型产品需要云账户,而数据根本不会离开我的家。

几乎没有任何一个能说话,也几乎不会像你放在孩子卧室书架上的东西那样。

外壳:15次迭代,五轮战斗,仅靠一个按钮

V0时,桌上放着一台Atom和一个SCD40,电线到处都是。完美工作,看起来就像犯罪现场。

V1——我父亲,一位退休的机械工程师,一生致力于设计工业机械,却一直无法放下它。他做了一个真正的盒子。功能实用,结构坚固……而且就是一个盒子。

V2——一次散步时,我突然想到:让它成为人们真正想要的东西。第一次尝试是一个顶部印有竹节的花盆。更好了,但死了。它需要点活的东西。

V3——然后我发现了空气植物——提兰斯利亚(Tillandsia)。无需土壤,不弄脏,通过叶片吸收水分。突然间,这个植物有了灵魂。我哥哥设计的多边形外壳,在第四次重大迭代后终于完成。

然后,真正的乐趣开始了:将硬件安装进去。传感器和Atom部分很简单,但按钮却是个难题。

它必须与几何形状的外壳齐平,让LED灯透出光来,同时还要物理地按压Atom下方的按钮。一共尝试了五个版本,涉及多种机械结构。最终成功的是:用圆珠笔的弹簧改造而成,这样按钮能自动回弹。便宜、丑陋中带着巧妙,完美无缺。

然而,之后完全停止了按压。原因在于我们把Atom装得更高一些——部分是为了美观,部分是为了避免热量直接接触传感器——结果在手指施力时,Atom本身在支架内发生了弯曲。刚硬到看起来没问题,又足够有弹性以承受按压。这又花了一轮时间才解决。

总计:15个已打印并测试过的STL模型。

固件:共57个版本,主要是因为一些我无法预料的问题。

CO₂模块很早就完成了。其余所有内容都是通过实际使用设备逐步摸索出来的。

那个导致植物死亡的浇水追踪器。我加了一个计数器,记录上次浇水以来的天数——双击按钮重置,滑块设置间隔时间。为了测试,我设为两天,以免等待太久。但两天并不是合适的间隔时间。第一株提兰斯利亚腐烂了。现在说明书建议根据您家中的环境,使用5到14天。

亮度问题,以及为何23%是地板亮度。分别设置白天和夜晚的亮度滑块,解决了“夜间LED太亮”的问题——接着我注意到,在黑暗中颜色变得不准确。当亮度低于约23%时,警告色就无法区分彼此。所以现在这个数值就是最低标准。低于这个值,设备就会欺骗你。

“那是什么闪烁的?!”——我妻子在夜里这么说。夜间调光效果非常出色,随后蓝色的水波脉冲照亮了整个房间,全神贯注地亮起。夜间时,浇水提醒功能被抑制,直到早晨才会恢复,亮度与夜晚相匹配。

在网路上发现它。四次点击后,设备会以彩色方式闪烁其最后一个IP字节:绿色表示百位,橙色表示十位,蓝色表示个位,白色则作为开头和结尾闪烁。无需应用、无需路由器登录,也无需扫描仪。

让它发声。长按可获取气候报告:LED灯颜色显示温度,配合MAX98357A放大器和小型扬声器,通过Home Assistant语音合成(TTS)将数值大声朗读出来。诚然有个限制:语音功能需要依赖HA。音频信号由HA的media_player端驱动;Atom上完全独立运行语音功能对我来说太过困难。对于HA用户而言,音频是额外功能,而非基础配置。

温度读数过高。SCD40安装在一个机箱内,旁边有正在运行的电子设备,且会自动加热。与参考温度计对比测量后,我的设备需要6°C的校正值——因此采用的是用户可调节滑块,而非硬编码数值,并且需要重启才能完全生效。

Magenta 表示无 Wi-Fi。当路由器连接断开时,LED 会闪烁为洋红色,一旦恢复连接即停止。

实际测试

四个家庭——邻居和家人。他们的反馈彻底改写了说明书。

一位邻居的家人按照我最初的书面说明搭建了设备,并将其拆解得非常彻底,我们随后共同重新组装成图文指南:他们遇到的每一个问题,我们都加以简化。如今他9岁的孩子已经问我这些设备何时能上市出售。这或许是对整个项目最好的验证。

接线

所有部件均可直接插接,此款设备没有任何焊接操作。

SCD40(CO₂、温度、湿度)——通过标准 Grove 线缆连接至 AtomS3 Lite 的 Grove 接口。I2C:SDA 连接到 GPIO 1,SCL 连接到 GPIO 2。

MAX98357A 放大器 + 音响(可选)——这是唯一需要单独电线的部件,使用杜邦跳线连接到 Atom 的引脚:

•BCLK → GPIO 5

•LRCLK(WS)→ GPIO 6

•DIN → GPIO 7

•VIN → 5V,GND → GND

•音响连接至放大器的输出端子

其余所有组件均集成在电路板上:RGB LED(GPIO 35)和按钮(GPIO 41)都内置在 AtomS3 Lite 中——这正是它成为本项目基础的原因所在。

组装顺序很重要:将传感器安装在机箱底部,Atom 安装在较高位置,以避免热量直接作用于传感器。完整的组装图示及说明请参见附带的手册。

软件设置

1. 准备Atom。在Chrome或Edge浏览器中访问web.esphome.io,使用数据USB线连接Atom,点击“连接”→“首次使用准备”→“安装”。

2. 刷写固件。点击“安装”,然后选择.bin文件(可选语言版本:英文/德文/斯洛伐克语/西班牙语)。等待完成后,拔下电源线,重新插上电源,并等待两分钟启动。

3. 连接Wi-Fi。使用手机或笔记本电脑接入“murCO Planter Setup”网络,打开192.168.4.1,选择您的家庭网络并输入密码。

4. 在 Home Assistant 中启用。HA 会通过 ESPHome 自动发现设备,无需额外插件。当提示时输入加密密钥,所有实体(CO₂、温度、湿度、媒体播放器、浇水追踪器、亮度和阈值控制)都会显示。

即使没有 Home Assistant,它也能独立运行:内置的网页界面可提供实时读数和完整配置。

我给任何使用 SCD40 的人建议:

它会在外壳内自动加热,温度通常比环境高出约 3–6°C,因此请将偏移量设置为可配置项,而非硬编码。

切勿在室内强制校准。将其带出室外,静置 10 分钟以上,再校准至大约 420 ppm。室内仅校准一次,之后每次读数都会出错。

如果您的 LED 具有多种用途——空气质量监测、警报、提醒功能——其状态机最终会自行调用自身。在 ESPHome 中,模式设置为“脚本重启”能保护我的理智。

AtomS3 上使用外部 DAC 的 I2S 接口:BCLK 5,LRCLK 6,DOUT 7,单声道。MAX98357A 可靠工作。

亮度低于约 23% 时,颜色将不再显示为警告信息。请在黑暗房间中测试配色方案,而不是放在办公桌上。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭