制作一个3D打印气体泄漏监测装置
我们大多数人对室内呼吸的气体情况一无所知。厨房燃气调节器缓慢泄漏液化石油气,故障燃烧器突然释放一氧化碳,或是油漆、清洁喷雾和通风不良导致空气浑浊、挥发性有机物(VOC)浓度过高——这些情况都看不见,也未发出警告,直到问题严重才被察觉。
我想要一个小型设备,能同时完成两项功能:
•作为气体泄漏报警器——检测可燃性和有毒气体(如液化石油气/丙烷、甲烷/天然气、一氧化碳),一旦浓度超过危险阈值,立即发出警报提醒。
•作为空气质量监测站——持续报告空气质量指数、二氧化碳浓度以及总挥发性有机物含量,让我清楚知道房间何时需要通风。
最重要的是,它必须在我不看的时候也能通知我。如果我在另一个房间或外出,仅靠蜂鸣声是毫无用处的。因此,整个装置通过Wi-Fi连接T***gram:当检测到泄漏时,会向我的手机推送通知;当一切恢复正常时,则发送“安全无忧”的消息。
大脑是一款基于DFRobot Beetle ESP32-C6的设备——一块内置WiFi的硬币大小电路板,这正是实现手机提醒功能的关键。所有传感器均来自DFRobot的即插即用重力生态系统,因此整个构建过程无需焊接。为了将一堆裸露的PCB板变成你真正想放在架子上的实用设备,它被安置在JUSTWAY设计的一款精巧的3D打印蜂窝状房屋造型外壳内,其蜂窝式通风结构同时为传感器提供了完美的气流通道。
以下是制作方法:
主要功能(一目了然)
- 通过MEMS气体传感器持续监测CO、CH₄(甲烷)、LPG/丙烷等气体。
- 通过专用空气质量传感器持续监测AQI(1–5级)、eCO₂(ppm)和TVOC(ppb)。
- 在128×64 OLED屏幕上实时显示仪表盘,并配有醒目的“安全”、“警告”和“!警报!”提示横幅。
- 发现泄漏时,屏幕会倒置并闪烁,内置LED灯会闪烁,同时向你的手机推送包含精确读数的T***gram报警信息。
- 当空气质量恢复安全时,系统会发送“一切正常”的通知消息。
- 可独立运行,即使WiFi断开,本地警报仍可正常工作,仅跳过手机通知。
所需材料清单
硬件
•1× DFRobot Beetle ESP32-C6 — 微控制器,支持WiFi和蓝牙,体积小巧,配备USB-C接口。
•1× DFRobot Gravity MEMS气体传感器(MiCS-4514)——可检测CO、CH₄、LPG、C₂H₅OH、H₂、NH₃、NO₂,I²C接口。
•1× DFRobot Gravity ENS160空气质量传感器 — 用于测量AQI、eCO₂、TVOC,I²C接口。
•1× DFRobot Gravity OLED-2864显示屏(128×64,SSD1306)——仪表盘,I²C接口。
•1× Gravity I²C集线器/分线器(或短距离串联线缆)——将三个I²C设备连接至同一总线。
•Gravity四针线缆 — 每个传感器通常附带。
•1× USB-C数据线 + 5V电源/移动电源 — 供电与编程。
•1× JUSTWAY 3D打印外壳 — 此项目中展示的“小房子”造型。
软件与工具
•Arduino IDE(或arduino-cli)
•ESP32开发板支持(Espressif “esp32”核心)
•DFRobot库:DFRobot_MICS、DFRobot_ENS160
•Adafruit库:Adafruit_SSD1306、Adafruit_GFX
•T***gram账号 + @BotFather机器人
•3D打印机(或打印服务)用于制作外壳
为什么选择这些传感器?(两分钟入门说明)
理解两个气体传感器之间的区别是本项目最关键的概念——它们并非冗余,而是互补关系。
MiCS-4514(气体泄漏传感器)是一种MEMS金属氧化物传感器,包含两个加热的检测元件——氧化通道和还原通道。通过测量每个元件电阻的变化,其内置库可估算特定气体的浓度(ppm单位),包括一氧化碳、甲烷、液化石油气/丙烷、氢气、乙醇、氨气和二氧化氮。这是您的安全/泄漏传感器,它会回答:“当前是否存在危险浓度的特定气体?”
ENS160(空气质量传感器)是一款现代数字多气体传感器,内置独立算法,可输出单一的空气质量指数(1–5)、等效CO₂值以及总挥发性有机化合物(VOC)浓度。这是您的舒适/健康传感器,它会回答:“长期呼吸这种空气是否令人感到舒适且健康?”
将两者结合使用,您便拥有了一个小型住宅中兼具烟雾报警器式“立即撤离”提示与“打开窗户”提醒功能的系统。
需要了解的一点是:每次启动MiCS-4514时,都需要在洁净空气中进行约3分钟的预热。在此期间,传感器会测量并存储洁净空气下的基准值,之后的所有读数均以该基准为参考。因此,务必在通风良好的地方为设备通电,并让倒计时完成后再用气体进行测试。
第一步——打印外壳(JUSTWAY设计)
本项目所用的外壳是由JUSTWAY设计的一款3D打印“小房子”,正是这一设计使整个项目从面包板实验提升为一件成品。
有几个方面使得这个打印件非常适合用于气体/空气监测器——值得欣赏其设计意图:
•蜂窝式通风结构。
屋顶两侧斜面均布满六边形孔洞,这些孔洞不仅具有装饰作用,更是气流通道。外部空气(以及任何泄漏的气体)可自由穿过蜂窝结构,直达MiCS-4514和ENS160传感器表面。如果采用密封箱体,传感器将无法“呼吸”;而这种通风式屋顶设计让传感器得以持续“呼吸”。
•山墙窗设计。
房屋一端在山墙处开有一个小矩形窗户。在窗户后方安装OLED显示屏,实时读数便会像微小农舍的灯光般从其中亮起。
•圆形舷窗+缝隙。
正面设有一个圆形开口(便于让状态指示灯透过,或突出传感器面板),并配有细长缝隙,作为USB-C电源接口使用,非常实用。
•内部安装环。
内部打印包含圆柱形安装支架,位于搁板墙内,方便安装圆形模块,并防止堆叠时晃动。
•开放式底部。
整个机身可像钟楼一样轻松拆卸,您可将其盖在电子设备上,随时取下进行重置或重新布线。
打印参数建议:
•材料:PLA(若放置于温暖环境,可选用PETG)
•层高:0.2毫米
•墙壁/边框:3
•填充率:15–20%
•支撑结构:通常无需支撑——蜂窝桥接即可;仅在打印窗口悬空部分较难时,才添加少量支撑
•方向:打印房屋时保持竖直(朝下为开放面),以获得最干净的通风孔
照片中呈现的奶油色与白色双色效果,是由于打印过程中在某一层高度处简单更换了线材(即“颜色交换”)。完全可选,但效果非常出色。
提示:不要用胶带、贴纸或油漆覆盖蜂窝式通风口。保持其完全暴露,以便传感器能快速检测到泄漏。
第二步 — 线路连接(无需焊接)
此处所有电路板均支持I²C协议,而I²C是一种总线系统,所有设备共享相同的四条线路(SDA、SCL、VCC/3V3、GND),并通过唯一地址进行区分。这意味着你可以通过Gravity I²C集线器,将三个模块全部连接至Beetle单个I²C总线上(或使用分线电缆连接Gravity接口)。
将所有设备并联连接至Beetle ESP32-C6的I²C引脚:
•SDA → Beetle SDA(默认线)→ OLED + ENS160 + MiCS上的SDA
•SCL → Beetle SCL(默认线)→ OLED + ENS160 + MiCS上的SCL
•3V3 → Beetle 3V3 → 所有模块上的VCC
•GND → Beetle GND → 所有模块的 GND
每个设备都位于自己的地址,因此不会发生冲突:
•OLED-2864(SSD1306):0x3C
ENS160 空气质量:0x53
•MiCS-4514 气体传感器:0x75
在继续之前进行一次检查:上传一个简单的 I²C 扫描程序,并确认串口监视器中显示的是 0x3C、0x53 和 0x75。如果其中缺少一项,几乎总是由于重力线缆松动所致——请重新插好。确保这三个值都能正确显示,可以大大避免后续的调试麻烦。
关于电源:MiCS-4514 内部带有加热元件,会消耗较多电流。请使用可靠的 USB-C 电源或移动电源为 Beetle 提电,并使用符合标准的数据质量 USB 数据线。使用过细的充电线可能会导致电压下降,使电路随机断开连接。
第三步 — 设置软件环境
•安装 Arduino IDE。
•通过“工具”→“管理板”添加 ESP32 支持(Espressif 的 “esp32” 核心)。
•选择“DFRobot Beetle ESP32-C6”板卡并设置正确的 COM 端口。
•从库管理器(或 DFRobot 的 GitHub)安装以下库:DFRobot_MICS、DFRobot_ENS160、Adafruit SSD1306、Adafruit GFX。
两个重要且实用的设置,可为你节省大量时间:
•启用“USB CDC 启动时开启”。在 Beetle ESP32-C6 上,除非在板子菜单中开启 USB 串口(工具 → 启动时启用 USB CDC → 开启),否则串口监视器不会通过 USB 显示。如果希望在调试时查看数据滚动显示,请现在进行此操作。
•DFRobot_MICS 库有一个小问题,会导致它无法在 ESP32-C6 上直接编译(因为它引用了一个 C6 核心未定义的模拟引脚名称)。解决方法是在库头文件顶部添加一行保护代码——如果你遇到提示 A0 的编译错误,那这个就是问题所在。
步骤 4 — 按照固件刷入设备
完整的固件文件位于代码部分,名为 GasAirMonitor.ino。你不需要理解每一行代码,但顶部有一段必须自行修改的内容,上传前需进行个性化设置。这部分包含你的 WiFi 和 T***gram 帐户信息:
你也可以在这里调整报警灵敏度——CO 和甲烷的阈值,以及被定义为“差”的 AQI 等级,这些都位于代码顶部的简单 #define 定义中。默认设置对家庭环境来说是合理的:
•一氧化碳 (CO) — 警告:35 ppm,报警:100 ppm
•甲烷 (CH₄) — 警告:1000 ppm,报警:5000 ppm(约 10% LEL)
•液化石油气 / 丙烷 — 报警:已检测到
•空气质量指数 — 警告:AQI ≥ 4
填写你的 WiFi 和 T***gram 信息(下一步会自动获取 T***gram 的配置),然后点击上传即可。至此,代码部分就完全由你自主完成。
步骤 5 — 创建你的 T***gram 机器人并开启警报通知
这正是让项目感觉神奇的部分——手机上会收到一条真正的推送通知,耗时大约三分钟。
创建一个机器人。在 Telegram 中搜索 @BotFather,开启聊天,然后发送 /newbot。按照提示操作(给它起个名字和用户名)。BotFather 会回复一个类似 123456789:AAE.... 的机器人令牌,将其复制到 TG_TOKEN 中。
向你的机器人打招呼。打开新创建的机器人并发送任意消息(例如“hi”)。机器人在你主动发消息之前无法先给你发消息——这一步就是“打开大门”。
查找你的聊天 ID。最简单的方法是:发送消息给 @userinfobot,它会立即回复你的数字ID。将这个号码复制到 TG_CHAT_ID 中。(或者你可以从机器人的 getUpdates API 端点读取该值。)
重新上传草图,并填写好全部四个数值。
现在,当设备启动并连接到 Wi-Fi 的那一刻,你会收到一条友好的“Gas + Air 监测器上线”提示。这条确认信息证明了整个 Wi-Fi → Telegram 的数据传输流程已经正常运行——甚至还没测试过单个气体数据。
想要将提醒信息放在群聊中而不是私聊?只需将机器人加入群组,然后使用该群组的聊天 ID(它会是一个负数)。小组中的每个人都会收到泄漏警报。
步骤6 — 首次开机与预热
将设备放置在空气清新、干净的地方,并通过USB-C供电。此时你会看到以下内容:
短暂的启动界面,随后显示“正在连接WiFi...”,连接成功后显示本地IP地址。
手机会震动,提示“监控在线”的T***gram消息。
OLED屏幕上会出现3分钟的预热倒计时(MICS预热 02:59……)。这是MiCS-4514建立洁净空气基准值的过程,请等待其完成。在此期间,设备内置LED灯会缓慢闪烁。
当倒计时归零时,显示屏切换至实时仪表盘。
仪表盘可一目了然地显示以下信息:
顶部:空气质量指数(AQI),附带“良好”或“中等”等描述词,以及eCO₂和TVOC浓度。
•中间:CO和CH4浓度(ppm)及是否检测到液化石油气(LPG)。
•底部:醒目的状态横幅——安全(SAFE)、警告(WARNING)或!警报!(! ALARM !)。
在洁净室内空气中,气体数值应显示为0,eCO₂接近约400–500 ppm(新鲜空气基准值),TVOC含量较低,且安全状态横幅显示为明亮的绿色。
步骤7 — 安全测试泄漏检测功能
现在是让设备发出声音的时候了。最安全的家庭方式是使用未点燃的打火机来触发可燃气体通道:
将设备预热并显示为“安全”状态后,将未点燃的打火机靠近蜂窝状通风口,按燃气按钮几秒钟,释放一小股丁烷/液化石油气(切勿点燃,并在远离火焰的通风良好区域进行操作)。
一两秒内,LPG 信号灯会变为“是”,横幅跳转至“!警报!”,OLED 显示屏将倒置并闪烁,LED 灯将快速闪烁。
你的手机震动:“燃气警报:液化石油气泄漏!”并附有实时读数。
移开打火机,让新鲜空气进入通风口。一旦气体浓度下降,警示横幅将恢复为“安全”,你也会收到“全部清空”的提示信息。
为了避免垃圾信息,当泄漏持续存在时,重复的提醒会被限速(每分钟约一条消息),你会立即收到通知,然后被提醒,而不会导致手机过热。
如果在测试过程中泄漏未如预期容易触发,你可以自行降低示意图顶部的气体阈值。只需重新启动并再次尝试即可。
步骤8 — 最终组装
将OLED显示屏安装在山墙窗后,确保外部可清晰看到读数。
将MiCS和ENS160传感器放置在蜂窝屋顶下方,使它们的感应面能获得最大气流。保持通风口畅通无阻。
将USB-C数据线从前面的缝隙/窗口处引出以供电。
整理好Gravity电缆,确保没有堵塞任何通风口,然后将JUSTWAY房屋整体盖上整个堆叠结构。
完成!你现在拥有一座可爱的小屋,安静地守护着你的空气。
总结
对于一个无需焊接的下午DIY项目来说,这款产品物超所值:它是一款真正的多功能安全报警器和空气质量监测站,通过T***gram可随时随地与你联系,再加上JUSTWAY外壳的设计,看起来就像一件你愿意放在厨房台面上的设备。Beetle ESP32-C6内置的WiFi功能将所有这些特性连接在一起,把一叠传感器变成了守护你呼吸空气的智能守护者。
本文编译自hackster.io





