基于無(wú)線傳感器網(wǎng)絡(luò)的大棚環(huán)境參數(shù)采集系統(tǒng)
命令模式適用于從傳感器提取大批量數(shù)據(jù)時(shí)使用,此時(shí)傳感器處于停止測(cè)量狀態(tài),其功耗小于3.5 mW。流模式是工廠默認(rèn)模式,此時(shí)傳感器每秒產(chǎn)生2個(gè)測(cè)量數(shù)據(jù),除了正處于測(cè)量的過程中以外,傳感器會(huì)及時(shí)處理收到的命令,所以傳感器在處理命令時(shí)可能會(huì)出現(xiàn)100 ms的延遲,這種工作模式的功耗為3.5 mW。查詢模式時(shí)傳感器并不產(chǎn)生數(shù)據(jù),但是周期性的測(cè)量在后臺(tái)繼續(xù),當(dāng)傳感器收到讀取命令時(shí),會(huì)將最近的測(cè)量值轉(zhuǎn)換成數(shù)據(jù)送出。查詢模式的功耗與查詢頻率有關(guān),但是幾乎接近3.5mW。
文中將COZIR的通訊口接到單片機(jī)的EUART0口,COZIR工作在查詢模式(Polling Mode)。
2 軟件設(shè)計(jì)
軟件的開發(fā)環(huán)境為Keil uVision3,使用C51語(yǔ)言。系統(tǒng)的無(wú)線通信部分采用標(biāo)準(zhǔn)MODBUS協(xié)議,為點(diǎn)對(duì)多點(diǎn)的通信方式。主機(jī)采用同樣的電路,去除傳感器部分,增加USB與UART橋接芯片CP2102,通過USB口連接PC機(jī)。PC機(jī)在安裝Silicon Labs公司提供的免費(fèi)驅(qū)動(dòng)程序后,通過USB接口虛擬出一個(gè)COM口。從機(jī)為無(wú)線測(cè)量節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)都擁有一個(gè)唯一的地址,工作方式為主站輪詢,從站監(jiān)聽的方式。節(jié)點(diǎn)軟件的主要流程如圖3所示。本文引用地址:http://cafeforensic.com/article/160513.htm
2.1 程序流程
系統(tǒng)初始化時(shí),MCU進(jìn)入掉電模式,Timer3選擇32768 kHz晶振作時(shí)鐘源,定時(shí)1 min中斷。Si4432進(jìn)入睡眠模式,開啟Si4432的Wake-up Timer,定時(shí)31s。有兩個(gè)事件會(huì)將MCU喚醒:Timer3定時(shí)和Si4432的nIRO引起的外部中斷。
在Timer3的中斷服務(wù)子程序中做兩件工作:1)軟時(shí)鐘計(jì)時(shí)。由于系統(tǒng)對(duì)實(shí)時(shí)性要求不高,時(shí)鐘可以分鐘為最低計(jì)時(shí)單位。并且上位機(jī)可定期通過寫指令對(duì)時(shí)鐘進(jìn)行校準(zhǔn);2)采集數(shù)據(jù)。從溫濕度傳感器和CO2濃度傳感器讀取數(shù)據(jù)并按規(guī)定格式存放在規(guī)定緩沖區(qū),等待上位機(jī)讀取。
MCU的INT0設(shè)置為低電平觸發(fā),連接Si4432的nIRQ腳,每31秒Si4432的Wake-up Timer使得nIRQ腳產(chǎn)生低電平,從而引發(fā)MCU外部中斷。在中斷服務(wù)子程序中MCU通過SPI口讀取Si4432的iswdet和ipreaval位,以判斷是否接收到前導(dǎo)碼或同步碼。若有,則命Si4432進(jìn)入RX狀態(tài),繼續(xù)接收數(shù)據(jù)并處理,否則回到休眠狀態(tài)。上位機(jī)要喚醒無(wú)線節(jié)點(diǎn),需連續(xù)發(fā)40 s(大于31 s)喚醒信號(hào),這對(duì)于供電充分的上位機(jī)來(lái)說不是問題。
2.2 通信協(xié)議
通信協(xié)議采用MODBUS協(xié)議的RTU傳輸模式。MODBUS協(xié)議是免費(fèi)的用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議。在我國(guó),MODBUS已經(jīng)成為國(guó)家標(biāo)準(zhǔn)GB/T195 82-2008。可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無(wú)線等。
在本系統(tǒng)中,主機(jī)(PC)直接面對(duì)的是虛擬COM口,因此可方便地采用MODBUS協(xié)議,主機(jī)界面可采用簡(jiǎn)單的串口調(diào)試工具,如SSCOM等,也可以由用戶自行開發(fā)。通過USB口連接主機(jī)的無(wú)線節(jié)點(diǎn)與從機(jī)之間采用透明傳輸,由上向下傳輸數(shù)據(jù)前需增加喚醒過程。從機(jī)(無(wú)線測(cè)量節(jié)點(diǎn))向上發(fā)送數(shù)據(jù)時(shí),則按照MODBUS幀格式組建數(shù)據(jù)包連續(xù)發(fā)送。
MODBUS通信使用主——從技術(shù),即僅一個(gè)設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其他設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。主設(shè)備可單獨(dú)和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果單獨(dú)通信,從設(shè)備返回一個(gè)消息作為回應(yīng),如果是以廣播方式查詢的,則不作任何回應(yīng)。
評(píng)論