樂偉偉+尤喜
摘要:本文以室內(nèi)環(huán)境監(jiān)測為背景,設計出以STC12C5A60S2低功耗單片機為主芯片的無線環(huán)境監(jiān)測系統(tǒng)。本系統(tǒng)是針對人們的長期居住場所或者工作場所的室內(nèi)空氣質(zhì)量而設計的。該系統(tǒng)的設計為相關工程領域研究工作提供了理論參考。
關鍵詞:單片機;室內(nèi)監(jiān)控;智能化
1軟件設計總體架構
程序編寫采用模塊化設計思想,各個功能模塊都編寫成獨立函數(shù),在主函數(shù)中調(diào)用各個功能模塊。系統(tǒng)中主要的模塊有:上電初始化程序,溫濕度采集程序,氣體采集并進行模數(shù)轉(zhuǎn)換程序,液晶顯示程序,蜂鳴器報警程序,數(shù)據(jù)無線收發(fā)程序。其中初始化程序包括:液晶屏的初始化、無線收發(fā)模塊的初始化和傳感器模塊的初始化等。數(shù)據(jù)無線收發(fā)程序包括:無線發(fā)送程序按照需求打包和發(fā)送溫濕度和甲醛濃度數(shù)據(jù),無線接收程序則負責數(shù)據(jù)的拆包處理數(shù)據(jù)。
下面是系統(tǒng)軟件設計的流程圖:
針對流程圖,說明如下:
控制接收端上電以后,首先是對液晶屏進行初始化,準備顯示有采集端采集到的溫濕度數(shù)據(jù),同時無線收發(fā)模塊也完成初始化配置。之后,接收端開始不斷的發(fā)送控制命令和地址,若有節(jié)點應答則將傳輸過來的數(shù)據(jù)送顯示。數(shù)據(jù)采集發(fā)送端上電之后,首先是對溫濕度傳感器DHT21和甲醛傳感器模塊MS1100進行初始化,同時也完成無線發(fā)送模塊的初始化配置。之后采集節(jié)點就開始進行數(shù)據(jù)采集,A/D模數(shù)轉(zhuǎn)換等操作,將采集來的數(shù)據(jù)存儲起來。此時無線模塊開始不斷檢測是都有控制端發(fā)送控制命令和地址數(shù)據(jù),若有,則將數(shù)據(jù)包經(jīng)處理后,送給MCU進行地址匹配。若匹配,則將存儲的采集到的數(shù)據(jù)由無線模塊發(fā)送出去。若不匹配,則不作任何處理。在整個系統(tǒng)中,無線收發(fā)程序主要負責接收和發(fā)送已經(jīng)打包過的數(shù)據(jù)。打包操作由nRF905自動完成,數(shù)據(jù)接收方根據(jù)通信協(xié)議將接收到的數(shù)據(jù)包進行拆包處理,取出有用的數(shù)據(jù)。同時檢驗包中的CRC字節(jié)以驗證接收到數(shù)據(jù)的正確性,當收到有效數(shù)據(jù)后,再由MCU控制送至1602LCD顯示模塊,實時顯示出來。
2溫濕度傳感器模塊程序設計
DHT21需要5V的供電電壓。給傳感器模塊上電之后,為了跳過系統(tǒng)不穩(wěn)定狀態(tài),需要延遲1s的時間,中間不需要再發(fā)任何指令。在電路設計時最好在電源和電源地之間接一個100nF的電容,以起到去藕濾波的作用。
微處理器和DHT21傳感器采用單總線數(shù)據(jù)格式進行通信,DATA接口是用于兩者直接的通訊和同步的。每次通訊時間在5ms左右,數(shù)據(jù)傳輸格式如下面的數(shù)據(jù)所示,數(shù)據(jù)傳輸40位,且高位在前:
數(shù)據(jù)傳輸格式:16位濕度數(shù)據(jù)+16位溫度數(shù)據(jù)+8位校驗和=40位數(shù)據(jù)。
例如:接收40bit數(shù)據(jù)如下:0000 0001 0011 0110 0000 0000 1101 0110
0000 1101
后8位校驗和是由濕度的值相加得來的,由濕度的高8位加上低8位,再加上溫度的高8位和低8位。
濕度數(shù)據(jù) 溫度數(shù)據(jù) 校驗和
例如:0000 0001+0011 0110+0000 0000+1101 0110=0000 1101(校驗和)。
濕度=30.9%RH;溫度=21.40℃。
當溫度值是負數(shù)時,溫度數(shù)據(jù)的最高位為1。
例如:-13.7℃表示為1000 0000 1000 1001。
系統(tǒng)開始工作時,STC12C5A60S2單片機首先發(fā)送一次開始信號,使DHT21傳感器模塊從低功耗工作狀態(tài)切換到高速狀態(tài)。當單片機發(fā)送的開始信號結束后,DHT21回應一個應答信號,發(fā)從40bit的數(shù)據(jù)給單片機,同時傳感器模塊觸發(fā)一次數(shù)據(jù)采集信號。由于微處理器從DHT21傳感器中獲得兩次數(shù)據(jù)之間有一定的間隔,當間隔時間較長時,我們需要再取一次溫濕度數(shù)據(jù)。這樣才能得到最新的、最準確的數(shù)據(jù)。
系統(tǒng)不工作時,單總線是一直處于高電平狀態(tài)。當單片機和傳感器進行通信時,STC12C5A60S2單片機會將總線拉低1-10ms的時間,之后釋放掉總線。在延遲20-40us的時間后,單片機開始檢測DHT21發(fā)來的應答信號。
溫濕度傳感器的應答信號是一個大概80us時間的低電平,高總線大約80us的時間,這時系統(tǒng)就要進入數(shù)據(jù)傳輸?shù)臓顟B(tài)。
在80us時間后就開始傳送數(shù)據(jù)位,數(shù)據(jù)位有1和0來表示,每一個bit的數(shù)據(jù)都是有一段時間的低電平和一段時間的高電平組成。每個bit位的低電平都是相同的時間,都是在50us左右,代表著數(shù)據(jù)位的開始。后面的高電平的時間長度才決定數(shù)據(jù)位是0還是1。高電平時間長的代表著數(shù)據(jù)位1,高電平低的代表著數(shù)據(jù)位0。每次的數(shù)據(jù)傳輸共有40位,傳輸完最后一位數(shù)據(jù)時,傳感器將再將總線拉位低電平,大概50us的時間,之后就釋放掉總線??偩€由上拉電阻拉高。
參考文獻:
[1]郝妍娜,洪志良.基于MCU和nRF905的低功耗遠距離無線傳輸系統(tǒng)[J].集成電路應用,2007(02).
[2]陳桂友.增強型8051單片機實用開發(fā)技術[M].北京:北京航空航天大學出版社,2010:195-196.
[3]張經(jīng)愛,許凱華,劉玉華.基于MSP430的模擬SP工串口通信的實現(xiàn)[J].計算機工程與設計,2008(29),5.