如何利用ESP32实现空气质量监测系统的设计

描述

该系统是一个基于ESP32NodeMCU的空气质量监测系统,用于检查PM、颗粒物(PM)以及湿度以及温度、海拔和压力。对位置环境的各个方面进行测试,然后显示在TFT屏幕上,并使用ThingSpeakIoT(物联网)平台。

颗粒物

灰尘和PM会对人体构成健康风险。PM2.5的直径可以小于2.5微米,PM10的宽度也可以小于10微米。这意味着PM10报告也将包括PM2.5。这两种颗粒都比人的头发短,人的头发直径约为70微米。

PM10

诸如碎石、磨煤、水泥行业内的回转窑等操作,以及移动车辆搅动的道路上的灰尘,都会增加PM10的水平。24小时PM10限值为150ug/m3。

PM2.5

它是由任何类型的燃烧产生的细颗粒的结果,例如机动车辆热电厂、住宅中的木材燃烧、与森林有关的农业燃烧火灾以及各种其他工业过程。24小时平均值的PM2.5限值为35ug/m3。

电路

它由ESP32NodeMCUSDS011、BME280ILI9163TFT显示屏、电阻以及晶体管2N2219组成。ESP32NodeMCU位于该电路的中心部分。

基于物联网的空气质量系统示意图如图所示:

ESP32

ESP32NodeMCU:

ESP32

它是一款集成了Wi-Fi和双模蓝牙的低功耗(MCU)微控制器。它是早期ESP8266微控制器的升级版。ESP32如图所示。可以使用ArduinoIDE将代码发送到ESP32NodeMCU。(EFY实验室使用ESP-Wroom-32版本1.1来测试草图。)

TFT显示屏

在测试过程中使用了带有支持SPI串行总线技术的彩色显示屏的3.65厘米(1.44英寸)触摸屏。

SDS011。Nova的粉尘探测器SDS011可以说是在尺寸、精度和成本方面最有效的颗粒物传感器之一。它带有一个UART接口,测量精度为0.3ug/m3。工作电压5V。

ESP32

BME280

为了读取温度和压力以及相对湿度,采用了经济实惠的BME280模块。

ESP32

2N2219

晶体管2N2219(T1)可用作SDS011中的开关。它的集电极连接到SDS011的GND引脚,发射极连接到电路的地。如果ESP32的15脚为高电平,逻辑T1导通,SDS011通过T1接地。否则SDS011无法接地。

ThingSpeak,一个基于物联网的平台

该项目建立在ThingSpeak云计算之上。ThingSpeak是一个开源物联网应用程序和API,允许您通过LAN使用HTTP协议通过Internet存储和检索设备中的数据。它允许开发传感器记录软件、位置跟踪应用程序以及提供状态更新的社交网络。如果您定期将数据从传感器传输到ThingSpeak,它将生成数据,然后将其存储并实时显示趋势。它还具有内置的数学建模作为免费提供的MATLAB文档。

帐户和频道设置。在www.thingspeak.com上设置帐户和频道。为此,您需要有一个有效的电子邮件帐户。该网站将向您发送一封确认电子邮件。按照电子邮件中的链接确认您的帐户并建立一个帐户。

从这一点开始,您可以制作任意数量的频道。如果您创建一个频道,您将收到三个ThingSpeak身份,例如频道ID、用于写入的API密钥和用于读取的API密钥。记下这些,以防您将来需要这些以使用程序源。每个通道最多八个传感器信息,例如PM2.5和PM10温度和高度、相对湿度和压力。

每个通道八个数据。每个通道能够接收来自各种设备的八个数据信号。这意味着,使用ThingSpeakAPI,您将能够为每个频道上传8个数据。然后使用ThingSpeak收集、记录数据并转换为趋势数据,例:https://thingspeak.com/channels/279012

软件

该项目的软件(environment_thingspeak.in)是用Arduino编程语言编写的。PM2.5和PM10都与相对湿度(RH)有关。

因此有必要在软件(或草图)中添加一个RH校正来调整读数。

ESP32上的SDS011。ESP32在ArduinoIDE上运行。由于Arduino是一项尖端技术,因此几乎所有传感器都有一个应用程序库。对于SDS011,有一个现成可用的库,它使用可直接与ArduinoUno一起使用的SoftwareSerial库。

ESP32与SoftwareSerial不兼容。它带有三个UART端口,并利用HardwareSerial连接UART设备。现有的命令和库可以与硬件串行结合使用,以从传感器获取PM信息。这些命令存储在data.h文件中。它应该与Arduino草图保存在同一位置,然后通常与草图一起编译。

SDS011在SDS011模式下休眠。根据规格,SDS011可以有2mA的休眠电流。传感器很少处于睡眠模式。此外,与睡眠相关的命令已包含在data.h文件中,以便您进行测试。但是,GPIO13(第15脚)用于接通NPN晶体管(2N2219)以确保SDS011在活动阶段保持运行,然后将其切换到断电模式。

我正在将程序上传到ESP32。然后一切都准备好由您执行。将设备连接到PCB或Veroboard以实现通用目的。连接到ESP32的USB电源。

启动ArduinoIDE并添加ESP32库和任何其他相关库。打开Arduino代码(environment_thingspeak.info)。

在开始草图时更改或提供Wi-FiID和密码。将ThingSpeak频道编号替换为您的频道编号以及API密钥和API密钥。

通过选择Tools(r)Board选项下方的下拉菜单来选择ESP32DebModule。之后,在Tools(r)Port选项下方的下拉菜单中选择正确的USB端口。按上传。

如果一切正常,您的程序将开始通过ESP32板进行通信,并将代码上传到ESP32MCU。

几分钟后,您将能够看到PM2.5或PM10以及TFT显示屏上显示的其他信息。类似的数据将显示在Arduino的串口监视器上。

在任何Internet浏览器中启动ThingSpeak频道。您的智能手机浏览器也可以使用。数据完美堆叠,如图所示:

ESP32

测试

空气质量监测系统实际尺寸的PCB布局如图所示:

ESP32

如果一切正常,您就能观察空气质量监测器TFT显示屏上正确的值。

可能的拓展

项目中SDS011由5V供电。但是,您可以将2节3.7V锂离子电池与极小的线性稳压器(例如7805)一起使用,以降压至5V。

您还可以使用一个极小的转换器将电压提升到1.5V至5V。您可以使用一节锂聚合物电池和转换器,使其成为便携式设备。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分