你有没有想过你呼吸的空气的质量,或者也许,为什么你有时会在办公室里感到困倦或甚至在整晚睡觉后累了?空气质量不佳会导致许多负面健康效果,也可能引起疲劳,头痛,浓度丧失,心率增加等。监测空气的质量实际上可能比你意识到更重要。因此,在本教程中,我们将学习如何构建我们自己的空气质量监测,能够测量PM2.5,CO2,VOC,臭氧以及温度和湿度。

概述

我将解释每个空气质量参数如何影响我们以及传感器如何工作。该项目的大脑是一个Arduino Pro Mini板,它与2.8“触摸显示器结合使用,提供了一个不错的用户界面。

Arduino空气质量仪表

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

DIY空气质量监测仪与过去24小时传感器数据存储

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

然而,现在我将带您走过构建它的整个过程,并解释一切是如何工作的。在本视频的最后,你将能够建立自己的一个。那么,让我们开始吧。

PM2.5传感器- PMS5003

该设备有四个主要部件或空气质量传感器。我们使用PMS5003传感器测量PM2.5或直径在2.5微米左右的空气中的颗粒物。微粒是最有害的空气污染形式,因为它们可以深入肺部、血液和大脑,导致许多健康问题。

PMS5003  -  PM颗粒物传感器在DIY Arduino空气质量监测器中

该传感器适用于激光散射的原理。传感器具有产生受控气流的风扇,使得环境颗粒通过聚焦激光束。

微粒粒子传感器如何工作-激光散射工作原理

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

CO2传感器 - MH-Z19

接下来,我们使用MH-Z19传感器测量CO 2或二氧化碳。随着人们在呼吸的同时发出二氧化碳时,CO2的室内浓度很容易变得非常高。CO2不仅在高浓度下危险,而且还可以造成嗜睡,疲倦,降低我们的生产力水平等。

MH-Z19二氧化碳传感器 - 用Arduino测量二氧化碳

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

测量空气中二氧化碳的非色散红外原理

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

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

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

金属氧化物传感器如何工作

特定的电流通过金属衬底,电阻根据存在的气体量而变化。

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

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

另一方面,MP503传感器具有多种靶气体,包括酒精,烟雾,异丁烷,甲烷和其他气体。VOC代表挥发性有机化合物,这些是我们每天使用的产品的有机排放,如洗衣洗涤剂,清洁剂,空气清新剂,油漆,化妆等。VOC可能会导致许多负面健康效应,包括头痛,眼睛刺激,皮肤反应,头晕等。

DIY Arduino空气质量监控 - 电路图

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

DIY Arduino空气质量监控电路图 - 它如何运作betway

您可以从下面的链接获取此Arduino空气质量监视器所需的组件:

必威外围提钱披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

正确电阻值:R1 = 1K,R2 = 2K,R6 = 100K或1M,R7 = 1K

PM2.5传感器通过串口与Arduino通信。它工作在5V,但接收RX逻辑电平工作在3.3v,因此我们需要一个分压器。CO2传感器和Nextion显示也采用串行通信。为了读取VOC和臭氧传感器,我们使用Arduino的模拟输入,而DHT22温湿度传感器使用数字引脚进行此目的。

这两个晶体管用于激活传感器加热器。当存储传感器值时,我们也使用实时时钟模块来跟踪时间,它使用I2C沟通.整个设备通过Mini USB连接器供电5V。

现在,如果我们尝试将所有东西连接在一起,我们会因为许多连接而变得非常混乱。

使用面包板布线混乱

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

为Arduino空气质量显示器制作PCB

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

Altium Designer  -  Arduino空气质量监控PCB 3D模型

Altium Designer代表了几十年的创新和发展,致力于创造一个真正的统一设计环境。Altium Designer在市场上获得了最广泛使用的PCB设计解决方案,令人难以置力的能力和易用性之间的完美平衡。

现在我将向您展示我如何使用Altium Designer为此项目设计PCB。我开始制作项目的原理图。Altium Designer拥有具有基本电子元件的内置库,但更好您可以从制造商中搜索组件,这使得项目的采购组件非常方便。

在Altium Designier  -  Arduino空气质量电路原理图中工作

正确电阻值:R1 = 1K,R2 = 2K,R6 = 100K或1M,R7 = 1K

例如,我发现使用此制造商零件搜索功能的Mini USB连接器。从这里,您还可以轻松地访问与组件相关的数据,如3D模型,脚印,尺寸等。

您还可以创建自己的组件库。我自己创建了这个项目的大部分组件,因为我想为每个部分创建我自己的3D足迹,这样在最后,我将得到3D的整个PCB。为了创建PCB足迹的3D模型,您可以使用任何CAD软件,将文件保存为. step文件,并将它们导入Altium Designer。

在Altium Designer中制作一个3D模型的足迹

一旦我完成了原理图,我就生成了PCB。我按照自己的意愿排列了这些部件,只需使用“自动路径”功能简单地点击一下,软件就会自动生成所有的轨迹。

使用Altium Designer为Arduino空气质量监控器制作定制PCB

如果需要,我们可以手动创建或调整它们。此外,我们可以设置设计规则自动路由如何使迹线设置,为每个网络等设置不同的宽度等。此时,我们还看到了3D中的PCB,并导出整个PCB组件的3D文件,该组件将用于稍后为其设计一个情况。

尽管如此,我想感谢Altium赞助这样的教育内容。如果您想了解更多有关此软件的信息并尝试出来,您可以查看以下链接。您还可以尝试基于Web的Altium 365查看器进行项目预览和文件。

Altium设计师免费试用-https://www.altium.com/yt/bet188官方网站howtomechatronics.
Altium 365观众:https://www.altium.com/viewer.

以下是Altium Designer项目文件:

Altium Designer文件包括电子元件3D模型的项目文件、库和.STEP文件:必威lol

PCB Gerber文件:

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

使用Altium Designer生成Gerber文件

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

从jlcpcb排序pcb

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

组装PCB

几天后,PCB已经到了。PCB的质量很大,一切都与设计完全相同。

Arduino空气质量监视器定制设计PCB

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

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

组装PCB  -  DIY空气质量显示器

接下来,我们可以将DHT22传感器插入到位。为了达到这个目的,首先我们需要把它的针弯曲90度。有时我也使用蓝tack粘合剂保持组件在地方焊接。

该项目中使用的两个电容用于稳定电源。电路板的电源将来自迷你USB连接器,我们可以连接5V。

通过Mini USB接口为Arduino空气质量监测仪供电

在电源连接器上方,我们需要焊接两个交换机。一个是用于打开和关闭设备,当我们想要将草图上传到Arduino板时,使用另一个。然后我们可以将USB的引脚标头插入UART接口,显示器和PM2.5传感器,以及VOC,臭氧和CO2传感器到位。

接下来,焊接焊接DS3231实时时钟模块再次,首先我们需要弯曲的大头针90度。一旦焊接,我们可以插入电池跟踪时间,即使主PCB失去电源。这样PCB就完成了,剩下要做的就是准备将PM2.5传感器和显示器连接到PCB上的电缆。我焊接公引脚头的电缆,与传感器,所以我能够很容易地连接到PCB。为了将显示器连接到PCB上,我在显示器连接器的背面焊接了四根电线,然后将它们连接到PCB上。

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

SolidWorks中的空气质量显示器的3D模型

我用了这个目的的SolidWorks,并使最简单的案例成为可能只有两部分和少量螺栓和螺母。我决定使用透明丙烯酸的案例,因为我喜欢PCB和组件的外观如何看,这也是炫耀你的DIY项目的好方法。

在这里,您可以下载DYI空气质量监视器的3D模型:

SolidWorks文件:

步文件:

空气质量监测器的案例

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

用丙烯酸制作Arduino空气质量监测仪

为了开放显示,首先我用钻头制成两个孔。然后我通过迷你钢锯的刀片,并小心地切割形状。使用简单的锉刀,我平滑了形状。然后使用3mm钻,我制造了所有孔,用于连接PCB并将两个丙烯酸板连接在一起。

此时,我从丙烯酸中取出了保护性箔,并诚实地是诚实的过程。为了将PCB连接到底板,我使用了一些M3螺栓和螺母。将PM2.5传感器连接到板上,我们需要M2螺栓。

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

我个人真的很喜欢这种情况,加上,它的功能是空气可以容易地循环传感器。

编程

好了,现在我们可以启动设备上传程序了。我们可以通过Mini USB连接器为空气质量监测仪供电,我们可以从5V USB适配器、5V手机充电器或电源银行获得5伏电压。

编程Arduino空气质量监视器 - 使用FTDI上传草图

为了将程序上传到Arduino Pro Mini板,我们需要一个USB到串行UART接口,可以连接编程头。在连接到电脑USB之前,我们必须先打开设备的主电源,否则电脑USB只有500mA的电源可能不足以正常工作。在上传Arduino草图的时候,我们也需要切换PCB上的上传开关。

你可以在这里下载Arduino代码和Nextion显示程序:

要将草图上传到Arduino Pro Mini板,请在Arduino IDE中首先,我们需要选择此板,选择正确版本的处理器,选择端口并选择编程方法“USBASP.“。

如何使用FTDI将代码上传到Aduino Pro Mini板

一旦我们将代码上传到Arduino,我们也需要将代码上传到Nextion展示。Neighion Displays拥有内置的ARM控制器,实际上是自己控制的显示。

使用拔业编辑为空气质量监视器进行GUI

所有图形如下按钮,文本,图像,变量等,由Display本身生成和控制。这Nextion显示有一个专用的Nextion编辑器,我们可以创建所有这些东西。该显示器与Arduino通信只需两根线采用串行通信。Arduino只是简单地将值从传感器发送到显示器,反之亦然,显示器在需要时将数据发送到Arduino。

要上传显示程序,我们需要一个microSD卡,我们可以从中保存输出.tft文件Nextion编辑。

使用microSD卡将程序上传到Nextion显示

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

暖身-启动空气质量监控器时感应器燃烧

代码解释

因此,我们正在为每个传感器使用库,并且可以在以下链接上找到,MHZ19.经前综合症MQ131DHT.DS3231.为了更好地理解我们如何从每个传感器读取数据,我建议阅读库文档并尝试它们的示例。

我们还使用软件中的库,因为MH-Z19和PMS5003传感器都使用串行通信。Arduino和Textion Display还使用串行端口进行通信,在这种情况下,我们正在使用默认硬件串行。

Arduino空气质量监控程序 - 它如何运作betway

因此,Arduino读取传感器并将该数据发送到初始显示。这是一个例子。

serial.print(“tempv.val =”);serial.print(temp);serial.write(0xff);serial.write(0xff);serial.write(0xff);

因此,我们在名为“tempv”的inteion显示屏上有一个变量,以便更新它的值,我们需要将命令发送到indion,如以下“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代码循环一样,它不断地更新显示上的数字。

Nextion显示计时器

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

在第二页上,我们有波形,从Arduino获取存储值的值。请注意,您可以在arduino代码本身找到更多信息,因为代码的评论有说明。

小时和y轴值也从Arduino获得它们的值。

在波形之上,以及主屏幕上的数字,您可以注意到我们在ideion编辑器中称为“hotstops”的透明对象,它们充当按钮。如果我们按波形上的HotStop,我们可以在事件部分中看到它将我们发送回“第0页”。

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

请注意,对于VOC传感器,我们只是从该传感器读取原始数据,而不是PPM或PPB值。只有0到1024的模拟值。较高的值意味着存在VOC。

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

我希望你喜欢这个视频,并学到了一些新的东西。如果你有的话,请考虑一下支持我Patreon随意询问以下意见部分中的任何问题,并检查我的Arduino项bet188me目集合

38岁的反应

  1. Wolfgang Rupp.

    嗨,德扬,
    很高兴你再次发布一个项目,我总是等待下一个项目的兴奋,我肯定会建立你的全新项目,bet188me
    请保持健康
    来自德国的沃尔夫冈Rupp

    回复
  2. 龙头

    非常感谢这篇文章!- 这正是我正在考虑在不久的将来制作的东西。几天前我副本的CNC泡沫刀具 - 期待制作这个项目!

    回复
  3. 账单

    上面如上所示的示意图缺失导线。应该有来自MQ-131的引脚6到Arduino的A0输入的连接。

    回复
    • 德扬

      它们在图中用D6和A0表示。我没有绘制所有的线路,因为它会一团糟,更难看出东西。

      回复
  4. kirubel yonas.

    嗨,德扬,
    我非常喜欢这个项目,即使是从智能手机控制的Arduino机器人手臂
    我想这是我的第二个或第三个项目。外出时可以使用NRF24L01模块进行按摩。顺便说一下,我13岁了,这很疯狂。我希望你尽快答复。带着我的问候,kirubel。

    回复
    • 德扬

      嘿,很高兴你喜欢它。好好确保您可以进行任何修改,可以使用NRF24L01进行无线传输数据。

      回复
  5. 安迪僧侣

    不错的项目。有没有想过把arduino pro mini改成ESP32?

    然后你可以抛弃rtc,开关和usb连接器。它刷新数据的速度可能也更快,而且有wifi(所以ntp时间,你可以上传数据)。

    回复
  6. Ed Brisebois.

    你好,

    不错的项目。

    Arduino Pro Mini的Amazon Link是不同的。
    bang - good版本看起来是正确的。

    回复
    • 德扬

      嘿,谢谢!是的,那个有点不同,但你仍然可以用它作为我们在这个项目中需要和使用的大头针都在同一个地方。

      回复
  7. 肯巴恩

    嗨,德扬,
    伟大的项目。除了被动组件外,我有一切正常。我无法在此项目页面上找到完整的材料清单。电容值,电阻器,晶体管,集管引脚,开关和USB连接器。你能把我指向完整的bom吗?

    谢谢!等不及组装和开始使用这个!

    回复
  8. 这是夫妻

    嗨,德扬!
    很棒的项目,谢谢!
    你能告诉我你为什么在这个项目中使用两个晶体管吗?他们如何激活传感器加热器?
    为什么PMS5003 PM传感器的RX信号有两个电阻,1K和2K,但RX似乎只通过1K电阻,2K是一个下拉电阻吗?
    谢谢您的帮助!

    回复
    • 德扬

      嘿,谢谢!激活两个传感器加热器的电阻(连接到晶体管的基极)用于限制晶体管基极电流。另一方面,PMS5003传感器上的两个电阻用作分压器。PM传感器RX引脚工作在3.3V,所以我们用两个电阻做一个分压器,将来自Arduino的5V降至3.3V。

      回复
  9. 伊恩见

    德州,
    伟大的项目。但您的下载链接似乎并不工作。特别是Arduino代码,SolidWorks文件和Altium Designer文件。我每个人都得到的只是4克无效的.rar文件。随着我刚刚完成订购所有零件和传感器,将欣赏您的帮助。
    问候. .伊恩

    回复
  10. 克里斯蒂安R.

    嗨,德扬,
    不错的项目。它立刻迷住了我,我想尝试并构建它。问题是,我是一个新手,在电子方面没有经验,我有一些问题。必威lol
    需要什么样的电容器?我能读出电阻和晶体管的值,但不能读出电容器的值。
    如果我还有其他问题,我正在收集所有所需的部分,如果你有其他问题,那么如果你有其他问题。

    最好的问候和谢谢你这个非常有用的和兴趣的项目,
    基督教

    回复
    • 德扬

      嘿,很高兴听到它,谢谢!我在零件列表部分中更新了文章,请立即查看。我希望你能有一个乐趣建造一个。至于电子产品,我认为你必威lol应该没问题,好像你连接一切,就像解释的一切一样好。另一方面,请记住,了解一切都有效,特别是编程部分,诚实的情况有点难以努力,这实际上并没有得到很好的优化。干杯!

      回复
  11. korin setur.

    你好,德扬,

    非常有趣的项目,然而,独立是有点限制。
    您是否考虑过SWAPPINIINIINE作为ESP 8266?或者甚至是esp32?这将使它集成到目前的系统中,是既是胎儿或其他,非常容易!

    谢谢您的宝贵时间

    回复
  12. 基督教的G。

    嗨,德扬,

    这是一个伟大的项目-感谢你在这里分享的细节。
    我注意到您在所有原理图之间混合了电阻值(用于模拟输入/晶体管)
    -在第一个符号概述中,你使用1M电阻进行模拟传感(VOC和臭氧)
    在Altium的示意图快照中,你为VOC传感器使用了一个10k的感应电阻,而R6/R7的电阻似乎被互换了(但感应电阻仍然是100k)此外,分压器R1/R2必须反过来,以得到3.3V从Arduino 5V
    在附加的原理图文件中,分压器R1/R2是正确的,但是电阻R6/R7仍然是互换的(现在恢复到1M)

    只要理解数据表
    - 晶体管Q1 / Q2的电流限制电阻R5 / R7应该是1K
    根据github上的库,vocs传感器的感应电阻是1M(但100k似乎更适合1k-30k的传感器电阻)
    - 臭氧传感器的传感电阻应为10K
    你能检查一下你的经历吗?

    回复
    • 德扬

      好吧,实际上是真的,电阻值有点搞砸了这个原理图,抱歉。然而,你确实很好地弄出了它们,你的积分是正确的。谢谢你的输入!

      回复
      • 晒黑

        为您的读者的好处,我建议您列出电阻值并更新您的原理图。
        谢谢

  13. 大卫文森特

    嗨,德扬,

    喜欢这个项目!

    我遵循了你的指导,已经成为了几个礼物。我很乐意看到这个项目的第2版与WiFi或NRF24L01发布到我当地代理的MQTT数据。

    我现在在所有媒体上关注你,
    再次感谢!

    回复
  14. Milosz.

    真的很棒的项目。使用WiFi或BT和另外的气压传感器,这将是杀手站。
    关于Altium Designer,看起来真的很棒,但价格标签是Hobbyist的这个世界,不幸的是。

    回复
  15. 弗雷德里克

    嗨,德扬,

    今晚,我完成了系统的塑料外壳,一切都是完美的!我完全遵循你的指示,它完美地工作。
    非常感谢,我正在等待下一个项目;-)。

    回复
  16. 迈克尔·弗里茨

    我已经重建了这个项目,它是伟大的乐趣,这样做,因为一切都有一个伟大的描述和所有可下载的文件ghelp和工作良好。
    谢谢你的伟大项目:很有趣!!
    wifi连接将是一个巨大的好处!
    我会尝试使用esp-01 ...
    一个问题仍然留下:我没有ozon的任何价值?!?!
    它总是0。传感器没有安装方向,对吗?没有方向标志或其他任何东西....请确认!

    回复
    • 德扬

      嘿,很高兴听到你建造它!嗯,是的,臭氧传感器读数有点复杂,因为它在库中使用阻塞(延迟)功能。尝试使用库示例只测试臭氧传感器。在这样我认为你会得到适当的值。我证明它不适用于臭氧传感器的代码,这是真的。

      回复

发表评论

您的电子邮件地址不会被公开。

受到推崇的

2019年最佳入门级示波器初学者和爱好者

为初学者和爱好者最好的示波器

受到推崇的

2019年初学者的8个最佳Arduino Starter Kits

初学者的8个最佳Arduino Starter Kits

受到推崇的

用于初学者和爱好者的最佳3D打印机 -  3D打印

初学者和爱好者的最佳3D打印机