title: ZPH01驅動
1 傳感器說明
1.1 電氣特性
1.2 管腳說明
1.3 驅動方式
1.4 數據處理
1.5 注意事項
2 驅動代碼
2.1前言
該驅動使用的是串口方式,需要將模式腳拉低,封裝最後輸出的是濃度,單位是ug/m3。demo是基於和小夥伴一起封裝的STM32f103C8系列單片機的底層驅動,編寫語言是C++,平臺是keil5。
2.2正文
該傳感器是已經封裝過一次的,他會每間隔1秒通過串口發送一次數據。而我要做的便是使使用者更加簡單的獲取到需要的數據。也就是進行了二次封裝,將數據更新封裝爲updata()函數,數據獲取封裝成getdata()函數。
首先我們先來看下.H文件
由於該驅動與串口密切相關,所以我們的構造函數就傳入一個串口。
mData由於暫存讀出的一楨數據,mData_H 和L 是爲了方便將數據傳出到上位機添加的。用戶在主函數在需要更新的時候調用updata 在需要得到數據時調用getdata就可以了。
接下來我們來看下updata函數
雖然模塊一直給我們傳輸數據,但是調用更新函數是隻保存最新的一組數據,並且進行校驗和,如果正確取出濃度數據則返回true ,否則返回false。中間使用了一些usart封裝的函數。
最後我們看下如何使用吧
3 實驗結果
該實驗結果有點意思,波動超級大,前一張圖是沒遮擋盒子中間三角空的數據,最高處是對其吹起的結果,後一個是用衛生紙擋住的效果。由於該傳感器是光感,並且買了時間有點久,盒子裏的鏡頭有寫灰塵,影響了結果吧,好久找個棉籤擦拭了再測試下。