葉帥 謝德庚


摘要:本作品使用溫濕度傳感器、PM2.5傳感器對室內環境的情況進行采樣,并傳輸給單片機進行處理分析,利用其精準性和時效性,最終對室內環境進行調整并反饋給用戶。溫濕度結合控制的思路對探索新型室內環境控制具有一定的參考價值。
[關鍵詞]室內溫控 濕度控制 PM2.5 STM32
隨著科技的發展和生活水平提高,人們對居家環境的舒適度的需求愈加強烈。為了將科技和生活更加完美的融合在一起,智能家居技術就應運而生。各種控制芯片和傳感器的運用使得生活變得方便和舒適。根據GBT1883-2002標準中規定,夏季溫度22-28C,相對濕度在40%-80%,可吸入顆粒物應小于0.15mg/m3為適宜環境。而IAQ一室內空氣品質中,適宜環境為溫度20-26°C,相對濕度40%-60%之間。目前市面上的調溫設備只能調整溫度而不能改善空氣濕度,尤其在夏天濕度低的環境下,會造成人頭暈的現象,影響人的身體健康。針對以上局限性,我們提出一種集溫度濕度控制及可吸入顆粒物濃度監測為一體的新型環境監控系統,
1 設計思路及目的
為了滿足能控制溫度和濕度的目的,監控系統分為溫濕度采集器、顯示模塊、PM2.5傳感器、鍵盤系統。溫濕度采集器。通過DHT11溫濕度傳感器對室內溫濕度進行采集,傳送給單片機進行分析處理,得到一個比較準確的數值,單片機根據采集回來的數值做出開關降溫設備和加濕設備的指令。PM2.5模塊采集完的PM2.5數值經由單片機處理過后,經OLED顯示模塊顯示給用戶,讓用戶知道室內的空氣質量情況。提供人機交互讓用戶能較好地操作系統,提供更好的服務。使用換氣扇將室內的空氣吸入設備中,讓空氣經過冷端降溫后送出設備。由于制冷會產生一部分熱量,產生的熱量通過換氣扇與外界交換來實現對制冷設備的降溫。
2 系統硬件模塊分析
(1)顯示模塊采用芯片為SSD1306的0.96寸OLED顯示屏,能顯示126x64的點陣。OLED是一種同時具備自發光、不需要背光源、對比度高、視角廣、反應速度快等優點的顯示技術。工作電壓為直流3.3-5V,使用I2C通信連接于主控芯片I2C接口。OLED與單片機連接如圖1所示。
(2)PM2.5。采用的ZPH01粉塵傳感器,使用激光散射測量方法,能檢測最小粒子為1μm,最大識別范圍為15000個/283ml,使用5V的工作電壓。PM2.5傳感器必須垂直安裝,且不能安放在風扇前方和后方,可任選外殼一側安裝,但必須保證外部空氣流動。PM2.5傳感器需要預熱5min,前5min的數據不準確。通過UART通訊協議和主控芯片通訊,PM2.5每秒發出一個完整的數據包,由單片機完成接受和處理。
(3)溫濕度傳感器。采用DHT11傳感器,包括一個電阻式感濕元件和一個NTC測溫元件,通過一個高性能的8為單片機相連,.能檢測周圍環境的濕度和溫度,其工作電壓為3.3-5V,濕度測量范圍為20%-95%,誤差范圍+5%,溫度測量范圍為0-50°C,誤差范圍+2°C。DHT11采用單線數字信號傳輸,DHT11-次完成的數據傳輸包括40bit,8bit濕度數據、8bit濕度小數數據、8bit溫度整數數據、8bit溫度小數數據和8bit校驗和。與單片機連接的引腳為PA8。DHT11與STM32連接如圖2所示。
(4)主控芯片。采用ST公司的STM32F103C8T6,該芯片支持72MHz工作頻率,64k字節的閃存程序儲存器,能夠應對大部分控制情況。主控芯片負責對溫濕度傳感器數據的采集和處理,PM2.5數據的讀出以及人機交互的控制。
根據前文對各個部分模塊的簡介,設計選擇制作了相應的電源和外殼。硬件電路由OLED顯示模塊、電源部分、DHT11溫濕度傳感器、12V轉5V電源模塊、PM2.5傳感器以及主控芯片STM32F103組成。
3 系統軟件模塊設計
軟件部分使用KeilMDK5.25編寫,使用C語言編程,使用庫函數版本為V3.5.0,采用模塊化編程的思路。根據系統設計,軟件部分分為初始化程序和主程序。
溫濕度監控系統的程序流程如圖3所示。
3.1 初始化程序設計
系統初始化主要包括單片機時鐘、I/O口、串口程序、OLED屏幕、DHT11溫濕度傳感器。
單片機芯片為STM32F103C8T6,主控板外部晶振為8M,通過芯片內PLL最高達72M,時鐘晶振為32768Hz。調用系統函數SystemInit()對系統時鐘進行初始化。
I/O口初始化,STM32F1系列單片機通用IO口有輸入輸出復用三大類功能。根據系統設計需要選擇輸出為推挽輸出,輸入為模擬輸入。
串口初始化程序包括串口初始化和串口中斷初始化。串口通訊波特率設定為9600bit/s,8位數據格式,一個停止位,無奇偶校驗位。串口中斷初始化主要是選擇NVIC中斷源、搶占優先級和次優先級,這里選擇NVIC_IRQChannel為USART1_IRQn中斷源、搶占優先級3、次優先級2。中斷處理采用查詢法,調用函數USART_GetITStatus(查詢是否接受到USART1中斷,如果接收到中斷后存儲并處理數據。
OLED屏幕初始化主要包括對OLED屏幕寄存器的操控,設定低位列地址、高位列地址、頁地址等。參考SSD1306芯片使用I2C通信對芯片寄存器進行配置。
DHT11初始化包括兩部分。第一部分對I/O進行配置,使用GPIO初始化結構體GPOIOInitTypeDef定義一個結構體,對結構體成員Mode配置為GPIO_Mode_Out_OD。第二部分為對DHT11初始化,當主機發送一個至少18ms的低電平,等待DHT11完成AD轉換操作。當主機拉高后,在20-40us內,主機完成輸入輸出切換,讀取數據。DHT11初始化會占用接近1秒的初始化時間,所以在對DHT11初始化時會預留較長的時間等待初始化完成。
3.2 主程序設計思路
整個主程序為一個死循環,系統通過初始化程序對每個部分進行初始化后進入主循環程序。循環主程序中包括顯示程序、按鍵程序,溫濕度數據的讀取由一個1分鐘的定時器處理。
顯示程序包括溫度顯示、濕度顯示、PM2.5顯示、模式顯示,每個漢字高16寬16,數字和字符為高16寬8。顯示程序中的漢字顯示必須由取模軟件進行取模后寫入程序才能顯示。根據OLED函數編寫的不同,選擇不同的取模方式。此處選擇行列式取模方式。按鍵程序采用掃描的方法,對I0口實時掃描讀取輸入的數值,如果檢測到輸出則會進行相應的開關操作。
讀取DHT11數據時,將讀到的40bit數據放在一個5個Char型的數組中,首先驗證數據準確性,將數組前4位相加,為防止數據溢出將結果強制轉化符unsignedchar型,與數組第5位進行比較。其次分別計算溫度和濕度,溫度數據為數組的前兩位,同樣為了防止數據溢出將結果強制轉化位unsignedchar型。
4 總結
本系統采STM32F103C8T6作為主控芯片,結合DHT11溫濕度傳感器,PM2.5傳感器等組成整個系統。從室內溫濕度同時控制的理念出發,力圖解決室內空氣質量監控不足的問題,有較高的實用價值。
參考文獻
[1]朱蘊璞。傳感器原理及應用[J].國防工業出版社,2005.
[2]劉火良,楊森.STM32庫開發指南[J].機械工業出版社,2013.