溫濕度自記儀中無(wú)線通信系統(tǒng)的設(shè)計(jì)
0引言
針對(duì)室內(nèi)環(huán)境溫濕度的監(jiān)測(cè)問(wèn)題,本文利用單片機(jī)和無(wú)線通信短距離無(wú)線通信技術(shù)設(shè)計(jì)了一款溫濕度無(wú)線測(cè)量系統(tǒng)。溫濕度自記儀的系統(tǒng)由接收數(shù)據(jù)的上位機(jī)無(wú)線筆記本和以MC9S12xs128為核心的下位機(jī)控制顯示模塊組成,上位機(jī)模塊和下位機(jī)模塊間通過(guò)無(wú)線通信無(wú)線網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交互。上位機(jī)主要通過(guò)Java語(yǔ)言編程,實(shí)現(xiàn)對(duì)無(wú)線通信網(wǎng)絡(luò)上數(shù)據(jù)的實(shí)時(shí)監(jiān)聽(tīng)、顯示并存儲(chǔ);下位機(jī)主要以單片機(jī)為核心實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集、校正、顯示以及上傳處理后的數(shù)據(jù)。其中單片機(jī)主要負(fù)責(zé)完成溫濕度采集、LCD顯示以及SCI傳輸數(shù)據(jù)等功能。
1溫濕度自記儀中無(wú)線通信系統(tǒng)的系統(tǒng)構(gòu)成
1.1溫濕度記錄儀的系統(tǒng)構(gòu)成和系統(tǒng)框圖
本系統(tǒng)由AM2301、MC9S12xs128單片機(jī)、USR 無(wú)線通信 MODII無(wú)線通信模塊及無(wú)線筆記本組成。其中AM2301在本系統(tǒng)中負(fù)責(zé)感知環(huán)境的變化并將檢測(cè)的信號(hào)通過(guò)SDA信號(hào)線傳送給MCU。MC9S12xs128mal為本設(shè)計(jì)系統(tǒng)的核心部分,負(fù)責(zé)接收前端傳感器采集的信號(hào)、將校準(zhǔn)后正確的溫濕度數(shù)值在LCD上顯示并將該數(shù)據(jù)通過(guò)無(wú)線通信 MODII無(wú)線模塊發(fā)送到上位機(jī)。無(wú)線通信 MODII為RS-232轉(zhuǎn)無(wú)線通信模塊,該無(wú)線模塊可將數(shù)據(jù)通過(guò)無(wú)線通信向外發(fā)送。無(wú)線筆記本為上位機(jī)接收端,利用Java編程接收無(wú)線通信傳輸來(lái)的數(shù)據(jù)并將其顯示及存入文件。系統(tǒng)框圖如圖1所示。
1.2溫濕度記錄儀的系統(tǒng)硬件設(shè)計(jì)
1.2.1傳感器模塊
本文采用AM2301單總線數(shù)字溫濕度傳感器,該傳感器是一款含有校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,具有傳輸距離遠(yuǎn)、全部自動(dòng)化校準(zhǔn)、數(shù)字單總線輸出等優(yōu)點(diǎn)。AM2301傳感器讀單總線的流程圖如圖2所示。
1.2.2MCU模塊
Free scale公司的MC9S12xs128mal的16位單片機(jī)為測(cè)量系統(tǒng)的核心控制器,該控制器實(shí)現(xiàn)傳感器的初始化,以及后續(xù)的數(shù)據(jù)采集、處理和發(fā)送。MC9S12xs128有112個(gè)引腳,采用LQFP封裝方式,內(nèi)部總線時(shí)鐘頻率最高可達(dá)40MHz。
1.2.3無(wú)線通信無(wú)線模塊
無(wú)線發(fā)送模塊采用的是USR 無(wú)線通信 MODII,該模塊是一款可將串口數(shù)據(jù)和無(wú)線通信網(wǎng)絡(luò)數(shù)據(jù)相互轉(zhuǎn)換和傳輸?shù)脑O(shè)備。該無(wú)線模塊符合IEEE802.11b/g標(biāo)準(zhǔn),支持Ad-hoc模式和基礎(chǔ)模式。RS-232波特率范圍9600~115200band,可設(shè)數(shù)據(jù)位和奇偶校驗(yàn)位。
2溫濕度自記儀中無(wú)線通信系統(tǒng)的軟件設(shè)計(jì)
2.1溫濕度記錄儀的整體設(shè)計(jì)流程
軟件設(shè)計(jì)包括上位機(jī)和下位機(jī)程序設(shè)計(jì)兩部分。上位機(jī)程序是在eclipse環(huán)境下采用Java語(yǔ)言編程,通過(guò)調(diào)用Socket套接字監(jiān)聽(tīng)、接收數(shù)據(jù)。下位機(jī)程序在CodeWarrior環(huán)境中編譯,通過(guò)C語(yǔ)言對(duì)單片機(jī)的編程實(shí)現(xiàn)了對(duì)I/O口接收數(shù)據(jù)的相關(guān)處理?傮w軟件流程圖如圖3所示。
2.2數(shù)據(jù)采集和校正
該功能通過(guò)對(duì)MC9S12xs128mal的C語(yǔ)言編程實(shí)現(xiàn),主要包括AM2301的初始化、讀取AM2301數(shù)據(jù)、校正數(shù)據(jù)。具體過(guò)程為:PJ1端口向AM2301的SDA寫(xiě)入初始化指令,等待讀取SDA傳來(lái)的40位數(shù)據(jù),通過(guò)校正位判斷讀取的溫濕度值是否正確。其中校正溫濕度數(shù)值代碼如下:
2.3數(shù)據(jù)的顯示和發(fā)送
該功能由MC9S12xs128、LCD12864以及無(wú)線通信無(wú)線通信模塊實(shí)現(xiàn),包括在LCD12864上顯示和向無(wú)線模塊發(fā)送溫濕度數(shù)據(jù)。具體過(guò)程為:MCU將正確的數(shù)據(jù)通過(guò)IIC串口操作模式寫(xiě)到LCD12864漢顯液晶模塊上;采用查詢發(fā)送方式通過(guò)調(diào)用SCI發(fā)送函數(shù)將數(shù)據(jù)發(fā)到串口端口;通過(guò)和RS-232相連的無(wú)線通信無(wú)線模塊將數(shù)據(jù)通過(guò)無(wú)線通信發(fā)送到網(wǎng)絡(luò)上。其中串口發(fā)送函數(shù)代碼如下:
2.4數(shù)據(jù)的接收和保存
該功能由Java編程實(shí)現(xiàn),包括調(diào)用Socket建立網(wǎng)絡(luò)連接和接收顯示并存儲(chǔ)數(shù)據(jù)。具體過(guò)程為:調(diào)用Buffered Input Stream將接收到的數(shù)據(jù)顯示在控制臺(tái),通過(guò)調(diào)用File Output Stream將溫濕度數(shù)據(jù)寫(xiě)到txt文件中保存。其中調(diào)用Socket建立網(wǎng)絡(luò)連接代碼如下:
3溫濕度自記儀中無(wú)線通信系統(tǒng)的實(shí)驗(yàn)調(diào)試
按照?qǐng)D1所示搭建硬件電路,將數(shù)據(jù)采集和傳輸程序燒錄到單片機(jī)。上位機(jī)采用Java語(yǔ)言在eclipse環(huán)境中編程接收無(wú)線通信傳輸過(guò)來(lái)的溫濕度數(shù)據(jù),將數(shù)據(jù)在eclipse控制臺(tái)實(shí)時(shí)顯示,如圖4所示。并將接收到的數(shù)據(jù)自動(dòng)寫(xiě)入txt文檔中保存,以便后續(xù)數(shù)據(jù)處理。實(shí)驗(yàn)表明:通過(guò)下位機(jī)的數(shù)據(jù)處理和發(fā)送及上位機(jī)對(duì)Java Socket的調(diào)用實(shí)現(xiàn)了無(wú)線通信的無(wú)線通信,并能保證數(shù)據(jù)實(shí)時(shí)、準(zhǔn)確傳輸。
4結(jié)束語(yǔ)
本文采用無(wú)線通信技術(shù)將室內(nèi)溫濕度自記儀測(cè)量結(jié)果傳輸?shù)焦P記本終端,實(shí)現(xiàn)了短距離無(wú)線傳輸和接收。本系統(tǒng)在實(shí)際應(yīng)用中取得了良好的效果,解決了室內(nèi)布線繁亂的問(wèn)題,實(shí)現(xiàn)了無(wú)線網(wǎng)絡(luò)的數(shù)據(jù)交換。開(kāi)發(fā)的系統(tǒng)數(shù)據(jù)傳輸速度快、可靠性高。在以后的研究工作中,將對(duì)系統(tǒng)的低功耗設(shè)計(jì)做進(jìn)一步研究。