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