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