DIY空氣質(zhì)量監(jiān)測(cè)器
DIY空氣質(zhì)量監(jiān)測(cè)器—PM2.5、CO2、VOC、臭氧、溫度和濕度Arduino儀表
有時(shí)你會(huì)覺得辦公室里的空氣很累,甚至?xí)X得很累?糟糕的空氣質(zhì)量會(huì)導(dǎo)致許多負(fù)面的健康影響,也會(huì)導(dǎo)致疲勞、頭痛、注意力不集中、心率加快等。監(jiān)測(cè)空氣質(zhì)量可能比你意識(shí)到的更重要。因此,在本教程中,我們將學(xué)習(xí)如何建立我們自己的空氣質(zhì)量監(jiān)測(cè)器,能夠測(cè)量PM2.5、CO2、VOC、臭氧以及溫度和濕度。
概述
我會(huì)解釋每個(gè)傳感器的工作原理。這個(gè)項(xiàng)目的大腦是一個(gè)Arduino Pro微型板,與2.8英寸Nextion觸摸顯示屏相結(jié)合,提供了一個(gè)不錯(cuò)的用戶界面。
我們可以實(shí)時(shí)看到所有傳感器的測(cè)量值,如果我們點(diǎn)擊某個(gè)特定的傳感器,我們將從該傳感器獲取過(guò)去24小時(shí)的值。還有一個(gè)調(diào)光功能,通過(guò)它我們可以降低顯示器的亮度,甚至完全關(guān)閉顯示器。這是很方便的,例如,如果我們想跟蹤我們的臥室在夜間的空氣質(zhì)量。
我們可以在晚上關(guān)閉屏幕,第二天我們可以單獨(dú)檢查每個(gè)傳感器的值。
盡管如此,現(xiàn)在我將引導(dǎo)您完成構(gòu)建它的整個(gè)過(guò)程,并解釋一切是如何工作的。在這個(gè)視頻的最后,你將能夠建立一個(gè)自己的。那么,我們開始吧。
PM2.5傳感器–PMS5003
該裝置有四個(gè)主要部件或空氣質(zhì)量傳感器。我們正在使用PMS5003傳感器來(lái)測(cè)量PM2.5或空氣中直徑約為2.5微米的顆粒物。顆粒物是空氣污染中最有害的形式,因?yàn)樗鼈兡苌钊敕尾?、血液和大腦,造成許多健康問(wèn)題。
這種傳感器的工作原理是激光散射。該傳感器有一個(gè)風(fēng)扇,可以產(chǎn)生一個(gè)可控的氣流,使環(huán)境中的顆粒通過(guò)聚焦的激光束。
微粒引起光散射,光電二極管檢測(cè)到散射,然后在微處理器的幫助下轉(zhuǎn)換成顆粒物濃度。我發(fā)現(xiàn)這個(gè)傳感器的結(jié)果是相當(dāng)可靠的,它也可以輸出PM1和PM10的值。
二氧化碳傳感器–MH-Z19
接下來(lái),我們將使用MH-Z19傳感器來(lái)測(cè)量二氧化碳或二氧化碳。由于人們?cè)诤粑鼤r(shí)排放二氧化碳,室內(nèi)的二氧化碳濃度很容易變得很高。二氧化碳不僅在高濃度下是危險(xiǎn)的,而且還可能導(dǎo)致困倦、疲勞,降低我們的生產(chǎn)力水平等等。
該傳感器采用非色散紅外原理測(cè)量空氣中的二氧化碳。一個(gè)紅外光源引導(dǎo)光線通過(guò)一個(gè)充滿我們正在測(cè)量的空氣的管子。在紅外光源的另一側(cè),有一個(gè)濾光片和一個(gè)紅外探測(cè)器,它測(cè)量通過(guò)的紅外線的量。
我們測(cè)量的空氣中的二氧化碳?xì)怏w分子吸收特定波段的紅外光,同時(shí)讓一些波長(zhǎng)通過(guò)。因此,二氧化碳水平是根據(jù)****的光量和探測(cè)器接收到的紅外光量之間的差值來(lái)計(jì)算的。這個(gè)傳感器的結(jié)果也相當(dāng)準(zhǔn)確。
VOC和臭氧傳感器–MP503和MQ-131
我們使用MP503和MQ131氣體傳感器測(cè)量VOC和臭氧。這些是加熱的金屬氧化物傳感器,其工作原理是基于檢測(cè)目標(biāo)氣體存在時(shí)電阻的變化。
一個(gè)特定的電流通過(guò)一個(gè)金屬基底,電阻隨氣體含量的變化而變化。
MQ131傳感器的目標(biāo)氣體僅僅是臭氧,在正常的家庭中,臭氧可以由產(chǎn)生紫外線的某些空氣凈化器、面部蒸汽機(jī)、殺菌燈等產(chǎn)品產(chǎn)生。
另一方面,MP503傳感器有多個(gè)目標(biāo)氣體,包括酒精、煙霧、異丁烷、甲醛等。VOC代表?yè)]發(fā)性有機(jī)化合物,是我們?nèi)粘J褂玫南匆路邸⑶鍧崉?、空氣清新劑、油漆、化妝品等的有機(jī)排放物。揮發(fā)性有機(jī)化合物會(huì)引起許多負(fù)面的健康影響,包括頭痛、眼睛刺激、皮膚反應(yīng)、頭暈等。
DIY Arduino空氣質(zhì)量監(jiān)測(cè)器-電路圖
盡管如此,現(xiàn)在讓我們看一下電路圖,解釋一下所有東西都需要如何連接。
您可以從以下鏈接獲取Arduino空氣質(zhì)量監(jiān)測(cè)器所需的部件:
PMS5003 PM傳感器………………………… / /
MH-Z19二氧化碳傳感器…………………… / /
MQ-131臭氧傳感器………………………… / /
MP503 VOC傳感器 ………………………… / /
DHT22溫度和嗡嗡聲傳感器 ……………… / /
Nextion 2.8英寸顯示器 ………………… / /
DS3231 RTC ……………………………… / /
Arduino Pro迷你版 …………………… / /
Distance / Spacer Nuts M3…………… / /
鏈接是:這些披露。作為亞馬遜的合伙人,我的收入來(lái)自合格的購(gòu)買。
PM2.5傳感器通過(guò)串行接口與Arduino通信。它的工作電壓是5V,但是接收RX邏輯電平工作在3.3v,所以我們需要一個(gè)分壓器。二氧化碳傳感器和Nextion顯示器也使用串行通信。為了讀取VOC和臭氧傳感器,我們使用Arduino的模擬輸入,而為此使用數(shù)字pin
這兩個(gè)晶體管用于激活傳感器加熱器。我們還使用實(shí)時(shí)時(shí)鐘模塊來(lái)跟蹤存儲(chǔ)傳感器值時(shí)的時(shí)間,它使用. 整個(gè)設(shè)備通過(guò)一個(gè)小型USB接口提供5V電源。
另請(qǐng)參見
現(xiàn)在如果我們?cè)噲D把所有的東西連接在一起,我們會(huì)因?yàn)檫B接太多而變得一團(tuán)糟。
所以,我們確實(shí)需要一個(gè)PCB來(lái)完成這個(gè)項(xiàng)目。
為Arduino空氣質(zhì)量監(jiān)測(cè)器制作PCB
為了制作這個(gè)項(xiàng)目的PCB,我將使用Altium Designer,它實(shí)際上是這個(gè)視頻的贊助商。
Altium Designer代表了數(shù)十年來(lái)致力于創(chuàng)造一個(gè)真正統(tǒng)一的設(shè)計(jì)環(huán)境的創(chuàng)新和發(fā)展。Altium Designer在功耗和易用性之間實(shí)現(xiàn)了完美的平衡,已成為市場(chǎng)上使用最廣泛的PCB設(shè)計(jì)解決方案。
現(xiàn)在我將向您展示如何使用Altium Designer為這個(gè)項(xiàng)目設(shè)計(jì)PCB。我從制作這個(gè)項(xiàng)目的示意圖開始。Altium Designer有內(nèi)置的基本電子元件庫(kù),但更好的是你可以直接從制造商那里搜索元件,這使得為你的項(xiàng)目采購(gòu)元件非常方便。
作為一個(gè)例子,我發(fā)現(xiàn)Mini-USB連接器使用了這個(gè)制造商部件搜索功能。從這里,您還可以方便地訪問(wèn)與組件相關(guān)的數(shù)據(jù),如三維模型、示意圖、尺寸等。
也可以創(chuàng)建自己的組件庫(kù)。我自己為這個(gè)項(xiàng)目創(chuàng)建了大部分元件,因?yàn)槲蚁霝槊總€(gè)零件創(chuàng)建自己的3D封裝外形,這樣在最后,我將得到整個(gè)PCB的三維模型。要為PCB封裝外形創(chuàng)建3D模型,您可以使用任何CAD軟件,將文件另存為.STEP文件,然后在Altium Designer中導(dǎo)入它們。
一旦我完成了原理圖,我就生成了PCB。我按照我想要的方式排列組件,只需點(diǎn)擊一下自動(dòng)布線功能,軟件就會(huì)自動(dòng)生成所有軌跡。
如果需要,我們可以手動(dòng)創(chuàng)建或調(diào)整它們。此外,我們還可以設(shè)置設(shè)計(jì)規(guī)則,自動(dòng)布線如何進(jìn)行跟蹤,為每個(gè)網(wǎng)絡(luò)設(shè)置不同的寬度等等。在這一點(diǎn)上,我們還可以看到三維的PCB,并導(dǎo)出整個(gè)PCB組件的3D文件,該文件將用于以后為其設(shè)計(jì)外殼。
盡管如此,我還是要感謝Altium贊助了這樣的教育內(nèi)容。如果你想了解更多關(guān)于這個(gè)軟件,也嘗試它,你可以看看下面的鏈接。您也可以嘗試基于web的Altium365查看器,用于項(xiàng)目預(yù)覽和文件。
Altium designer free trial:Altium 365觀察器:
以下是Altium Designer項(xiàng)目文件:
好的,所以一旦我完成了PCB,我就生成了Gerber和NC鉆孔文件,并將它們放入一個(gè)zip文件中,所以我準(zhǔn)備訂購(gòu)PCB進(jìn)行制造。
我. 在這里,我們可以簡(jiǎn)單地拖放zip文件,一旦上傳,我們將獲得關(guān)于我們的PCB的所有視覺信息。
然后我們可以選擇我們想要的性能,并以合理的價(jià)格訂購(gòu)PCB。
組裝PCB
幾天后,多氯聯(lián)苯就到了。印刷電路板的質(zhì)量很好,一切都和設(shè)計(jì)完全一樣。
所以,現(xiàn)在我們準(zhǔn)備開始組裝PCB了。我首先插入和焊接較小的元件,電阻和兩個(gè)晶體管。
然后我們可以把Arduino Pro迷你板焊接到位。但是,首先我們需要焊接引腳頭。請(qǐng)注意,我們不需要所有的引腳,但請(qǐng)確保您不要錯(cuò)過(guò)我們需要的一個(gè),如A4、A5和DTR引腳。還要確保你有這個(gè)完全相同的Arduino Pro迷你電路板的引腳布局,因?yàn)樗麄冇袝r(shí)可能是不同的。
接下來(lái),我們可以將DHT22傳感器插入到位。為此,首先我們需要將其銷彎曲90度。有時(shí),我也使用Blu-tack粘合劑在焊接時(shí)保持組件的位置。
本工程使用的兩個(gè)電容器是用來(lái)穩(wěn)定供電的。電路板的電源將來(lái)自一個(gè)小型USB連接器,我們可以連接5V。
在電源連接器的正上方,我們需要焊接兩個(gè)開關(guān)。一個(gè)用于打開和關(guān)閉設(shè)備,另一個(gè)用于將草圖上載到Arduino板時(shí)。然后我們可以插入U(xiǎn)SB到UART接口的管腳頭,顯示器和PM2.5傳感器,以及VOC、臭氧和二氧化碳傳感器。
接下來(lái),焊接模塊再次,首先我們需要彎曲引腳90度。一旦焊接完成,我們就可以插入電池,即使主電路板斷電,它也能記錄時(shí)間。有了這些,印刷電路板實(shí)際上就完成了,剩下要做的就是準(zhǔn)備好電纜,我們將使用這些電纜將PM2.5傳感器和顯示器連接到PCB上。我把插頭頭焊接到傳感器附帶的電纜上,這樣我就可以輕松地將其連接到PCB上。為了將顯示器連接到PCB,我將四根導(dǎo)線焊接到顯示器連接器的背面,然后將它們連接到PCB上。
就這樣,我們的空氣質(zhì)量監(jiān)測(cè)已經(jīng)完成了。當(dāng)然,我們現(xiàn)在需要做的是做一些盒子或箱子。由于我們從Altium Designer獲得了整個(gè)PCB組件的3D模型,我們可以將其導(dǎo)入CAD軟件并為其設(shè)計(jì)一個(gè)案例。
為此,我使用SOLIDWORKS,并使最簡(jiǎn)單的情況下,只有兩個(gè)部分和幾個(gè)螺栓和螺母。我決定用透明亞克力做這個(gè)箱子,因?yàn)槲蚁矚gPCB和組件的外觀,這也是展示你DIY項(xiàng)目的一個(gè)很好的方式。
您可以關(guān)注并私信,發(fā)送下載DYI空氣質(zhì)量監(jiān)測(cè)器的3D模型鏈接:
為空氣質(zhì)量監(jiān)測(cè)做準(zhǔn)備
亞克力,我將使用4毫米滴答,這完全符合顯示器。由于我目前沒有數(shù)控機(jī)床,我用一個(gè)簡(jiǎn)單的金屬鋼鋸手工切割形狀。
為了開洞展示,我先用鉆頭打了兩個(gè)洞。然后我從一個(gè)小型鋼鋸上穿過(guò)一把刀片,小心地切割出這個(gè)形狀。我用一個(gè)簡(jiǎn)單的銼刀把形狀弄光滑了。然后用一個(gè)3毫米的鉆頭,我做了所有的孔,用來(lái)連接印刷電路板和連接兩塊亞克力板。
在這一點(diǎn)上,我從亞克力上取下了保護(hù)膜,說(shuō)實(shí)話,這是一個(gè)相當(dāng)令人滿意的過(guò)程。為了將PCB連接到底板,我使用了一些M3螺栓和螺母。為了將PM2.5傳感器連接到板上,我們需要M2螺栓。
下一段距離,我們可以用一些螺母把兩個(gè)板連接起來(lái)。通過(guò)使用一個(gè)母的和一個(gè)公的距離螺母,我能夠很容易地得到兩個(gè)板之間所需的距離。
我個(gè)人非常喜歡這個(gè)案子的結(jié)果,另外,它的功能是空氣可以很容易地在傳感器周圍流通。
編程
我們現(xiàn)在就可以上傳程序了。我們可以通過(guò)迷你USB接口為空氣質(zhì)量監(jiān)測(cè)器供電,我們可以從5V USB適配器、5V手機(jī)充電器或電源組獲取5V電壓。
為了將程序上載到Arduino Pro迷你板,我們需要一個(gè)USB到串行UART接口,該接口可以連接到編程頭。在連接到計(jì)算機(jī)USB之前,首先必須打開設(shè)備的主電源,否則來(lái)自計(jì)算機(jī)USB(只有500毫安)的電源可能不足以正常工作。上載Arduino草圖時(shí),我們還需要切換PCB上的上載開關(guān)。
要將草圖上載到Arduino Pro迷你板,首先在Arduino IDE中,我們需要選擇此板,選擇處理器的正確版本,選擇端口并選擇編程方法USBasp ".
一旦我們將代碼上載到Arduino,我們還需要將代碼上載到萊克遜顯示。實(shí)際上,它的控制器上有內(nèi)置的控件。
所有的圖形,如按鈕、文本、圖像、變量等等,都是由顯示器本身生成和控制的。這個(gè)萊克遜顯示屏有專用萊克遜編輯器,我們可以創(chuàng)建所有這些東西。顯示器和Arduino僅用兩條線進(jìn)行串行通信。Arduino只是將傳感器的值發(fā)送到顯示器,反之亦然,顯示器在需要時(shí)向Arduino發(fā)送數(shù)據(jù)。
為了上傳顯示程序,我們需要一個(gè)microSD卡,在那里我們可以保存萊克遜編輯
顯示器有一個(gè)讀卡器,我們可以在斷電時(shí)插入microSD卡。然后我們可以給設(shè)備加電,程序就會(huì)上傳到顯示器上?,F(xiàn)在我們只要把卡取下來(lái),再打開電源,我們的空氣質(zhì)量監(jiān)測(cè)器就可以開始工作了。
代碼說(shuō)明
因此,我們正在為每個(gè)傳感器使用庫(kù),這些庫(kù)可以在以下鏈接中找到, , , , ,. 為了更好地理解我們?nèi)绾螐拿總€(gè)傳感器讀取數(shù)據(jù),我建議您閱讀庫(kù)文檔并嘗試它們的示例。
我們還使用軟件串行庫(kù),因?yàn)镸H-Z19和PMS5003傳感器都使用串行通信。Arduino和Nextion顯示器也使用串行端口進(jìn)行通信,在本例中,我們使用默認(rèn)的硬件串行端口。
所以,Arduino讀取傳感器并將數(shù)據(jù)發(fā)送到Nextion顯示器。這里有一個(gè)例子。
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顯示程序中,我們有一個(gè)計(jì)時(shí)器,它在循環(huán)中運(yùn)行,就像Arduino代碼循環(huán)一樣,它不斷更新顯示器上的數(shù)字。
在這個(gè)計(jì)時(shí)器事件中,我們還有一個(gè)代碼,用于根據(jù)每個(gè)傳感器的值更改其背景顏色。
在第二頁(yè),我們有波形,它從Arduino存儲(chǔ)的值中獲取值。請(qǐng)注意,您可以找到更多關(guān)于Arduino代碼本身的信息,因?yàn)榇a的注釋中有解釋。
小時(shí)和Y軸的值也從Arduino獲得。
在波形和主屏幕上的數(shù)字上,你可以注意到我們有類似的透明對(duì)象,在Nextion編輯器中稱為"hotstop",它們充當(dāng)按鈕。如果我們按下波形上的熱停止按鈕,我們可以在事件部分看到它將我們送回"第0頁(yè)"。
總的來(lái)說(shuō),這就是Arduino空氣質(zhì)量監(jiān)測(cè)儀的工作原理。當(dāng)然,為了完全理解它是如何工作的,你需要學(xué)習(xí)和了解每個(gè)傳感器是如何與其庫(kù)一起工作的,以及Nextion顯示器是如何工作的。
請(qǐng)注意,對(duì)于VOC傳感器,我們只讀取該傳感器的原始數(shù)據(jù),而不是ppm或ppb值。只是0到1024的模擬值。較高的值表示存在VOC。
至于臭氧傳感器,為了獲得更精確的輸出,我們必須根據(jù)庫(kù)的校準(zhǔn)示例正確設(shè)置setTimeToRead()和setR0()值。然而,較長(zhǎng)的setTimeToRead意味著程序?qū)⒃诓蓸訒r(shí)被阻止,其他一切都將凍結(jié)。當(dāng)然,有辦法解決這個(gè)問(wèn)題。我甚至建議不要使用臭氧傳感器,除非你真的需要它。
我希望你喜歡這個(gè)文章,并學(xué)到一些新的東西。如果你有請(qǐng)考慮,請(qǐng)點(diǎn)贊支持,并隨時(shí)在下面的評(píng)論部分提出任何問(wèn)題。
需要Altium Designer文件(電子元件三維模型的項(xiàng)目文件、庫(kù)和.STEP文件),DYI空氣質(zhì)量監(jiān)測(cè)器的3D模型(DIY空氣質(zhì)量監(jiān)測(cè)器-Solidwork文件和Step文件),DIY空氣質(zhì)量監(jiān)測(cè)器程序和顯示代碼-(Arduino代碼和Nextion程序)可以關(guān)注,并私信我索取。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。