校园科普教具《戒烟神盒》
作品说明
一、背景分析与设计要求
摘要:吸烟有害健康,很多人不能做到自觉戒烟。本作品面向办公室场景,用 MQ-7 一氧化碳传感器自动检测烟气浓度:按键启动检测,当一氧化碳浓度超过设定阈值时,蜂鸣器鸣响警示,两路 L9110 风扇同时把烟气吸入集气罐,由罐内棉花吸附焦油。外观做成肺形透窗的红色面壳——时间久了,罐内棉花发黄粘油,对吸烟者形成具体、形象的警示,从而缓解同事间反复提醒的尴尬,帮助吸烟者控制吸烟量、逐步戒烟。
关键词:吸烟;一氧化碳(CO);MQ-7 传感器;警示戒烟;集气罐
1.1 项目背景
据论文引用的统计资料,截至 2015 年全球吸烟人数已达约 9.33 亿,约占全球总人口(70 亿)的 13.3%,吸烟人群大多集中在发展中国家;人们把每年 5 月 31 日设为世界无烟日,以此呼吁戒烟。吸烟过程会产生醛类、尼古丁、致癌物、氰化物、一氧化碳等有害物质,可导致慢性支气管炎、肺气肿、肺癌等呼吸系统疾病,以及冠心病等心血管损害;长期处于二手烟环境中的家人同样容易患上这些疾病。
作者在日常生活中发现,长期坐办公室工作的人群吸烟较为严重,而同事之间反复口头提醒既尴尬又难坚持——「能不能让机器代替人来提醒?」这就是《戒烟神盒》的出发点。
为了解身边人群的吸烟与戒烟意愿,作者用问卷星设计并发布了 4 道题的问卷调查,共回收 100 份有效答卷:成年人 54 人(54%)、未成年人 46 人(46%);本人吸烟的仅 10 人(10%);约九成家庭中有家人吸烟;88 人希望自己或家人戒烟。调查说明戒烟是大多数人的真实愿望,「机器自动警示」有现实需求。

图 1-1 问卷调查结果汇总(问卷星,n=100):①是否成年 ②是否吸烟 ③家中有几人吸烟 ④是否希望自己或家人戒烟
围绕「做出一台能自动警示的戒烟盒」,论文确立了四条活动目标:一是通过网络问卷调查了解吸烟家庭吸烟人数与戒烟欲望,用饼状图呈现数据;二是设计基本电路图、购买相关套件;三是通过互联网了解一氧化碳占烟气的比例、抽的烟数量与一氧化碳浓度的关系,用它来判断吸烟量,达到一定浓度即发出警告;四是制作草模、连接线路,用 Mind+ 编程并进行相关实验,检验能否达到效果。
问卷数据里还有一个值得注意的细节:100 个受访家庭中,吸烟人共 92 人,且大部分家庭是「家中一人吸烟」的格局——吸烟者往往不是受访者本人。这意味着戒烟这件事在家里常常是「一人吸烟、全家被动」:家人希望他戒,他自己却未必当回事。让机器出面提醒,恰好绕开了家人反复催促带来的对立情绪。
研究方法上,论文记载了三条路线的交叉验证:问卷调查法(问卷星制作发布,回收后统计分析家中吸烟人数与戒烟意愿)、真实例子采访调查(走访长期吸烟者,记录他们因长期吸烟产生的身体感受,与问卷数据互相印证)、模型制作(草图试验成功后用三维建模软件建模、加工成型,装入主板与传感器再试验,加以装饰得到成品)。
1.2 作品主体结构
先说检测原理。论文总结的实测规律是:一般来说,焦油含量高的卷烟,其烟气中一氧化碳的含量也大;而 CO 传感器对一氧化碳非常敏感。于是整台机器的警示链条设计为:吸烟者对盒呼烟 → 双风扇把烟气鼓入集气罐 → 罐内棉花吸附焦油、罐体聚积一氧化碳 → 罐内 CO 浓度升高 → 当 MQ-7 读数超过设定阈值时触发蜂鸣器报警,迫使吸烟者停止吸烟。论文还设想在作品表面加装显示屏,按浓度分三个等级显示相应警示文字,让警示「看得见、读得出」。
《戒烟神盒》由三部分组成:
- 电子检测部分——Arduino Nano V3.0 主控板插在 Nano 传感器扩展板上,外接 MQ-7 一氧化碳传感器(模拟输出)、按键、蜂鸣器模块和 LED 红灯模块;
- 集气部分——两个 L9110 风扇模块驱动的螺旋桨,把烟气经进气孔压入两个透明集气罐,罐内装有吸附焦油的棉花;
- 外观结构——红色面壳正面开肺形透窗,白色面板衬托肺形图案,底部由支架立起,摆在办公桌面上既是警示器也是摆件。
1.3 设计要求
1.3.1 功能要求
- 按下按键启动一次检测:读取 MQ-7 模拟值,浓度不超过阈值(100)时保持静默、各执行器全关;
- 浓度超过阈值 100 时进入警示循环:蜂鸣器响 1 秒停 1 秒重复 10 次,双风扇持续把烟气吸入集气罐,直到浓度回落到 100 及以下;
- 集气罐内棉花吸附焦油,日久发黄变脏,形成直观的「肺」警示;
- (升级设想)面壳加装显示屏,按浓度分三个等级显示相应警示文字。
1.3.2 工程实现要求
- 主控采用 Arduino Nano V3.0 + Nano 传感器扩展板,图形化编程(Mind+,Arduino C 模式);
- 结构与外观用 SketchUp 三维建模,导出正立面、侧立面、顶视图等图纸后加工板壳;
- 论文「活动研究方法」记载的成型方案为 3D 建模后 3D 打印,校本教材《GT创客空间创意智造》记载的工艺为 LaserMaker 激光切割,实物为红色板壳面罩(两种记载并存,以实物为准);
- 研究周期 2019 年 9 月 25 日 — 12 月 2 日,按「发现问题→查资料→问卷调查→设计方案→草模试验→外形制作→成品优化」七个过程推进。
参赛与获奖:本作品代表宁德市第五中学申报第 35 届福建省青少年科技创新大赛(2020 年),项目学科为工程学(EN),高中组个人项目,获省级三等奖;辅导教师邬肖英,辅导机构为宁德五中 GT 创客空间。
二、设计思维导图
下图整理了《戒烟神盒》的设计要点:从社会背景出发,围绕电子检测、声光警示、集气系统、外观设计四条技术线展开,最终落到「自动警示替代人工催促」的应用价值上。读图时可以顺着两条对角线看——左上「社会背景」到右下「应用价值」回答「为什么做」,右上「电子检测」到左下「外观设计」回答「怎么做」,中间的核心节点把六条支线拧成一句话:让一盒「肺」替所有关心他的人开口提醒。
社会背景全球吸烟约 9.33 亿人办公室二手烟与提醒尴尬电子检测Arduino Nano V3.0MQ-7 一氧化碳传感器声光警示蜂鸣器 D4 · LED D3按键触发 D11集气系统L9110 风扇 ×2集气罐 + 棉花吸附外观设计肺形透窗面壳SketchUp 建模 · 红色板壳应用价值自动警示替代催促办公室桌面摆件戒烟神盒CO 监测 · 声光警示双风扇集气图 2-1 《戒烟神盒》设计思维导图
三、硬件选用与连接
3.1 器材清单
先认识一下核心传感器。MQ-7 是一款半导体气敏传感器,敏感材料对一氧化碳特别敏感:空气中 CO 浓度变化时,传感器的电导率随之变化,模块把这一变化转成模拟电压从 AOut 引出——浓度越高、电压越高。把它接到 Arduino 的模拟输入口,用 analogRead() 就能读到 0~1023 的数值,超过阈值即认为烟气聚集。需要提醒的是,MQ-7 系列传感器按官方手册有加热/检测交替的时序要求,本作品作为教学演示装置采用简化的连续读数方式,读数用作相对比较(阈值 100),不做绝对浓度标定。
下表为制作本作品用到的器材(清单按论文「所需的实验配件清单」整理;论文写主控为 DFRduino UNO R3,而电路连接图与最终程序截图均为 Nano V3.0,判断早期试验用 UNO、最终定版为 Nano,正文按连接图与程序以 Nano 为准):
| 序号 | 器材 | 数量 | 作用 |
|---|---|---|---|
| 1 | Arduino Nano V3.0 开发板 | 1 | 主控,运行检测与警示程序 |
| 2 | Nano 传感器扩展板 | 1 | 把 Nano 的引脚引出成标准 3 排,方便接线供电 |
| 3 | MQ-7 一氧化碳传感器模块 | 1 | 感知烟气中 CO 浓度,模拟输出接 A0 |
| 4 | L9110 风扇模块 | 2 | 驱动螺旋桨,把烟气吸入集气罐 |
| 5 | LED 红灯模块 | 1 | 光警示(报警状态指示) |
| 6 | 蜂鸣器模块 | 1 | 声警示,响 1 秒停 1 秒 |
| 7 | 按键模块 | 1 | 触发一次检测 |
| 8 | 杜邦线 | 若干 | 连接各模块 |
| 9 | LCD1602 转接板含液晶屏 | 1(待选) | 按浓度分三级显示警示文字(设计中,未实装) |
3.2 Nano 与扩展板的安装
Nano V3.0 体积小、自带迷你 USB 口,直接插焊在扩展板中央的双排母上即可。扩展板把 Nano 的数字口、模拟口、串口和电源统一引成三排 2.54mm 间距的排针,每个引脚组都配齐「红(V)—黑(G)—绿(S)」三个针位,插接我们的数字传感器模块时不用另外搭面包板;板载电源插座与稳压电路支持直流适配器供电,正好对应论文「改用市电(变压 5V)供电」的优化方向。

图 3-1 将 Nano V3.0 开发板插入扩展板(安装示意;图源为扩展板商品资料,非本作品实拍)
3.3 电路连接
整机连接如下图:MQ-7 的模拟输出接 A0,按键接 D11,蜂鸣器接 D4,LED 红灯模块接 D3,两路 L9110 风扇模块分别由两组数字口驱动。连接图下方注明了三色线的通用接法:红线 V 端对接 VCC(或 +5V),黑线 G 端对接 GND,绿线 S 端对接 DIN(或 OUT)——本作品全部模块都遵循这一「红电源、黑地、绿信号」的接线惯例,插错概率大大降低。
装好后先做一次上电自检:插上 USB 电、按下按键,若此时正对盒口呼一口烟,正常表现应是蜂鸣器「响 1 秒、停 1 秒」地叫起来、两叶风扇同时转动;若读数明显低于阈值风扇却仍在转,或按键毫无反应,优先检查信号线是否插串了位、按键引脚是否接在 D11。

图 3-2 《戒烟神盒》电路连接图(Nano V3.0 + 扩展板)
3.4 引脚分配表
最终程序(见图 5-2)的引脚占用如下。需要说明:连接图上风扇模块一标注为「接 D7、D8」,而程序截图实际驱动的是 D8/D9——两处有一字之差,本文以程序源码为准并如实加注。另外按键模块接 D11 时,程序按「按下读数为 1」处理(高电平有效),复刻时若你的按键模块按下输出低电平,把判断条件反过来即可。
| 引脚 | 连接对象 | 方向 | 说明 |
|---|---|---|---|
| A0 | MQ-7 一氧化碳传感器(模拟输出) | 输入 | 读数 0~1023,阈值 100 |
| D11 | 按键模块 | 输入 | 按下为 1,触发一次检测 |
| D4 | 蜂鸣器模块 | 输出 | 报警时高电平响、低电平停 |
| D3 | LED 红灯模块 | 输出 | 程序中保持低电平(见 5.2 加注) |
| D8 / D9 | L9110 风扇模块 1(IA / IB) | 输出 | 8 高 9 低正转 |
| D5 / D6 | L9110 风扇模块 2(IA / IB) | 输出 | 5 高 6 低正转 |
四、结构安装与制作过程
4.1 外观设计
外观设计是本作品最用心的部分。作者先后画出多版方案草图,分析比较后确定最佳外形:一个立在桌面上的小盒子——面壳正面开肺形透窗,把「吸烟伤肺」的隐喻直接刻在产品上;整体为红色板壳、白色面板衬底,肺形透窗内恰好露出两个并排的透明集气罐罐身,两叶「肺」既是装饰又是功能件。顶部提手与底座支脚让它可以稳稳立在办公桌上,需要清理罐内棉花时提起提手即可开罐。
SketchUp 建模导出了完整的工程图:正立面(图 4-1)标注了面板区域尺寸(宽约 72mm、面板高约 45mm,顶部元件孔径约 32mm),顶部预留红色按键孔与圆形网孔作出风口;侧立面(图 4-2)可见底部支架缺口,盒子靠两只前伸的支脚立起、微微后仰,方便正对吸烟者;顶板视图(图 4-3)板厚约 22mm,均布进气孔阵列,两侧带提手孔。

图 4-1 正立面(SketchUp,含尺寸标注:顶部按键孔与圆形网孔)

图 4-2 侧立面(SketchUp,底部支架缺口)

图 4-3 顶板视图(SketchUp,板厚约 22mm,进气孔阵列与两侧提手孔)

图 4-4 桌面场景效果图(SketchUp):肺形面壳立在显示器旁
4.2 草模试验
外形定稿前,先用纸板搭出草模、装入主控板和传感器做试验。草模(图 4-5)里并排放两个透明集气罐,罐口各配一只风扇,罐内塞入棉花——这就是论文原理里「用直流电机制成的集气罐」。试验要回答两个关键问题:其一,风扇能否把呼出的烟气有效压入罐内、而不是从缝隙里散掉;其二,罐内聚集的烟气能否让 MQ-7 的读数快速爬过阈值。分析试验数据、解决草模暴露的问题(罐口密封、风扇朝向等)并达到预期目标后,才进入外形制作。

图 4-5 纸板草模:双集气罐与风扇的布局试验
4.3 加工与总装
进入成品阶段,先手工修整配件:用尖嘴钳、美工刀加工 L9110 风扇的螺旋桨与轴件(图 4-6),保证桨叶转动顺滑、不刮罐壁。

图 4-6 加工风扇部件:修整螺旋桨与轴件(桌面为加工中的桨叶与工具)
然后组装面壳:红色边框支架内嵌白色面板,肺形透窗对准两个集气罐的罐口(图 4-7)——从正面看,透窗里的深色肺形图案就是罐身与罐内棉花。这一步要对位准确:面板孔位歪一点,罐口就会漏气,警示灵敏度随之下降。

图 4-7 安装肺形面板:红框支架 + 白色面板,肺形透窗内即集气罐罐身
最后把 Nano 扩展板、MQ-7、蜂鸣器、LED 与两路风扇按图 3-2 接好线(图 4-8),全部装入面壳,合上顶板,成品完成。关于成型工艺需要加注一句:论文「活动研究方法」记载的是三维建模后 3D 打印,校本教材记载的软件是 LaserMaker 激光切割,两种记载并存,实物为红色板壳面罩。

图 4-8 总装接线:向面壳内装入电路与集气模块
五、编程流程分析
5.1 两个版本的程序
论文保存了一张早期 UNO 版程序截图:主控选 Arduino UNO 套件,按键在 D2、报警阈值只有 20,每 0.5 秒把 smoke 读数从串口输出(波特率 9600)便于调阈值;风扇自定义块「machon」写 D9 低/D8 高、D6 低/D5 高并注明电机逆转方向;报警分两块——flash1 循环「打开 D4 + A3 输出 255(PWM 渐亮)0.3 秒 → 关闭 D4 + A3 输出 0(渐灭)0.3 秒」,flash2 让 D3 每 1 秒闪一次重复 10 次(该块在主程序中未被调用)。
早期 UNO 版里还能看到一套完整的「调试工作流」:循环第一行先用「串口字符输出 + 换行」把每次的 smoke 读数打到电脑串口监视器(波特率 9600),对着一支烟慢慢观察读数爬升,才把阈值从试算值定为 20。风扇块「machon」的积木旁还用便签注释了转向记忆:「D9 低电平、D8 高电平逆转」「D6 低电平、D5 高电平逆转」——L9110 的 IA/IB 两脚电平组合决定电机转向,两脚同高或同低都停转,这正是双线驱动的方便之处。

图 5-1 早期 UNO 版程序(论文截图):串口辅助调阈值,flash1 用 A3 的 PWM 做 LED 渐亮渐灭
最终 Nano 版(本文以此为准)做了三处精简:按键移到 D11、阈值按实测提高到 100、去掉串口输出改为纯脱机运行;报警改为「蜂鸣器 D4 响 1 秒停 1 秒重复 10 次」。两版对照如下:
| 对比项 | 早期 UNO 版(论文截图) | 最终 Nano 版(定版截图) |
|---|---|---|
| 主控/编程目标 | Arduino UNO 套件 | Arduino Nano |
| 按键引脚 | D2 | D11 |
| 报警阈值 | smoke > 20 | smoke > 100 |
| 串口输出 | 每 0.5s 输出读数(调阈值用) | 无(脱机运行) |
| 声光报警 | flash1:D4 + A3 PWM 0.3s 渐亮灭 | D4 响 1s 停 1s × 10 次 |
| 备用闪烁块 | flash2(D3 闪 1s × 10,未被调用) | 无 |
| 风扇驱动 | machon:D8/D9、D5/D6(注明逆转) | 「风扇」块:D8 高 D9 低、D5 高 D6 低 |
| 供电设想 | 锂电池(论文记载不持久) | 市电变压 5V(论文优化结论) |
5.2 最终版程序逻辑
主程序只有一条循环,按「读数 → 判按键 → 判阈值 → 警示循环」四步运转:
- 读数:循环每圈先用「读取引脚 A0 一氧化碳气体传感器」把最新浓度写入变量 smoke;
- 判按键:只有按键(D11)读数为 1 才继续往下走——这就是「按键触发式检测」,平时机器完全静默;
- 判阈值:按键后先等 0.2 秒(消抖,兼让读数稳定),再判断 smoke 是否大于 100。不超过就「设置 on 的值为 0」,并把蜂鸣器(D4)、LED(D3)、两路风扇的驱动脚全部拉低,回到待机;
- 警示循环:超过阈值就进入「重复执行直到 smoke ≤ 100」的循环,循环体反复调用「报警」与「风扇」两个自定义块——蜂鸣器逼人停烟,风扇把烟压进罐子,罐内浓度被棉花和罐壁吸附而逐渐回落,直到读数回到 100 以下才退出循环、置 on 为 1。
两处细节如实加注:
- LED 不闪:「报警」块里两次写「设置数字引脚 3 输出低电平」——LED(D3)在整个报警过程中保持熄灭,只有蜂鸣器在响。这与论文「红灯频闪、蜂鸣器频响」的目标有出入,应是精简程序时的遗留(早期版 LED 走 A3 PWM 渐亮渐灭,改版后没有接回 D3 的闪烁逻辑),可作为读者复刻时的第一个改进点;
- 循环体截断:「重复执行直到 smoke ≤ 100」的循环体下缘在截图上有一块被截断的半透明积木,按逻辑应为重新读取 A0 更新 smoke——否则循环条件永远不成立、程序无法退出。参考代码按此补全并注明。

图 5-2 最终 Nano 版程序(Mind+ 截图):主程序 + 「报警」「风扇」两个自定义块
5.3 主程序流程图
Nano 主程序开始on ← 0循环执行smoke ← 读 A0(MQ-7)按键 D11 按下?是否(继续循环)smoke > 100 ?是重复执行直到 smoke ≤ 100循环体:报警 → 风扇 → 重读 smokeon ← 1否on ← 0蜂鸣器 / LED / 风扇 全部关闭回到循环开始定义「报警」重复 10 次:D4 高电平(蜂鸣器响 1s)D4 低电平(停 1s)注:D3(LED)两处均写低电平,程序里 LED 实际不闪(见 5.2 加注)定义「风扇」D8 高 · D9 低(风扇 1 正转)D5 高 · D6 低(风扇 2 正转)两路 L9110 同时把烟气压入集气罐说明:报警、风扇两个自定义块仅在警示循环内被反复调用,退出循环后所有执行器恢复关闭。图 5-3 最终版主程序流程(含「报警」「风扇」自定义块展开)
5.4 复刻指引
想在课堂上复刻这件作品,按下面的顺序走最省事:①先插好 Nano 与扩展板,接 MQ-7 到 A0,上传只有「读数+串口输出」的测试程序,对着烟气观察读数范围,确定自己的阈值(本作品最终取 100,环境不同会不一样,这一步不能省);②依次接按键(D11)、蜂鸣器(D4)、LED(D3),逐个验证;③接两路风扇时先单独用「高电平试验积木」确认转向,再并入主程序;④最后装进面壳,对位肺形透窗,做整机的按键—呼烟—报警联调。阈值定太高会「叫不动」,太低会「乱叫」,草模阶段多试几次是正常节奏。
六、参考代码
本作品在 Mind+ 的「上传模式 → arduino C」下编写,图形化积木可直接生成 Arduino C 代码。以下为最终 Nano 版程序的等价参考代码(逐行中文注释;「重复执行直到」循环内的重读语句按 5.2 的加注补全),图形化与文本对照着看,能把「自定义块=函数」「重复执行直到=while」这些对应关系看明白:
#include <Arduino.h>
int on = 0; // 工作状态标志:1=本轮警示已完成,0=待机
int smoke = 0; // 一氧化碳浓度读数(MQ-7 模拟输出,0~1023)
// 「报警」自定义积木:蜂鸣器(D4)响 1 秒、停 1 秒,重复 10 次
void baoJing() {
for (int i = 0; i < 10; i++) { // 重复执行 10 次
digitalWrite(3, LOW); // LED(D3)写低电平(程序原样:LED 不亮)
digitalWrite(4, HIGH); // 蜂鸣器(D4)高电平 → 响
delay(1000); // 等待 1 秒
digitalWrite(3, LOW); // LED(D3)仍为低电平
digitalWrite(4, LOW); // 蜂鸣器(D4)低电平 → 停
delay(1000); // 等待 1 秒
}
}
// 「风扇」自定义积木:两路 L9110 同时正转,把烟气鼓入集气罐
void fengShan() {
digitalWrite(8, HIGH); // 风扇 1 的 IA(D8)高电平
digitalWrite(9, LOW); // 风扇 1 的 IB(D9)低电平 → 电机 1 正转
digitalWrite(5, HIGH); // 风扇 2 的 IA(D5)高电平
digitalWrite(6, LOW); // 风扇 2 的 IB(D6)低电平 → 电机 2 正转
}
void setup() {
on = 0; // 设置变量 on 的值为 0
pinMode(3, OUTPUT); // D3 → LED 红灯模块
pinMode(4, OUTPUT); // D4 → 蜂鸣器模块
pinMode(5, OUTPUT); // D5 → 风扇 2 IA
pinMode(6, OUTPUT); // D6 → 风扇 2 IB
pinMode(8, OUTPUT); // D8 → 风扇 1 IA
pinMode(9, OUTPUT); // D9 → 风扇 1 IB
pinMode(11, INPUT); // D11 → 按键模块(按下为 1)
}
void loop() {
smoke = analogRead(A0); // 读取 A0 一氧化碳气体传感器
if (digitalRead(11) == 1) { // 按键(D11)被按下?
delay(200); // 等待 0.2 秒(消抖,兼让读数稳定)
if (smoke > 100) { // 浓度超过阈值 100?
while (smoke > 100) { // 重复执行直到 smoke ≤ 100
baoJing(); // 调用「报警」
fengShan(); // 调用「风扇」
smoke = analogRead(A0); // 重新读取浓度(截图循环体下缘积木被截断,按逻辑补全,见 5.2 加注)
}
on = 1; // 设置 on 的值为 1(本轮警示完成)
} else { // 浓度未超阈值
on = 0; // 设置 on 的值为 0
digitalWrite(4, LOW); // 蜂鸣器关
digitalWrite(3, LOW); // LED 关
digitalWrite(8, LOW); // 风扇 1 IA 关
digitalWrite(5, LOW); // 风扇 2 IA 关
}
}
}代码走读:整份代码可分为四块。①两个自定义函数 baoJing()、fengShan() 分别对应 Mind+ 里的「报警」「风扇」块——图形化里的自定义块落到文本就是函数,这是本作品最好的图形化→代码对照教材点;②setup() 里 7 个 pinMode 把 3/4/5/6/8/9 设为输出、11 设为输入,与图 3-2 的引脚表一一对应;③loop() 的双层 if 对应流程图的两个菱形判断——外层「按键是否按下」、内层「浓度是否超阈值」;④while (smoke > 100) 对应「重复执行直到 smoke ≤ 100」,循环体末尾的重读是退出循环的关键(补全语句,见 5.2 加注)。变量 on 在这里更像一个「状态存档」:本轮警示是否完成过,为将来接显示屏显示「上次检测状态」留了接口。
七、作品创新点
- 机器提醒代替人际催促:用传感器+蜂鸣器自动触发警示,把「同事反复提醒」的尴尬交给机器。论文摘要点得非常准:自动检测引发报警、达到警示效果,「也缓解同事间的经常提醒尴尬」。88% 的受访者希望自己或家人戒烟,说明这一需求真实而普遍;
- 会「变脏的肺」:双风扇把烟气主动压入透明集气罐,罐内棉花吸附焦油,日久发黄粘油——警示效果随使用越来越直观。论文总结里特别强调这一点「对吸烟者有很具体、形象的警示」,这是单纯的声光报警器做不到的;
- 肺形透窗外观:红色面壳开肺形窗,透窗里就是集气罐,产品隐喻「吸烟伤肺」与功能结构合二为一;呆萌的外形让它「必成为办公室桌面常见的摆件」,警示器不突兀、不刺眼;
- 按键触发式检测:只在按键后执行一次检测判别,避免环境空气不良造成的经常性误报——论文产品优化一节明确讨论了「CO 传感器敏感性很好,也可能由于外面空气不良而触发报警」,触发式设计正是对这一问题的回应;
- 用数据说话的研究方法:先问卷(100 份)、再采访、后试验,把「该不该做」和「阈值定多少」都建立在数据上,是完整的项目研究范式。
八、项目应用拓展
「CO 浓度检测 → 声光警示 → 集气吸附」的框架可以迁移到多个场景:
| 应用场景 | 做法 | 价值 |
|---|---|---|
| 办公室/家庭书房 | 桌面摆放,按键检测烟气 | 自动警示+集气,帮助控烟戒烟 |
| 出租车/私家车 | 车内小型化,超阈值提示开窗 | 保护家人远离二手烟 |
| 厨房/燃气使用点 | 换用 CO/可燃气双传感器 | 一氧化碳中毒预警 |
| 车库/库房 | 与排风联动,CO 超标自动排气 | 把「报警」升级为「处置」 |
| 校园科普教具 | 罐内棉花日久变黄,作为吸烟危害的展示载体 | 健康教育可视化 |
结构升级方向:装入清单中待选的 LCD1602 屏,按浓度分三级显示文字;改用市电(变压 5V)供电解决电池不持久问题;把 LED 接回报警流程恢复「红灯频闪」。再往进一步,可以把「报警」升级为「处置」——用一路继电器代替/并联蜂鸣器,浓度超标时自动接通排气扇,警示器就变成了自动排烟控制器。
九、小结
9.1 制作历程
项目自 2019 年 9 月 25 日启动、12 月 2 日完成。论文里每个过程都记了用时,学生自己排的时间表相当老实——「由于日常学习任务紧张,课余做项目时间不多,耗时较长」:
| 过程 | 主要工作 | 用时 |
|---|---|---|
| 发现问题 | 到教师办公室走访,确认办公室人群吸烟问题的普遍性 | 1 周 |
| 查找资料 | 吸烟危害、配件参数(主板/传感器/电机/显示屏) | 1 周 |
| 问卷调查 | 问卷星制作发布,回收 100 份并统计分析 | 1 周 |
| 设计方案 | 多方案比选,画出设计图与设计思路 | 2 周 |
| 草模试验 | 纸板草模装板试验,分析数据、解决问题 | 2 周 |
| 外形制作 | SketchUp 定稿外观,加工面壳并装入电路 | 2 周 |
| 成品优化 | 反复调试,确定最适报警浓度,减小误差 | 1 周 |
9.2 不足与反思
- 「报警」块中 LED(D3)恒为低电平,红灯频闪的设计目标没有在最终程序里实现(早期版走 A3 PWM 的渐亮渐灭逻辑没有迁移过来),复刻时把 D3 纳入报警节奏即可补上;
- 「重复执行直到」循环内重读传感器的积木在截图上被截断,按逻辑补全后方可正常退出循环,复刻时需特别注意;
- MQ-7 灵敏度很高,环境空气不良(如有人烧水、尾气飘入)也可能触发报警,论文据此提出可考虑去掉蜂鸣器、改为更柔和的提示方式,避免「狼来了」效应;
- 集气罐内直流电机需长时间开启,锂电池供电不持久,论文优化结论为改用市电(变压 5V)供电;
- LCD1602 三级文字显示停留在「待选器材」阶段尚未实装,目前警示只依赖声音,阈值只有一个,没有发挥「分三级显示」的梯度警示能力。




