0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

制作一個PM2.5測試儀

工程師 ? 來源:未知 ? 作者:姚遠(yuǎn)香 ? 2019-05-17 15:49 ? 次閱讀

霧霾已成常態(tài),自己DIY一個PM2.5檢測儀還是很有必要的。利用零基礎(chǔ)入門開發(fā)板 Arduino UNO R3,只需很簡單的電路和很少的代碼就能自制一個PM2.5檢測儀。為保證測量精度,這里選用激光粉塵傳感器來測試空氣中的霧霾污染程度,同時選用DHT11來檢測環(huán)境溫度和濕度,非常適合中小學(xué)生練習(xí)。

一、制作PM2.5檢測儀所需的材料

Arduino UNO R3開發(fā)板,一個

激光PM2.5傳感器,一個

1.3寸OLED屏,1個

濕度傳感器DHT11,一個

面包板,一個

杜邦線,若干

電阻,阻值約5k,1個

二、元件介紹

1、Arduino UNO R3開發(fā)板

Arduino是一個開放源代碼的設(shè)計平臺,由硬件Arduino板和軟件Arduino IDE集成開發(fā)環(huán)境兩部分組成。Arduino板是一個以AVR單片機為核心的開源硬件平臺,有多種型號和配套資源,其中最基礎(chǔ)、最常用的是Arduino UNO R3板,價格低廉、售價約23元,體積小巧、使用方便。Arduino IDE是一款非常優(yōu)秀的軟件開發(fā)平臺,界面簡潔友好,上手快,具有很好的跨平臺性。

Arduino編程是基于入門級的C語言,門檻低,最重要的是在Arduino環(huán)境中,很多功能均已封裝成函數(shù),可直接調(diào)用函數(shù)完成相應(yīng)的功能,大大降低了編程復(fù)雜度,學(xué)生無需具備太多的單片機知識就可使用 Arduino板與各種傳感器、電子元件連接,快速搭建出各種有趣的、實用的電路,實現(xiàn)豐富的功能。Arduino還支持第三方庫和硬件等,靈活性和擴展性強。

2、激光PM2.5傳感器

為保證測試精度,選用了一款激光PM2.5傳感器,缺點是售價比較離譜,這東西成本不高,但因為缺乏競爭,所以價格一直居高不下。

該傳感器接口有6個引腳,但實際上只用到4個,各引腳定義如下所示。

制作一個PM2.5測試儀

傳感器采用異步串行通信方式(UART),以幀為單位進行通訊。幀格式固定,每一幀由9 個字節(jié)組成,分命令幀和應(yīng)答幀。當(dāng)外部設(shè)備向傳感器發(fā)送命令幀時,傳感器會回復(fù)外部設(shè)備對應(yīng)的應(yīng)答幀。

波特率:9600;

校驗位:無;

停止位:1 位;

數(shù)據(jù)位:8;

制作一個PM2.5測試儀

3、OLED屏

OLED顯示屏采用有機發(fā)光二極管,不需背光源,是一種較新型的顯示屏,缺點是價格較高,不如LCD壽命長。

有機發(fā)光顯示技術(shù)由非常薄的有機材料涂層和玻璃基板構(gòu)成。當(dāng)有電荷通過時這些有機材料就會發(fā)光。OLED發(fā)光的顏色取決于有機發(fā)光層的材料,故廠商可由改變發(fā)光層的材料而得到所需之顏色。有源陣列有機發(fā)光顯示屏具有內(nèi)置的電子電路系統(tǒng)因此每個像素都由一個對應(yīng)的電路獨立驅(qū)動。OLED具備有構(gòu)造簡單、自發(fā)光不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣等優(yōu)點。

本例程采用128x64的1.3寸OLED單色顯示屏,IIC接口

接線時,請務(wù)必仔細(xì)核對電源和地線,不要接反。

4、溫濕度傳感器

DHT11 是一款廉價的溫濕度傳感器,利用濕敏電阻測量濕度,采用數(shù)字溫度傳感器測試溫度,并由單片機處理后采用串行輸出。DHT11 售價約4元,就是略丑。DHT22 售價約15元,雖然顏色變白了,但顏值依然很低。二者管腳定義一樣,但操作時序不同在應(yīng)用時需要注意。這里,我們選用DTH11型號。

制作一個PM2.5測試儀

DHT11的硬件連接非常簡單,原理圖如下:

制作一個PM2.5測試儀

三、軟件環(huán)境配置

安裝

雙擊arduino-1.8.3-windows.exe,出現(xiàn)安裝導(dǎo)向,依次確認(rèn),默認(rèn)安裝即可。安裝完成后,桌面上會出現(xiàn)Arduino軟件的logo,下次使用時雙擊。

配置開發(fā)環(huán)境

插入Arduino UNO R3開發(fā)板,系統(tǒng)自動安裝USB驅(qū)動。

選擇相應(yīng)的板卡

制作一個PM2.5測試儀

選擇端口

可以通過設(shè)備管理器查看設(shè)備對應(yīng)的端口情況,本機對應(yīng)的是COM5。

制作一個PM2.5測試儀

驗證

打開文件,示例,找到Blink程序

制作一個PM2.5測試儀

點擊對號驗證程序能否通過編譯,如果一切正常;點擊向右的箭頭將編譯好的程序上傳至Arduino UNO R3的AVR單片機中;也可以直接點擊該箭頭,IDE會先執(zhí)行驗證,通過驗證后直接上傳。

如果看到LED燈閃爍,說明一切正常。恭喜你,安裝成功,板卡正常。

添加第三方庫

啟動Adruino IDE

項目-》加載庫-》管理庫,搜索DHT,安裝 DHT sensor library,以支持DHT11

項目-》加載庫-》管理庫,搜索U8GLIB,安裝 U8GLIB,以支持OLED

四、開始動手實踐

操作溫濕度傳感器

1、先把Arduino UNO R3板子上的電源和地引到面包板上

2、把溫濕度傳感器連接好,其中傳感器的數(shù)據(jù)輸出SDA接Arduino板的A0口。溫濕度的連接方式非常簡單,如本文前面的原理圖所示,除了電源和地,只有一根SDA線經(jīng)5-10k電阻上拉至5V,同時接Arduino板的A0口即可。

3、調(diào)入例程

文件-》示例-》DHT sensor library -》DHTtester

4、修改數(shù)據(jù)輸入端

#define DHTPIN A0// what digital pin we‘re connected to

5、修改例程,支持 DHT11,去掉該行前面的//

#define DHTTYPE DHT11 // DHT 11

6、上傳程序,打開串口監(jiān)視器,設(shè)置9600波特率,觀察環(huán)境溫濕度。

操作OLED屏

1、斷開Arduino UNO R3板子的電源

2、把OLED屏連接好,由于是IIC接口,電路連接很簡單,OLED屏除了連接好電源和地,只需將SCL接Arduino板的A5端,SDA接Arduino板的A4端即可。

3、調(diào)入例程

文件-》示例-》U8glib -》helloword

4、修改例程,支持OLED,去掉該行前面的//

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI

5、上傳程序,觀察OLED屏的顯示是否正確。

操作PM2.5傳感器

該傳感器是一款激光數(shù)字式PM2.5傳感器,內(nèi)置激光器和光電接收組件,采用光散射原理,激光在顆粒物上產(chǎn)生散射光,由光電接收器轉(zhuǎn)變?yōu)殡娦盘?,再通過特定算法計算出PM2.5值和PM10值。

該傳感器采用串口輸出,除了1腳接地,2腳接電源,再將3腳TXD和4腳RXD分別接Arduino板的D5、D6端口,當(dāng)然,您也可以接別的端口,只要程序做相應(yīng)的修改即可。

常用指令只需要三條,分別是開機指令、讀取PM2.5值指令和關(guān)機指令,不妨根據(jù)手冊自己編寫試試,簡單起見,可以用串口監(jiān)視器顯示結(jié)果。

五、編寫程序,實現(xiàn)PM2.5檢測儀

由于硬件電路已經(jīng)逐步連接完畢,下面可以針對整個電路編寫程序了,把各部分功能統(tǒng)一起來,軟件示例代碼如下:

#include 《DHT.h》

#include “U8glib.h”

#include 《SoftwareSerial.h》

// 說明,這僅是一個簡單的示例程序,目的是幫助初學(xué)者入門

#define DHTPIN A0 // 接溫濕度傳感器的數(shù)據(jù)端

// 選擇合適的溫濕度傳感器型號

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

uint8_t PM25_OPEN[] = {0xAA,0x01,0x00,0x00,0x00,0x00,0x01,0x66,0xBB}; //開機指令

uint8_t PM25_CLOSE[] = {0xAA,0x03,0x00,0x00,0x00,0x00,0x01,0x68,0xBB}; //關(guān)機指令

uint8_t PM25_DATA[] = {0xAA,0x02,0x00,0x00,0x00,0x00,0x01,0x67,0xBB}; //讀數(shù)據(jù)指令

DHT dht(DHTPIN, DHTTYPE);

// 軟串口定義格式 SoftwareSerial(rxPin, txPin, inverse_logic

SoftwareSerial mySerial(5, 6); //定義軟串口,D5、D6分別連接PM2.5傳感器的3(TXD)、4(RXD)

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI OLED屏定義

uint16_t pm25, pm10;

float h, t, hic;

void setup() {

mySerial.begin(9600); //設(shè)置軟串口波特率與PM2.5傳感器一致

if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {

u8g.setColorIndex(255); // white

}

else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {

u8g.setColorIndex(3); // max intensity

}

else if ( u8g.getMode() == U8G_MODE_BW ) {

u8g.setColorIndex(1); // pixel on

}

else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {

u8g.setHiColorByRGB(255,255,255);

}

pmOn();

delay(2000);

}

int i=0;

void loop() {

u8g.firstPage();

if (i==0) pmRead();

if(i》=5) i=0;else i++;

dhtRead();

do {

draw();

} while( u8g.nextPage() );

delay(500);

}

void pmOn(){

mySerial.write(PM25_OPEN,9);

}

void pmOff(){

mySerial.write(PM25_CLOSE,9);

}

void pmRead(){

uint8_t data[9];

//while(mySerial.available());

mySerial.write(PM25_DATA,9);

delay(100);

for(int i=0;i《9;i++){

if (mySerial.available()) {

data[i] = mySerial.read();

}

}

if(data[0]==0xAA && data[8]== 0xBB){

pm25 = data[4]*256 + data[5];

pm10 = data[2]*256 + data[3];

}

}

void dhtRead(){

// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)

h = dht.readHumidity();

// Read temperature as Celsius (the default)

t = dht.readTemperature();

// Compute heat index in Celsius (isFahreheit = false)

hic = dht.computeHeatIndex(t, h, false);

}

void draw(void) {

// graphic commands to redraw the complete screen should be placed here

char sendBuff[20];

u8g.setFont(u8g_font_unifont_78_79);

sprintf(sendBuff,“%c”,14);

u8g.drawStr( 0, 18, sendBuff);

u8g.setFont(u8g_font_unifont);

sprintf(sendBuff,“H:%2d%% T:%2d%cC”,(int)h,(int)t,0xB0);

u8g.drawStr( 20, 18, sendBuff);

u8g.setFont(u8g_font_profont22);

sprintf(sendBuff,“PM2.5:%4d”,pm25);

u8g.drawStr( 6, 42, sendBuff);

sprintf(sendBuff,“PM 10:%4d”,pm10);

u8g.drawStr( 6, 64, sendBuff);

}

運行結(jié)果

六、工匠精神

為使這款PM2.5檢測儀更具有實用性,你也可以動手制作印刷電路板,為便于初學(xué)者使用,主控芯片可以采用與Arduino UNO R3板子一樣的CPU。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 測試儀
    +關(guān)注

    關(guān)注

    6

    文章

    3736

    瀏覽量

    54869
  • PM2.5
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    26202
收藏 人收藏

    評論

    相關(guān)推薦

    電池測試儀的使用方法 電池測試儀適用范圍

    電池測試儀的使用方法 電池測試儀是用于物理性能測試的設(shè)備,主要用于檢測電池的電流、電壓、容量、內(nèi)阻、充電放電溫度、電池循環(huán)壽命等,并給出相應(yīng)的曲線圖。以下是電池測試儀
    的頭像 發(fā)表于 12-02 09:20 ?311次閱讀

    pm2.5傳感器有什么作用

    隨著工業(yè)化和城市化的加速發(fā)展,空氣中的污染物種類和濃度日益復(fù)雜,其中PM2.5因其能深入肺部甚至血液,對人體健康構(gòu)成嚴(yán)重威脅,而成為公眾關(guān)注的焦點。為此,PM2.5傳感器應(yīng)運而生,以其強大的監(jiān)測功能和高度的智能化,成為現(xiàn)代環(huán)境管理的重要工具。
    的頭像 發(fā)表于 10-23 15:56 ?219次閱讀

    基于51單片機的溫濕度及PM2.5監(jiān)測系統(tǒng)仿真

    具體實現(xiàn)功能 (1)LCD1602液晶第行顯示當(dāng)前的PM2.5值,第二行顯示當(dāng)前的溫度值和濕度值; (2)可以設(shè)置PM2.5報警值、溫濕度上下限報警值。共4按鍵:復(fù)位按鍵、減鍵、加
    的頭像 發(fā)表于 10-22 14:10 ?387次閱讀
    基于51單片機的溫濕度及<b class='flag-5'>PM2.5</b>監(jiān)測系統(tǒng)仿真

    基于51單片機的甲烷、溫濕度及PM2.5監(jiān)測系統(tǒng)仿真

    具體實現(xiàn)功能 (1)LCD1602液晶第行顯示當(dāng)前的甲烷值及PM2.5值,第二行顯示當(dāng)前的溫度值和濕度值; (2)可以設(shè)置甲醛報警值、PM2.5報警值、溫濕度上下限報警值。共4按鍵
    的頭像 發(fā)表于 10-21 11:46 ?206次閱讀
    基于51單片機的甲烷、溫濕度及<b class='flag-5'>PM2.5</b>監(jiān)測系統(tǒng)仿真

    內(nèi)阻測試儀怎么測內(nèi)阻怎樣測量

    。 內(nèi)阻測試儀的工作原理 內(nèi)阻測試儀的工作原理基于歐姆定律,即電壓(V)等于電流(I)乘以電阻(R)。測試儀通過向電池施加已知的電流,然
    的頭像 發(fā)表于 09-18 17:35 ?988次閱讀

    pm2.5測試儀的網(wǎng)絡(luò)連接方式包括什么

    PM2.5測試儀種用于監(jiān)測空氣中細(xì)顆粒物(PM2.5)濃度的設(shè)備,對于環(huán)境監(jiān)測、空氣質(zhì)量評估和個人健康保護具有重要意義。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,P
    的頭像 發(fā)表于 09-07 11:02 ?604次閱讀

    pm2.5檢測的優(yōu)勢

    在當(dāng)今社會,pm2.5等微小顆粒物對健康的影響日益受到公眾關(guān)注。在這種背景下,款能夠準(zhǔn)確檢測空氣環(huán)境中多種要素的pm2.5檢測研究出來,成為守護我們呼吸健康的重要工具。
    的頭像 發(fā)表于 08-30 14:39 ?301次閱讀

    華盛昌五合PM2.5空氣質(zhì)量檢測產(chǎn)品介紹

    工業(yè)廢氣排放、汽車尾氣、燃燒產(chǎn)生的煙霧,以及多種化學(xué)性爆炸等因素,都可能對大氣造成污染,進而危害人體健康。為了準(zhǔn)確了解并有效控制室內(nèi)外空氣質(zhì)量,確保呼吸環(huán)境的健康與安全,擁有款高性能的PM2.5空氣質(zhì)量檢測顯得尤為重要。
    的頭像 發(fā)表于 08-08 16:41 ?484次閱讀
    華盛昌五合<b class='flag-5'>一</b><b class='flag-5'>PM2.5</b>空氣質(zhì)量檢測<b class='flag-5'>儀</b>產(chǎn)品介紹

    守護空氣質(zhì)量的科技利器:PM2.5傳感器全面解析

    ? 在當(dāng)今社會,隨著工業(yè)化進程的加速和城市化水平的提高,空氣質(zhì)量問題日益受到公眾關(guān)注。PM2.5,即細(xì)顆粒物,作為影響空氣質(zhì)量的關(guān)鍵因素之,其濃度水平直接關(guān)系到人們的健康。因此,PM2.5傳感器
    的頭像 發(fā)表于 07-26 08:39 ?853次閱讀
    守護空氣質(zhì)量的科技利器:<b class='flag-5'>PM2.5</b>傳感器全面解析

    基于STM32單片機的pm2.5空氣質(zhì)量檢測系統(tǒng)設(shè)計

    系統(tǒng)使用STM32單片機進行系統(tǒng)主控,使用PM2.5粉塵檢測模塊進行粉塵濃度檢測,實時顯示粉塵濃度,當(dāng)檢測到粉塵濃度超過設(shè)定閾值就會報警。
    的頭像 發(fā)表于 06-26 11:16 ?1623次閱讀
    基于STM32單片機的<b class='flag-5'>pm2.5</b>空氣質(zhì)量檢測系統(tǒng)設(shè)計

    阻抗測試儀測試頻率是多少

    阻抗測試儀測試頻率范圍是衡量其性能的重要參數(shù)之,它決定了測試儀能夠測量的信號頻率的上限。
    的頭像 發(fā)表于 05-08 18:19 ?2006次閱讀

    環(huán)境參數(shù)監(jiān)測:監(jiān)測PM2.5和甲醛

    環(huán)境參數(shù)監(jiān)測,可實時監(jiān)測家庭的PM2.5和甲醛參數(shù)。
    的頭像 發(fā)表于 04-01 09:07 ?459次閱讀
    環(huán)境參數(shù)監(jiān)測<b class='flag-5'>儀</b>:監(jiān)測<b class='flag-5'>PM2.5</b>和甲醛

    藍(lán)牙測試儀的作用

    公司主營出售/回收:示波器、頻譜分析、網(wǎng)絡(luò)分析、信號發(fā)生器、萬用表/示波器校準(zhǔn)、手機綜合測試儀、噪聲系數(shù)分析、數(shù)據(jù)采集器、NI-GP
    的頭像 發(fā)表于 03-29 11:19 ?939次閱讀

    接地電阻測試儀使用方法 接地電阻測試儀與絕緣電阻測試儀的區(qū)別

    接地電阻測試儀使用方法 接地電阻測試儀種用于測量接地體電阻的儀器,廣泛應(yīng)用于建筑、電力、通信、化工等領(lǐng)域。以下是接地電阻測試儀的使用方法: 首先,將接地電阻
    的頭像 發(fā)表于 02-18 16:11 ?1666次閱讀

    電阻測試儀怎么使用

    電阻測試儀種用于測量電阻的儀器,廣泛應(yīng)用于電子、電工、通信等領(lǐng)域。本文將詳細(xì)介紹電阻測試儀的使用方法和注意事項。 電阻測試儀的主要組成部分 電源部分:為被測電阻提供穩(wěn)定的電壓源。
    的頭像 發(fā)表于 01-03 16:58 ?5748次閱讀