当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]室内空气质量(IAQ)常常被忽视,但它却直接影响着认知功能和长期健康状况。二氧化碳含量过高会导致困倦和注意力不集中,而甲醛(HCHO)——通常来自家具和建筑材料——是一种已知的刺激物。AtmosGuard C5 是一款基于 Seeed Studio XIAO ESP32-C5 构建的高精度、联网监测设备。它利用双频 Wi-Fi 提供 OLED 显示屏上的实时监测,并通过无缝的 Captive Portal 设置将历史数据记录到 Google Sheets 中。

1. 简介

室内空气质量(IAQ)常常被忽视,但它却直接影响着认知功能和长期健康状况。二氧化碳含量过高会导致困倦和注意力不集中,而甲醛(HCHO)——通常来自家具和建筑材料——是一种已知的刺激物。AtmosGuard C5 是一款基于 Seeed Studio XIAO ESP32-C5 构建的高精度、联网监测设备。它利用双频 Wi-Fi 提供 OLED 显示屏上的实时监测,并通过无缝的 Captive Portal 设置将历史数据记录到 Google Sheets 中。

2. 特点/特征

•微环境感应技术:集成了非分散红外线二氧化碳检测与电化学甲醛检测功能,从而实现全面的空气安全监测。

•双频连接:利用 ESP32-C5 芯片,在现代 5GHz 无线网络环境下运行。

•captive portal 配置:不使用固定密码;采用 WiFiManager 进行便携式设置。

•云集成:实时数据记录至 Google 表格,以便进行长期趋势分析。

•智能状态:根据世界卫生组织的指导方针,动态 OLED 头部显示屏会自动更新(良好/一般/较差)。

3. 连接步骤

•安装 XIAO:将 XIAO ESP32-C5 的引脚与 XIAO 扩展板上的母头对齐,并用力按下。

•SCD30 连接:将一根格罗夫电缆的一端连接至 SCD30,另一端连接至扩展板上可用的任何 I2C 格罗夫接口。

•SFA3x 连接:将第二根格罗夫电缆连接到 SFA3x 以及其余的 I2C 格罗夫接口。

•显示设置:请确保扩展板上标有“OLED”的小开关处于开启状态。

•电源:将 USB-C 数据线连接至 XIAO ESP32-C5。请注意,扩展板也可通过底部的 JST 连接器由 3.7V 锂电池供电,以便于携带使用。

因为 SSD1306 OLED、SCD30 和 SFA3x 都通过 I2C 协议进行通信,所以它们共用两条数据线(SDA 和 SCL)。而 ESP32-C5 则通过它们各自独特的 I2C 地址来区分它们:

•OLED:0x3C

•SFA3x: 0x5D

•SCD30: 0x61

这种并行连接使得该系统能够“可扩展”,而无需增加更多的引脚。

4. 代码分解

该代码的结构设计旨在确保在新的小爱 ESP32-C5 RISC-V 内核上运行的稳定性:

•I2C 稳定性:在经过 2 秒的启动延迟后以 100kHz 的频率进行初始化,以防止总线出现卡顿现象。

•非阻塞逻辑:传感器读数与云端记录间隔(60 秒)相分离,以保持显示屏的响应能力。

•持久数据:全局变量会保存“最后已知的正常”读数,以防止在传感器预热期间显示屏出现骤降至零的情况。

•HTTPS 重定向:已特别设置为遵循谷歌服务器的重定向操作,以确保数据能够正确传输至电子表格。

图书馆的包含内容及定义

•传感器:Adafruit_SCD30.h 和 SensirionI2cSfa3x.h 负责处理二氧化碳和甲醛传感器的复杂 I2C 通信协议。

•显示:使用 U8g2lib.h 是因为其支持“全缓冲”模式,能够实现更流畅的屏幕更新和自定义字体。

•网络:WiFiManager.h 是创建封闭式门户的关键。它使您无需在脚本中硬编码 Wi-Fi 密码。

•云:HTTPClient.h 使 ESP32-C5 能够像网络浏览器一样“获取”谷歌脚本的 URL。请确保在 Arduino IDE 中安装这些库。

全局变量与实例

C++

我们为传感器创建“对象”并将其展示在此处,以便它们能够在 setup() 函数和 loop() 函数中被访问。我们还定义了 lastEntry 和 interval 来管理时间;这样做可以确保我们不会向 Google Sheets 发送过多请求,以免导致暂时被封禁。

设置模块(“早晨的例行程序”)

当设备开机时,此程序会运行一次。

•“Serial.begin(115200)”:启动与您电脑的通信,以便进行调试。

•“Wire.begin() & Wire.setClock(100000):这是 ESP32-C5 中最为关键的部分。它用于初始化 I2C 总线。我们将速度设置为 100kHz(标准模式),以确保在多个传感器共享同一根导线时的稳定性。”

•WiFiManager 类:它会检查设备是否还记得某个 Wi-Fi 网络。如果没有记住,它就会启动一个名为“AirMonitor-AP”的接入点(AP)。wm.setConfigPortalTimeout(120) 这个方法是一个安全功能;如果在 2 分钟内没有人连接到该接入点,设备就会转而进行本地监控,以免永远停留在这个状态。

“循环块(恒定循环)”

这个循环会反复运行,并执行三项主要任务:

A. 读取传感器数据

C++

SCD30 每 2 秒才更新一次数据。这个 if 语句确保我们仅在传感器获取到新数据时才更新变量。这样可以避免“零值读数”的问题。

B. 确定空气质量状况

我们采用一种简单的“如果-否则”逻辑来对空气进行分类。

•危急情况:若二氧化碳浓度大于 1500ppm 或甲醛浓度大于 100ppb 时。

•警报条件:若二氧化碳浓度大于 1000ppm 或甲醛浓度大于 60ppb 。

•好的:其他方面。这种逻辑会优先考虑安全性;只要有一个传感器检测到空气质量不佳,整个状态就会变为“较差”。

C. 更新 OLED 技术

u8g2.clearBuffer() 函数会清空 ESP32 内存中的“虚拟”屏幕。接下来我们绘制文本和线条,最后调用 u8g2.sendBuffer() 函数一次性将整个图像传输到物理屏幕上。这样可以避免在较简单的库中出现的“闪烁”现象。

云日志功能(发送至工作表)

C++

这就是谷歌表格的“秘诀所在”。当小 ESP32C5 跳转到谷歌脚本的网址时,谷歌会以 302 重定向的方式做出响应。如果没有这一特定的代码行,小 ESP32C5 将会在重定向处停止,数据也就无法真正传送到您的电子表格中。此功能会将您的 CO2、HCHO、温度和湿度值打包成一个单一的网址字符串,并“访问”该链接以记录数据。

设置谷歌表格桥接器

为了记录数据,我们使用了一个简单的谷歌应用程序脚本。

创建一个新的谷歌表格。

前往“扩展” > “应用程序脚本”菜单,然后将以下代码粘贴进去:JavaScript

点击“部署” > “新建部署”。选择“Web 应用程序”,将访问权限设置为“任何人”,然后复制 Web 应用程序的 URL。您需要将此 URL 粘贴到 Arduino 代码中。

那么,你应该得到如下这样的结果:

故障排除指南

即便有可用的代码,硬件也可能存在一些问题。本节将介绍用户在构建这款空气质量监测器时可能会遇到的一些常见难题。

1. I2C 总线冲突与接线问题

由于 SCD30 和 SFA3x 都连接在同一 I2C 总线上,所以它们必须具有不同的地址。幸运的是,它们确实如此(SCD30 的地址是 0x61,SFA3x 的地址是 0x5D)。

“故障”提示信息:如果在串行监视器中看不到“SCD30 故障”或“SFA3x 在线”字样,请检查您的格罗夫连接线。确保它们已牢固插入。

电压下降:长电线可能会导致信号质量下降。如果您的传感器距离 XIAO 超过 20 厘米,您可能需要将 I2C 速度进一步降低至 50000,或者在 SDA 和 SCL 上添加 4.7kΩ 的上拉电阻。

2. “302 已找到”谷歌表格错误

如果您的串行监视器显示“数据已发送”,但您的表格中却没有任何内容显示出来,那么问题几乎总是出在谷歌部署环节上。

解决方法:您不能简单地“保存”脚本。您必须前往“部署” > “管理部署”,编辑当前的部署项,并选择“新版本”。每次更改脚本代码时,都必须部署一个新的版本,否则该网址实际上会指向无效的代码。

权限设置:请确保“谁有权访问”选项设置为“任何人”——如果设置为“仅本人”,那么 ESP32(它并未登录您的谷歌账户)将无法访问。

3. ESP32-C5 电源稳定性

SCD30 采用了一种会闪烁的物理红外灯。这种闪烁会产生一个微小的“电压下降”峰值。

症状:该设备会每 60 秒自动重启一次(就在 WiFi 开启并开始传输数据的时候)。

解决方法:在扩展板的 5V 和 GND 引脚之间添加一个 100µF 至 1000µF 的电容器,作为电源缓冲器,或者使用质量更好的 USB 数据线。

4. Sensirion SFA3x "Initial Burn-in"

如果在最初的 10 分钟内你的甲醛浓度读数波动很大,也不必担心。

原因:SFA3x 电化学电池需要达到化学平衡状态。为了获得最准确的数据,请在拍摄“最终”数据截图之前,让设备运行至少 60 分钟。

本文编译自hackster.io

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

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭