樂偉偉+尤喜

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