新闻| 论坛| 博客| 在线研讨会
DIY空气质量监测器
电子资料库| 2023-03-20 22:51:16 阅读:1300 发布文章

DIY空气质量监测器—PM2.5、CO2、VOC、臭氧、温度和湿度Arduino仪表


有时你会觉得办公室里的空气很累,甚至会觉得很累?糟糕的空气质量会导致许多负面的健康影响,也会导致疲劳、头痛、注意力不集中、心率加快等。监测空气质量可能比你意识到的更重要。因此,在本教程中,我们将学习如何建立我们自己的空气质量监测器,能够测量PM2.5、CO2、VOC、臭氧以及温度和湿度。

概述

我会解释每个传感器的工作原理。这个项目的大脑是一个Arduino Pro微型板,与2.8英寸Nextion触摸显示屏相结合,提供了一个不错的用户界面。


我们可以实时看到所有传感器的测量值,如果我们点击某个特定的传感器,我们将从该传感器获取过去24小时的值。还有一个调光功能,通过它我们可以降低显示器的亮度,甚至完全关闭显示器。这是很方便的,例如,如果我们想跟踪我们的卧室在夜间的空气质量。


我们可以在晚上关闭屏幕,第二天我们可以单独检查每个传感器的值。

尽管如此,现在我将引导您完成构建它的整个过程,并解释一切是如何工作的。在这个视频的最后,你将能够建立一个自己的。那么,我们开始吧。

PM2.5传感器–PMS5003

该装置有四个主要部件或空气质量传感器。我们正在使用PMS5003传感器来测量PM2.5或空气中直径约为2.5微米的颗粒物。颗粒物是空气污染中最有害的形式,因为它们能深入肺部、血液和大脑,造成许多健康问题。


这种传感器的工作原理是激光散射。该传感器有一个风扇,可以产生一个可控的气流,使环境中的颗粒通过聚焦的激光束。


微粒引起光散射,光电二极管检测到散射,然后在微处理器的帮助下转换成颗粒物浓度。我发现这个传感器的结果是相当可靠的,它也可以输出PM1和PM10的值。

二氧化碳传感器–MH-Z19

接下来,我们将使用MH-Z19传感器来测量二氧化碳或二氧化碳。由于人们在呼吸时排放二氧化碳,室内的二氧化碳浓度很容易变得很高。二氧化碳不仅在高浓度下是危险的,而且还可能导致困倦、疲劳,降低我们的生产力水平等等。


该传感器采用非色散红外原理测量空气中的二氧化碳。一个红外光源引导光线通过一个充满我们正在测量的空气的管子。在红外光源的另一侧,有一个滤光片和一个红外探测器,它测量通过的红外线的量。


我们测量的空气中的二氧化碳气体分子吸收特定波段的红外光,同时让一些波长通过。因此,二氧化碳水平是根据****的光量和探测器接收到的红外光量之间的差值来计算的。这个传感器的结果也相当准确。

VOC和臭氧传感器–MP503和MQ-131

我们使用MP503和MQ131气体传感器测量VOC和臭氧。这些是加热的金属氧化物传感器,其工作原理是基于检测目标气体存在时电阻的变化。


一个特定的电流通过一个金属基底,电阻随气体含量的变化而变化。

MQ131传感器的目标气体仅仅是臭氧,在正常的家庭中,臭氧可以由产生紫外线的某些空气净化器、面部蒸汽机、杀菌灯等产品产生。


另一方面,MP503传感器有多个目标气体,包括酒精、烟雾、异丁烷、甲醛等。VOC代表挥发性有机化合物,是我们日常使用的洗衣粉、清洁剂、空气清新剂、油漆、化妆品等的有机排放物。挥发性有机化合物会引起许多负面的健康影响,包括头痛、眼睛刺激、皮肤反应、头晕等。

DIY Arduino空气质量监测器-电路图

尽管如此,现在让我们看一下电路图,解释一下所有东西都需要如何连接。


您可以从以下链接获取Arduino空气质量监测器所需的部件:

PMS5003 PM传感器………………………… / /

MH-Z19二氧化碳传感器…………………… / /

MQ-131臭氧传感器………………………… / /

MP503 VOC传感器 ………………………… / /

DHT22温度和嗡嗡声传感器 ……………… / /

Nextion 2.8英寸显示器 ………………… / /

DS3231 RTC ……………………………… / /

Arduino Pro迷你版 …………………… / /

Distance / Spacer Nuts M3…………… / /

链接是:这些披露。作为亚马逊的合伙人,我的收入来自合格的购买。

PM2.5传感器通过串行接口与Arduino通信。它的工作电压是5V,但是接收RX逻辑电平工作在3.3v,所以我们需要一个分压器。二氧化碳传感器和Nextion显示器也使用串行通信。为了读取VOC和臭氧传感器,我们使用Arduino的模拟输入,而为此使用数字pin

这两个晶体管用于激活传感器加热器。我们还使用实时时钟模块来跟踪存储传感器值时的时间,它使用. 整个设备通过一个小型USB接口提供5V电源。


另请参见


现在如果我们试图把所有的东西连接在一起,我们会因为连接太多而变得一团糟。


所以,我们确实需要一个PCB来完成这个项目。

为Arduino空气质量监测器制作PCB

为了制作这个项目的PCB,我将使用Altium Designer,它实际上是这个视频的赞助商。


Altium Designer代表了数十年来致力于创造一个真正统一的设计环境的创新和发展。Altium Designer在功耗和易用性之间实现了完美的平衡,已成为市场上使用最广泛的PCB设计解决方案。

现在我将向您展示如何使用Altium Designer为这个项目设计PCB。我从制作这个项目的示意图开始。Altium Designer有内置的基本电子元件库,但更好的是你可以直接从制造商那里搜索元件,这使得为你的项目采购元件非常方便。


作为一个例子,我发现Mini-USB连接器使用了这个制造商部件搜索功能。从这里,您还可以方便地访问与组件相关的数据,如三维模型、示意图、尺寸等。

也可以创建自己的组件库。我自己为这个项目创建了大部分元件,因为我想为每个零件创建自己的3D封装外形,这样在最后,我将得到整个PCB的三维模型。要为PCB封装外形创建3D模型,您可以使用任何CAD软件,将文件另存为.STEP文件,然后在Altium Designer中导入它们。


一旦我完成了原理图,我就生成了PCB。我按照我想要的方式排列组件,只需点击一下自动布线功能,软件就会自动生成所有轨迹。


如果需要,我们可以手动创建或调整它们。此外,我们还可以设置设计规则,自动布线如何进行跟踪,为每个网络设置不同的宽度等等。在这一点上,我们还可以看到三维的PCB,并导出整个PCB组件的3D文件,该文件将用于以后为其设计外壳。

尽管如此,我还是要感谢Altium赞助了这样的教育内容。如果你想了解更多关于这个软件,也尝试它,你可以看看下面的链接。您也可以尝试基于web的Altium365查看器,用于项目预览和文件。

Altium designer free trial:Altium 365观察器:

以下是Altium Designer项目文件:

好的,所以一旦我完成了PCB,我就生成了Gerber和NC钻孔文件,并将它们放入一个zip文件中,所以我准备订购PCB进行制造。


我. 在这里,我们可以简单地拖放zip文件,一旦上传,我们将获得关于我们的PCB的所有视觉信息。


然后我们可以选择我们想要的性能,并以合理的价格订购PCB。

组装PCB

几天后,多氯联苯就到了。印刷电路板的质量很好,一切都和设计完全一样。


所以,现在我们准备开始组装PCB了。我首先插入和焊接较小的元件,电阻和两个晶体管。

然后我们可以把Arduino Pro迷你板焊接到位。但是,首先我们需要焊接引脚头。请注意,我们不需要所有的引脚,但请确保您不要错过我们需要的一个,如A4、A5和DTR引脚。还要确保你有这个完全相同的Arduino Pro迷你电路板的引脚布局,因为他们有时可能是不同的。


接下来,我们可以将DHT22传感器插入到位。为此,首先我们需要将其销弯曲90度。有时,我也使用Blu-tack粘合剂在焊接时保持组件的位置。

本工程使用的两个电容器是用来稳定供电的。电路板的电源将来自一个小型USB连接器,我们可以连接5V。


在电源连接器的正上方,我们需要焊接两个开关。一个用于打开和关闭设备,另一个用于将草图上载到Arduino板时。然后我们可以插入USB到UART接口的管脚头,显示器和PM2.5传感器,以及VOC、臭氧和二氧化碳传感器。

接下来,焊接模块再次,首先我们需要弯曲引脚90度。一旦焊接完成,我们就可以插入电池,即使主电路板断电,它也能记录时间。有了这些,印刷电路板实际上就完成了,剩下要做的就是准备好电缆,我们将使用这些电缆将PM2.5传感器和显示器连接到PCB上。我把插头头焊接到传感器附带的电缆上,这样我就可以轻松地将其连接到PCB上。为了将显示器连接到PCB,我将四根导线焊接到显示器连接器的背面,然后将它们连接到PCB上。


就这样,我们的空气质量监测已经完成了。当然,我们现在需要做的是做一些盒子或箱子。由于我们从Altium Designer获得了整个PCB组件的3D模型,我们可以将其导入CAD软件并为其设计一个案例。


为此,我使用SOLIDWORKS,并使最简单的情况下,只有两个部分和几个螺栓和螺母。我决定用透明亚克力做这个箱子,因为我喜欢PCB和组件的外观,这也是展示你DIY项目的一个很好的方式。

您可以关注并私信,发送下载DYI空气质量监测器的3D模型链接:

为空气质量监测做准备

亚克力,我将使用4毫米滴答,这完全符合显示器。由于我目前没有数控机床,我用一个简单的金属钢锯手工切割形状。


为了开洞展示,我先用钻头打了两个洞。然后我从一个小型钢锯上穿过一把刀片,小心地切割出这个形状。我用一个简单的锉刀把形状弄光滑了。然后用一个3毫米的钻头,我做了所有的孔,用来连接印刷电路板和连接两块亚克力板。


在这一点上,我从亚克力上取下了保护膜,说实话,这是一个相当令人满意的过程。为了将PCB连接到底板,我使用了一些M3螺栓和螺母。为了将PM2.5传感器连接到板上,我们需要M2螺栓。


下一段距离,我们可以用一些螺母把两个板连接起来。通过使用一个母的和一个公的距离螺母,我能够很容易地得到两个板之间所需的距离。


我个人非常喜欢这个案子的结果,另外,它的功能是空气可以很容易地在传感器周围流通。

编程

我们现在就可以上传程序了。我们可以通过迷你USB接口为空气质量监测器供电,我们可以从5V USB适配器、5V手机充电器或电源组获取5V电压。


为了将程序上载到Arduino Pro迷你板,我们需要一个USB到串行UART接口,该接口可以连接到编程头。在连接到计算机USB之前,首先必须打开设备的主电源,否则来自计算机USB(只有500毫安)的电源可能不足以正常工作。上载Arduino草图时,我们还需要切换PCB上的上载开关。

要将草图上载到Arduino Pro迷你板,首先在Arduino IDE中,我们需要选择此板,选择处理器的正确版本,选择端口并选择编程方法USBasp ".


一旦我们将代码上载到Arduino,我们还需要将代码上载到莱克逊显示。实际上,它的控制器上有内置的控件。


所有的图形,如按钮、文本、图像、变量等等,都是由显示器本身生成和控制的。这个莱克逊显示屏有专用莱克逊编辑器,我们可以创建所有这些东西。显示器和Arduino仅用两条线进行串行通信。Arduino只是将传感器的值发送到显示器,反之亦然,显示器在需要时向Arduino发送数据。

为了上传显示程序,我们需要一个microSD卡,在那里我们可以保存莱克逊编辑


显示器有一个读卡器,我们可以在断电时插入microSD卡。然后我们可以给设备加电,程序就会上传到显示器上。现在我们只要把卡取下来,再打开电源,我们的空气质量监测器就可以开始工作了。


代码说明

因此,我们正在为每个传感器使用库,这些库可以在以下链接中找到, , , , ,. 为了更好地理解我们如何从每个传感器读取数据,我建议您阅读库文档并尝试它们的示例。

我们还使用软件串行库,因为MH-Z19和PMS5003传感器都使用串行通信。Arduino和Nextion显示器也使用串行端口进行通信,在本例中,我们使用默认的硬件串行端口。


所以,Arduino读取传感器并将数据发送到Nextion显示器。这里有一个例子。

Serial.print("tempV.val=");

Serial.print(temp);

Serial.write(0xff);

Serial.write(0xff);

Serial.write(0xff);

So we have a variable at the nextion display called "tempV" and in order to update it's value we need to send a command to the nextion as following "tempV.val=22". So the variable name, then ".val", then the value, let's say 22. The first two lines of the code do that, and in order the Nextion display to accept this command or actually any command we need to send the three unique "write" commands.

在Nextion显示程序中,我们有一个计时器,它在循环中运行,就像Arduino代码循环一样,它不断更新显示器上的数字。


在这个计时器事件中,我们还有一个代码,用于根据每个传感器的值更改其背景颜色。

在第二页,我们有波形,它从Arduino存储的值中获取值。请注意,您可以找到更多关于Arduino代码本身的信息,因为代码的注释中有解释。


小时和Y轴的值也从Arduino获得。

在波形和主屏幕上的数字上,你可以注意到我们有类似的透明对象,在Nextion编辑器中称为"hotstop",它们充当按钮。如果我们按下波形上的热停止按钮,我们可以在事件部分看到它将我们送回"第0页"。

总的来说,这就是Arduino空气质量监测仪的工作原理。当然,为了完全理解它是如何工作的,你需要学习和了解每个传感器是如何与其库一起工作的,以及Nextion显示器是如何工作的。

请注意,对于VOC传感器,我们只读取该传感器的原始数据,而不是ppm或ppb值。只是0到1024的模拟值。较高的值表示存在VOC。

至于臭氧传感器,为了获得更精确的输出,我们必须根据库的校准示例正确设置setTimeToRead()和setR0()值。然而,较长的setTimeToRead意味着程序将在采样时被阻止,其他一切都将冻结。当然,有办法解决这个问题。我甚至建议不要使用臭氧传感器,除非你真的需要它。

我希望你喜欢这个文章,并学到一些新的东西。如果你有请考虑,请点赞支持,并随时在下面的评论部分提出任何问题。

需要Altium Designer文件(电子元件三维模型的项目文件、库和.STEP文件),DYI空气质量监测器的3D模型(DIY空气质量监测器-Solidwork文件和Step文件),DIY空气质量监测器程序和显示代码-(Arduino代码和Nextion程序)可以关注,并私信我索取。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客