日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动

發(fā)布時(shí)間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??現(xiàn)在人們對(duì)大氣環(huán)境及室內(nèi)環(huán)境都比較關(guān)注。PM2.5在生活中也是常見(jiàn)的詞匯。在有些產(chǎn)品中就要求檢測(cè)PM2.5的數(shù)值。檢測(cè)PM2.5的手段多種多樣,在要求不高時(shí)我們通常可以采用激光模塊。在這一篇中,我們將討論HLPM025K3 PM2.5傳感器驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)。

1、功能概述

??HLPM025K3傳感器采用激光散射原理。即令激光照射在空氣中的懸浮顆粒物上產(chǎn)生散射,同時(shí)在某一特定角度收集散射光,得到散射光強(qiáng)隨時(shí)間變化的曲線。通過(guò)穩(wěn)定的氣 體對(duì)流系統(tǒng),使外界空氣均勻的通過(guò)自主研發(fā)設(shè)計(jì)的風(fēng)路,同時(shí)在風(fēng)路中設(shè)有多個(gè)精密的光學(xué)傳感器,可以精確的獲得粒子的尺寸、速度和質(zhì)量等信息,加以統(tǒng)計(jì)學(xué)原理,繼而計(jì)算出總的粒子質(zhì)量,從而實(shí)時(shí)的得到空氣中所被關(guān)注的粒子的濃度,達(dá)到檢測(cè)PM2.5以及PM10的目的。其基本原理如下圖所示:

??HLPM025K3傳感器采用串行通訊,采用6腳通訊接口,其引腳定義如下圖所示:

??HLPM025K3傳感器采用TTL串行通訊,采用9600的波特率,8為數(shù)據(jù)位,1為停止位,無(wú)校驗(yàn)的方式。HLPM025K3傳感器通訊采取主動(dòng)發(fā)送模式,0.8到1.2秒發(fā)送一次數(shù)據(jù)。其數(shù)據(jù)包含7個(gè)字節(jié),具體格式如下:

??其中,校驗(yàn)位=PM2.5(H)+PM2.5(L)+PM10(H)+PM10(L)
??接收到的數(shù)據(jù)按公式計(jì)算后得到 PM2.5 和 PM10 的值。
??PM2.5 = (PM2.5(H)×256 + PM2.5(L))×0.1;
??PM10 = (PM2.5(H)×256 + PM2.5(L))×0.1;

2、驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

??我們已經(jīng)了解了HLPM025K3型PM2.5傳感器的基本情況。在這一節(jié)中我們將設(shè)計(jì)并實(shí)現(xiàn)HLPM025K3型PM2.5傳感器的驅(qū)動(dòng)。

2.1、對(duì)象定義

??在使用一個(gè)對(duì)象之前我們需要獲得一個(gè)對(duì)象。同樣的我們想要HLPM025K3 PM2.5傳感器就需要先定義HLPM025K3 PM2.5傳感器的對(duì)象。

2.1.1、對(duì)象的抽象

??我們要得到HLPM025K3 PM2.5傳感器對(duì)象,需要先分析其基本特性。一般來(lái)說(shuō),一個(gè)對(duì)象至少包含兩方面的特性:屬性與操作。接下來(lái)我們就來(lái)從這兩個(gè)方面思考一下HLPM025K3 PM2.5傳感器的對(duì)象。
??先來(lái)考慮屬性,作為屬性肯定是用于標(biāo)識(shí)或記錄對(duì)象特征的東西。我們來(lái)考慮HLPM025K3 PM2.5傳感器對(duì)象屬性。我們將測(cè)量數(shù)據(jù)作為對(duì)象的屬性,因?yàn)樗麄儽硎玖藢?duì)象當(dāng)前的狀態(tài)。
??接著我們還需要考慮HLPM025K3 PM2.5傳感器對(duì)象的操作問(wèn)題。對(duì)象本身除了接受數(shù)據(jù)并沒(méi)有什么需要操作的。我們使用隊(duì)列來(lái)存儲(chǔ)接收到的數(shù)據(jù),所以入隊(duì)出隊(duì)過(guò)程可看作是其操作。
??根據(jù)上述我們對(duì)HLPM025K3 PM2.5傳感器的分析,我們可以定義HLPM025K3 PM2.5傳感器的對(duì)象類型如下:

/*定義HLPM025K3對(duì)象類型*/ typedef struct HlpmObject {float pm25; //PM2.5測(cè)量值float pm100; //PM10測(cè)量值struct DwinRxBuffer{uint8_t queue[HLPMRxBufferLength]; //鍵值存儲(chǔ)隊(duì)列uint8_t pRead; //讀隊(duì)列指針uint8_t pWrite; //寫(xiě)隊(duì)列指針uint16_t (*DeQueue)(struct HlpmObject *hlpm,uint8_t *rxBuf); //出隊(duì)操作void (*EnQueue)(struct HlpmObject *hlpm,uint8_t rData); //入隊(duì)操作}rxBuffer; //定義接收緩存隊(duì)列 }HlpmObjectType;

2.1.2、對(duì)象初始化

??我們知道,一個(gè)對(duì)象僅作聲明是不能使用的,我們需要先對(duì)其進(jìn)行初始化,所以這里我們來(lái)考慮HLPM025K3 PM2.5傳感器對(duì)象的初始化函數(shù)。一般來(lái)說(shuō),初始化函數(shù)需要處理幾個(gè)方面的問(wèn)題。一是檢查輸入?yún)?shù)是否合理;二是為對(duì)象的屬性賦初值;三是對(duì)對(duì)象作必要的初始化配置。據(jù)此我們?cè)O(shè)計(jì)HLPM025K3 PM2.5傳感器對(duì)象的初始化函數(shù)如下:

/*HLPM對(duì)象初始化函數(shù)*/ void HlpmInitialization(HlpmObjectType *hlpm) {if(hlpm==NULL){return;}hlpm->pm25=0.0;hlpm->pm100=0.0;hlpm->rxBuffer.pRead=0;hlpm->rxBuffer.pWrite=0;hlpm->rxBuffer.EnQueue=BufferDataEnQueue;hlpm->rxBuffer.DeQueue=BufferDataDeQueue; }

2.2、對(duì)象操作

??我們已經(jīng)完成了HLPM025K3 PM2.5傳感器對(duì)象類型的定義和對(duì)象初始化函數(shù)的設(shè)計(jì)。但我們的主要目標(biāo)是獲取對(duì)象的信息,接下來(lái)我們還要實(shí)現(xiàn)面向HLPM025K3 PM2.5傳感器的各類操作。
??由于HLPM025K3 PM2.5傳感器對(duì)象是自主發(fā)送,所以我們需要做的就是接收消息并解析。

/*解析PM2.5和PM10的數(shù)據(jù)*/ bool ParsingPMData(HlpmObjectType *hlpm) {uint16_t length=0;uint8_t receivedData[7]={0};bool isValid=false;length=hlpm->rxBuffer.DeQueue(hlpm,receivedData);if(length>0){isValid=CheckDataIsValid(receivedData);if(isValid){hlpm->pm25=SynthesisPMValue(receivedData+1);hlpm->pm100=SynthesisPMValue(receivedData+3);}}return isValid; }

3、驅(qū)動(dòng)的使用

??我們已經(jīng)設(shè)計(jì)并實(shí)現(xiàn)了HLPM025K3 PM2.5傳感器對(duì)象的驅(qū)動(dòng)程序。接下來(lái)我們?cè)O(shè)計(jì)一個(gè)簡(jiǎn)單的應(yīng)用來(lái)驗(yàn)證這一驅(qū)動(dòng)程序是否可行。

3.1、聲明并初始化對(duì)象

??使用基于對(duì)象的操作我們需要先得到這個(gè)對(duì)象,所以我們先要使用前面定義的HLPM025K3 PM2.5傳感器對(duì)象類型聲明一個(gè)HLPM025K3 PM2.5傳感器對(duì)象變量,具體操作格式如下:
??HlpmObjectType hlpm;
??聲明了這個(gè)對(duì)象變量并不能立即使用,我們還需要使用驅(qū)動(dòng)中定義的初始化函數(shù)對(duì)這個(gè)變量進(jìn)行初始化。這個(gè)初始化函數(shù)所需要的輸入?yún)?shù)如下:
??HlpmObjectType *hlpm,HLPM025K3 PM2.5傳感器對(duì)象
??這個(gè)對(duì)象變量我們已經(jīng)定義了,所以只需輸入這個(gè)對(duì)象就好了。于是我們可以調(diào)用初始化函數(shù)如下:
??HlpmInitialization(&hlpm);
??對(duì)于串口通訊,我們可以使用多種方式,我們?cè)诖耸褂弥袛鄟?lái)接收數(shù)據(jù),具體實(shí)現(xiàn)如下:

//數(shù)據(jù)接收中斷處理函數(shù) void HLPM_USART_ReceiveDataHandle(void) {uint8_t res;// 接收寄存器為空,等待字節(jié)被對(duì)應(yīng)的串口完全接收 if(__HAL_UART_GET_FLAG(&hlpmhuart,UART_FLAG_RXNE)!=RESET){ // 獲取接收到的字節(jié)數(shù)HAL_UART_Receive(&hlpmhuart,&res,1,1000);hlpm.rxBuffer.EnQueue(&hlpm,res);__HAL_UART_CLEAR_FLAG(&hlpmhuart,UART_FLAG_RXNE);} }

3.2、基于對(duì)象進(jìn)行操作

??我們定義了對(duì)象變量并使用初始化函數(shù)給其作了初始化。接著我們就來(lái)考慮操作這一對(duì)象獲取我們想要的數(shù)據(jù)。我們?cè)隍?qū)動(dòng)中已經(jīng)將獲取數(shù)據(jù)并轉(zhuǎn)換為轉(zhuǎn)換值的比例值,接下來(lái)我們使用這一驅(qū)動(dòng)開(kāi)發(fā)我們的應(yīng)用實(shí)例。

/*數(shù)據(jù)獲取*/ void GetDataFromHLPM025K3(void) {float pm25Value;float pm10Value;ParsingPMData(&hlpm);pm25Value=hlpm.pm25;pm10Value=hlpm.pm100; }

4、應(yīng)用總結(jié)

??我們已經(jīng)設(shè)計(jì)并實(shí)現(xiàn)了HLPM025K3 PM2.5傳感器對(duì)象的驅(qū)動(dòng)程序,并且設(shè)計(jì)了簡(jiǎn)單的驗(yàn)證程序。HLPM025K3 PM2.5傳感器的操作本身比較簡(jiǎn)單,只需要通過(guò)串口獲取數(shù)據(jù)就可以了。
??驅(qū)動(dòng)中采用了FIFO隊(duì)列存儲(chǔ)接收到的HLPM025K3 PM2.5傳感器數(shù)據(jù),主要是考慮到被動(dòng)接收的情況下,能夠保證正確的解析數(shù)據(jù)。如果不使用也是沒(méi)有問(wèn)題的,本身不是HLPM025K3 PM2.5傳感器對(duì)象所必需的。

歡迎關(guān)注:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美经典一区二区三区 | 手机看片日韩欧美 | 久久久激情 | 最好看十大无码av | 欧美性生交xxxxx久久久缅北 | 亚洲自拍小视频 | 精品欧美黑人一区二区三区 | 女性向小h片资源在线观看 日本天天操 | 欧美午夜在线视频 | 色婷婷午夜 | 日本一区二区精品 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 少妇一级淫片免费观看 | 亚洲三级在线视频 | 精品人妻中文无码av在线 | 色妺妺视频网 | 免费国产一区二区 | 91性高潮久久久久久久 | 免费啪视频| 国产私人影院 | 奇米在线观看 | 久久综合色视频 | 美女吞精视频 | 福利在线看 | 欧美色999| 黄网站免费大全入口 | 久久视频热 | wwwxx欧美| 欧美亚洲二区 | 一级生活毛片 | 国产精品一区二区无码免费看片 | 美女草逼视频 | aaa午夜 | 91玉足脚交嫩脚丫在线播放 | 国产伦精品一区二区三区照片91 | 亚洲天堂一区二区 | 欧美大片91| 成人午夜在线观看视频 | 三年中文在线观看中文版 | 日本极品丰满ⅹxxxhd | 新x8x8拨牐拨牐永久免费影库 | 亚洲一级在线 | 别揉我奶头啊嗯一区二区 | 伊人五月婷婷 | 成人欧美一区二区三区黑人动态图 | 国产96在线 | 国产精品久久影视 | 国产欧美日韩综合精品一区二区 | 欧美老女人性视频 | 韩国毛片视频 | 天天视频国产 | 特黄一级视频 | 蜜臀久久精品久久久用户群体 | 国产探花在线精品一区二区 | 成人国产精品久久久 | 亚洲啊v在线 | 国产精品老女人 | 亚洲成av人片久久 | 国产精品自产拍 | 午夜精品久久久久久久久久久 | 美女污污网站 | 亚洲一区二区三区影视 | 人禽l交视频在线播放 视频 | 91精品国产色综合久久不卡98口 | juliaannxxxxx高清| 日韩一级黄色大片 | 美女网站在线免费观看 | 4虎最新网址 | 韩国成人在线视频 | www.69视频| a免费视频| 最新黄色网页 | 超碰网站在线观看 | 少妇一级淫免费放 | 欧美在线日韩在线 | 成长快手短视频在线观看 | 亚洲伦理一区二区三区 | 乱色精品无码一区二区国产盗 | 精品成人一区二区三区 | 精品少妇一区二区三区免费观看 | 亚洲最大成人网站 | 国产欧美日韩综合精品一区二区三区 | 日韩免费大片 | 国产视频久久久久久 | 午夜激情福利电影 | 一本色道久久综合熟妇 | 中文字幕亚洲区 | 亚洲精品社区 | 91av视频在线免费观看 | 韩漫动漫免费大全在线观看 | 夜夜狠 | 影音先锋欧美在线 | 99视屏| 我要看免费黄色片 | 91成人在线观看喷潮动漫 | 国产在线小视频 | 91视频xxx| 精品欧美乱码久久久久久1区2区 | 天天干狠狠操 |