用于環(huán)境監測的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )節點(diǎn)設計
當匯聚節點(diǎn)接收到串口數據時(shí),匯聚節點(diǎn)會(huì )觸發(fā)自身應用層的串口事件,用于解析發(fā)送過(guò)來(lái)的命令消息,然后根據該命令來(lái)觸發(fā)相應的事件進(jìn)行處理。
休眠設置 #e#
3.4 休眠設置
實(shí)驗證實(shí),節點(diǎn)在休眠過(guò)程中處于斷網(wǎng)狀態(tài)。因此,為節省節點(diǎn)頻繁聯(lián)網(wǎng)帶來(lái)的功耗和保證全網(wǎng)節點(diǎn)工作狀態(tài)同步,在軟件上設計為節點(diǎn)在聯(lián)網(wǎng)成功后只執行通信任務(wù),而休眠過(guò)程中只執行采集任務(wù)。當節點(diǎn)采集時(shí)刻到來(lái),觸發(fā)采集事件,打開(kāi)傳感器的開(kāi)關(guān)對環(huán)境數據進(jìn)行采集,并控制I/O口對傳感器采集得到的信號進(jìn)行A/D采樣,最后將采樣值以SPI方式存入外部存儲器。在每次通信結束之前節點(diǎn)都會(huì )判斷是否有休眠設置命令,若接收到休眠設置命令,節點(diǎn)則會(huì )按照該設置進(jìn)行休眠,直到下一次醒來(lái);若沒(méi)接收到命令,節點(diǎn)則會(huì )按照上一次的休眠設置進(jìn)行休眠。
數據中轉器通過(guò)串口向匯聚節點(diǎn)發(fā)送的休眠設置命令的數據幀格式如表1所列。

Sleeping_Time表示節點(diǎn)要休眠的時(shí)間;Collecting_Time表示節點(diǎn)在休眠過(guò)程中的采集時(shí)間間隔;Current_Time是當前的校準時(shí)間;Sensor_Flag表示傳感器開(kāi)關(guān)的標志。休眠過(guò)程中到達采集時(shí)刻,進(jìn)行環(huán)境數據的采集、采樣和存儲。向采集節點(diǎn)發(fā)送當前的校準時(shí)間,保證節點(diǎn)采集時(shí)刻精確和時(shí)間的同步。同時(shí),傳感器的開(kāi)關(guān)標志位可以控制打開(kāi)或關(guān)閉哪幾路傳感器,采集用戶(hù)感興趣的環(huán)境數據。到達休眠時(shí)刻,節點(diǎn)醒來(lái),連接網(wǎng)絡(luò )。
3.5 充 電
為保證鎳氫電池對節點(diǎn)長(cháng)期供電,節點(diǎn)硬件電路設計了1個(gè)充電控制電路對其進(jìn)行充電管理。CC2430專(zhuān)門(mén)提供1個(gè)I/O口對供電電壓進(jìn)行A/D采樣。當供電的電源電壓不足時(shí)(即低于設定的值),在軟件上會(huì )通過(guò)切換先讓另一組電源對節點(diǎn)進(jìn)行供電,再打開(kāi)太陽(yáng)能的充電電路對電源充電。節點(diǎn)在通信和采集數據時(shí)功耗很大,因此在每一次通信和采集數據完成之后都會(huì )檢測當前供電電壓值和當前的充電電壓值,根據2個(gè)電壓值決定要不要進(jìn)行電源切換、是否對電源進(jìn)行供電以及充電是否完成。
3.6 異常處理
網(wǎng)絡(luò )中節點(diǎn)在工作時(shí)可能出現一些異常,因此要對這些異常作糾錯處理,以保證節點(diǎn)的正常工作。
(1)新加入節點(diǎn)的異步
在全網(wǎng)節點(diǎn)處于休眠狀態(tài)時(shí),若有新的節點(diǎn)加入網(wǎng)絡(luò ),為保證其網(wǎng)絡(luò )狀態(tài)和其他節點(diǎn)同步,新加入的節點(diǎn)在搜索不到網(wǎng)絡(luò )時(shí)會(huì )按照默認的休眠設置進(jìn)行休眠。休眠醒來(lái)繼續搜索網(wǎng)絡(luò )。以此循環(huán)直到搜索到網(wǎng)絡(luò )。
(2)數據出錯
數據中轉器通過(guò)串口獲得的數據都要進(jìn)行校驗處理,若校驗出錯,則拋棄該數據包,命令匯聚節點(diǎn)重發(fā)數據。
(3)無(wú)應答
匯聚節點(diǎn)對某一采集節點(diǎn)發(fā)送上傳數據的請求命令,若該節點(diǎn)在規定時(shí)間內沒(méi)有作出響應,匯聚節點(diǎn)會(huì )默認該節點(diǎn)被拋棄,它將向下一個(gè)節點(diǎn)發(fā)送上傳數據的請求。
(4)無(wú)確認
匯聚節點(diǎn)收到采集節點(diǎn)的數據后都會(huì )向該節點(diǎn)發(fā)送一個(gè)確認的消息,表示數據已經(jīng)收到。而采集節點(diǎn)會(huì )根據有沒(méi)有接收到確認消息決定數據要不要重發(fā)。
結 語(yǔ)
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )節點(diǎn)的軟件設計很大程度上決定了整個(gè)系統的穩定性和長(cháng)久性。任務(wù)調度機制和異常處理決定系統在工作時(shí)處于穩定的狀態(tài),而節點(diǎn)的充電管理系統保證了節點(diǎn)長(cháng)期工作的能源供應。系統可以按照用戶(hù)需要,在野外大量、準確地采集數據。本設計可用于在無(wú)人值守情況下長(cháng)期監測某一區域的環(huán)境信息,有著(zhù)廣闊的應用前景。
評論