面向環境監測的無線傳感器網絡節點的軟件設計
3.2節點工作流程
為便于管理和調度,節點所要實現的功能都是將其定義為事件進行處理的。每個事件完成相應功能。將事件按一定關系串接,就能實現節點工作時要完成的系統功能。采集節點和匯聚節點的工作流程如圖4、圖5所示。

匯聚節點和采集節點在同一時刻醒來。當匯聚節點創建網絡成功,并且采集節點入網成功后,全網節點處于通信狀態。匯聚節點會通過串口向數據中轉器發送1個表示網絡準備就緒的消息,數據中轉器接收到該消息之后根據上位機的要求決定要不要上傳數據,以及上傳哪些數據。匯聚節點接收到命令之后會觸發相應的事件進行處理,先命令采集節點將相應的數據上傳給它,再通過觸發串口事件將數據發送至數據中轉器。采集節點在入網成功以后也處于準備就緒的狀態,等待接受匯聚節點的命令,做相應的事件觸發處理。
在每次通信結束之前,匯聚節點會向數據中轉器發送1個請求休眠的消息,數據中轉器接收到該消息之后會按照上位機的要求對全網節點的休眠過程進行設置。
3.3 串口通信協議
匯聚節點與數據中轉器之間的通信是通過串口進行的。串口通信協議保證數據的安全收發,便于匯聚節點和數據中轉器對數據進行解析和存儲管理。數據中轉器和匯聚節點之間的串口通信數據幀格式如下所示:

其中,SOP為起始標志符,用1字節來表示數據包的起始,將這個字節定義為0x02;CMD表示命令ID,用1字節的數據來標識命令消息。LEN表示DATA的長度,用1字節來指示DATA位的數據的長度。DATA為具體要發送的數據。FCS是校驗位,這里使用XOR(異或校驗),校驗CMD、LEN、DATA中的所有數據。
當匯聚節點和數據中轉器通過串口接收到數據后,都是通過判別CMD對數據進行解析的。串口數據的CMD有如下幾種:
①0x03,數據中轉器發送上傳路由表命令。作為響應,匯聚節點通過串口上傳路由表數據的CMD標識為0x83。
②0x04,數據中轉器發送上傳鄰居表命令。作為響應,匯聚節點通過串口上傳鄰居表數據的CMD標識為0x84。
③0x05,數據中轉器發送上傳采集數據命令。作為響應,匯聚節點通過串口上傳采集數據時的CMD標識為0x85。
④0x89,匯聚節點發送至數據中轉器,表示網絡創建成功,等待命令消息。
⑤0xF9,匯聚節點發送至數據中轉器,表示數據全部上傳完畢,等待休眠。作為響應,數據中轉器通過串口向匯聚節點發送CMD為0x09的休眠設置命令。
LEN表示數據的長度,方便數據中轉器對接收到的數據進行空間分配和存儲。FCS是校驗位,用于表征數據的準確性。
當匯聚節點接收到串口數據時,匯聚節點會觸發自身應用層的串口事件,用于解析發送過來的命令消息,然后根據該命令來觸發相應的事件進行處理。
3.4 休眠設置
實驗證實,節點在休眠過程中處于斷網狀態。因此,為節省節點頻繁聯網帶來的功耗和保證全網節點工作狀態同步,在軟件上設計為節點在聯網成功后只執行通信任務,而休眠過程中只執行采集任務。當節點采集時刻到來,觸發采集事件,打開傳感器的開關對環境數據進行采集,并控制I/O口對傳感器采集得到的信號進行A/D采樣,最后將采樣值以SPI方式存入外部存儲器。在每次通信結束之前節點都會判斷是否有休眠設置命令,若接收到休眠設置命令,節點則會按照該設置進行休眠,直到下一次醒來;若沒接收到命令,節點則會按照上一次的休眠設置進行休眠。
評論