童世華,李 毅*,謝 磊
(1.重慶電子工程職業(yè)學(xué)院,重慶 401331;2.重慶郵電大學(xué),重慶 400065)
無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)遠(yuǎn)程升級(jí)設(shè)計(jì)與實(shí)現(xiàn)*
童世華1,李 毅1*,謝 磊2
(1.重慶電子工程職業(yè)學(xué)院,重慶 401331;2.重慶郵電大學(xué),重慶 400065)
針對(duì)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)升級(jí)困難的現(xiàn)狀,提出了一種基于IAP(In Application Programming)技術(shù)實(shí)現(xiàn)對(duì)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)自身程序?qū)嵭羞h(yuǎn)程升級(jí)的解決方案。方案結(jié)合現(xiàn)有的單片機(jī)IAP技術(shù)、無線傳感器網(wǎng)絡(luò)技術(shù)以及以太網(wǎng),以網(wǎng)絡(luò)控制器為設(shè)計(jì)核心,設(shè)計(jì)支持IAP的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn),并實(shí)現(xiàn)基于MFC的上位機(jī)軟件用于解析和下發(fā)節(jié)點(diǎn)文件。測試結(jié)果表明,該方案解決了無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)升級(jí)困難問題,具有良好的應(yīng)用前景。
物聯(lián)網(wǎng);無線網(wǎng)絡(luò)節(jié)點(diǎn);遠(yuǎn)程升級(jí);IAP;LwIP
無線傳感器網(wǎng)絡(luò)(簡稱WSN)被認(rèn)為是信息感知與采集的一場革命,是21世紀(jì)高新技術(shù)領(lǐng)域的四大支柱產(chǎn)業(yè)之一。無線傳感器網(wǎng)絡(luò)應(yīng)用非常廣泛,在實(shí)際應(yīng)用中常常因無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)功能的變化而需要進(jìn)行升級(jí)。無線傳感器網(wǎng)絡(luò)往往規(guī)模較大、工作環(huán)境復(fù)雜,節(jié)點(diǎn)一旦部署,其管理和維護(hù)就會(huì)變得十分困難。傳統(tǒng)的節(jié)點(diǎn)升級(jí)方式是將部署的節(jié)點(diǎn)全部收回,這樣的方式會(huì)耗費(fèi)巨大的人力和財(cái)力。針對(duì)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)升級(jí)困難的現(xiàn)狀,提出一種基于IAP的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)遠(yuǎn)程升級(jí)的設(shè)計(jì)方案[1],有較好的應(yīng)用價(jià)值和廣闊的應(yīng)用市場。
本系統(tǒng)采用基于IAP技術(shù)實(shí)現(xiàn)對(duì)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)自身程序?qū)嵭羞h(yuǎn)程升級(jí)的解決方案。因此,節(jié)點(diǎn)升級(jí)采用整個(gè)節(jié)點(diǎn)的更新模式,即用新節(jié)點(diǎn)完全覆蓋舊節(jié)點(diǎn),當(dāng)新節(jié)點(diǎn)數(shù)據(jù)接收完畢并校驗(yàn)無誤后,直接對(duì)原有的節(jié)點(diǎn)FLASH存儲(chǔ)區(qū)進(jìn)行擦寫完成節(jié)點(diǎn)升級(jí)。遠(yuǎn)程更新節(jié)點(diǎn)主要由遠(yuǎn)程主機(jī)借助以太網(wǎng)和無線傳感網(wǎng)將數(shù)據(jù)轉(zhuǎn)發(fā)至節(jié)點(diǎn),節(jié)點(diǎn)通過相應(yīng)的接口(USART、SPI等)接收節(jié)點(diǎn)下發(fā)數(shù)據(jù),再利用的IAP技術(shù)將節(jié)點(diǎn)下發(fā)數(shù)據(jù)在線寫入片內(nèi)FLASH并引導(dǎo)程序指針執(zhí)行新寫入節(jié)點(diǎn)的數(shù)據(jù)完成升級(jí)。系統(tǒng)總體設(shè)計(jì)方案的架構(gòu)如圖1所示[2-5]。其中網(wǎng)絡(luò)控制器負(fù)責(zé)異構(gòu)網(wǎng)數(shù)據(jù)的轉(zhuǎn)發(fā)與存儲(chǔ),節(jié)點(diǎn)更新數(shù)據(jù)先由遠(yuǎn)程主機(jī)通過互聯(lián)網(wǎng)下發(fā)至網(wǎng)絡(luò)控制器,網(wǎng)絡(luò)控制器對(duì)接收到的節(jié)點(diǎn)更新數(shù)據(jù)進(jìn)行校驗(yàn)與存儲(chǔ),再通過無線傳感器網(wǎng)絡(luò)轉(zhuǎn)發(fā)至目標(biāo)節(jié)點(diǎn)。
圖1 系統(tǒng)結(jié)構(gòu)示意圖
無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)遠(yuǎn)程升級(jí)系統(tǒng)由遠(yuǎn)程主機(jī)、網(wǎng)絡(luò)控制器和無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)3部分組成[6-7]。硬件包含網(wǎng)絡(luò)控制器和無線網(wǎng)絡(luò)節(jié)點(diǎn)兩個(gè)部分。網(wǎng)絡(luò)控制器硬件由主控、網(wǎng)卡和無線通信模塊3個(gè)部分組成。其中,網(wǎng)卡負(fù)責(zé)實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)收發(fā),無線通信模塊實(shí)現(xiàn)網(wǎng)絡(luò)控制器接入無線傳感器網(wǎng)絡(luò),二者通過通信接口與主控通信。軟件部分包含網(wǎng)絡(luò)控制器軟件設(shè)計(jì)、節(jié)點(diǎn)軟件設(shè)計(jì)以及上位機(jī)軟件設(shè)計(jì)。網(wǎng)絡(luò)控制器通過移植嵌入TCP/IP協(xié)議棧實(shí)現(xiàn)以太網(wǎng)通信;節(jié)點(diǎn)軟件包括無線通信協(xié)議、射頻驅(qū)動(dòng)和傳感器驅(qū)動(dòng),在此基礎(chǔ)上設(shè)計(jì)Bootloader程序完成節(jié)點(diǎn)IAP過程;上位機(jī)主要完成節(jié)點(diǎn)更新數(shù)據(jù)解析與下發(fā),創(chuàng)建Socket套接字監(jiān)聽來自網(wǎng)絡(luò)控制器的連接請(qǐng)求,利用微軟MFC的CFile類庫實(shí)現(xiàn)目標(biāo)文件的解析。
圖3 無線通信模塊插座原理圖
2.1 網(wǎng)絡(luò)控制器硬件設(shè)計(jì)
網(wǎng)絡(luò)控制器采用STM32F107VC為核心處理器,外圍配備電源電路、調(diào)試下載電路、I/O通信接口、晶振電路、無線通信模塊以及PHY芯片,硬件結(jié)構(gòu)示意圖如圖2所示。PHY芯片以RMII模式連接MCU的MAC控制器,并通過RJ45網(wǎng)口接入以太網(wǎng);無線通信模塊通過串口連接MCU,以射頻方式接入無線傳感器網(wǎng)絡(luò)。
圖2 網(wǎng)絡(luò)控制器硬件結(jié)構(gòu)示意圖
2.2 節(jié)點(diǎn)硬件設(shè)計(jì)
根據(jù)節(jié)點(diǎn)升級(jí)方案進(jìn)行了節(jié)點(diǎn)設(shè)計(jì),與常用節(jié)點(diǎn)比較唯一區(qū)別在于附加片外FLASH存儲(chǔ)器,用于存儲(chǔ)APP節(jié)點(diǎn)程序,由傳感單元、通信單元、處理單元、電源單元及存儲(chǔ)單元構(gòu)成。
節(jié)點(diǎn)與無線網(wǎng)絡(luò)通信采用支持315 MHz、433 MHz和470 MHz 3頻段的無線通信模塊。該模塊以STM32F103RBT6為處理器,自帶有時(shí)鐘電路、復(fù)位電路、下載電路、串口、SPI接口以及GPIO口。節(jié)點(diǎn)僅需設(shè)計(jì)電源電路、FLASH存儲(chǔ)電路、傳感器接口、無線通信模塊插座。無線通信模塊插座如圖3所示,用于接插無線通信模塊并為模塊供電,同時(shí)具有GPIO、USART1、SPI2、I2C等通信接口??紤]到節(jié)點(diǎn)的穩(wěn)定性,節(jié)點(diǎn)采用有源設(shè)計(jì)。即設(shè)計(jì)鋰電池供電,用以防掉電對(duì)節(jié)點(diǎn)硬件造成損害以及對(duì)升級(jí)可能造成的影響。
供電電路如圖4所示。片外FLASH存儲(chǔ)器存儲(chǔ)APP節(jié)點(diǎn)數(shù)據(jù)用以支持節(jié)點(diǎn)的IAP節(jié)點(diǎn)升級(jí),以SPI的方式與無線通信模塊主控通信。傳感器采集數(shù)據(jù)通過GPIO接口實(shí)現(xiàn)上傳。
圖4 節(jié)點(diǎn)電源充電電路原理圖
3.1 μC/OS-Ⅱ操作系統(tǒng)的移植
軟件設(shè)計(jì)包含網(wǎng)絡(luò)控制器軟件設(shè)計(jì)、節(jié)點(diǎn)軟件設(shè)計(jì)以及上位機(jī)軟件設(shè)計(jì)[9-12]。為了實(shí)現(xiàn)串口數(shù)據(jù)處理及以太網(wǎng)數(shù)據(jù)處理、系統(tǒng)快速響應(yīng)及高效的運(yùn)行效率,網(wǎng)絡(luò)控制器的操作系統(tǒng)采用μC/OS-Ⅱ,開發(fā)環(huán)境為MDK-ARM5.12。μC/OS-Ⅱ是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含任務(wù)調(diào)度、任務(wù)管理、時(shí)間管理、任務(wù)間同步與通信(信號(hào)、郵箱和消息隊(duì)列)、內(nèi)存管理等功能,包括可裁剪、可固化、任務(wù)可剝奪、多任務(wù)等特點(diǎn),具有足夠的安全性與穩(wěn)定性。
3.2 節(jié)點(diǎn)IAP程序設(shè)計(jì)
節(jié)點(diǎn)遠(yuǎn)程升級(jí)采用在線編程,利用單片機(jī)支持的在線FLASH編程實(shí)現(xiàn)。即節(jié)點(diǎn)正常工作時(shí)運(yùn)行功能程序區(qū),當(dāng)接收到APP節(jié)點(diǎn)數(shù)據(jù)時(shí),將其寫入片外FLASH。待節(jié)點(diǎn)接收完畢,單片機(jī)軟件復(fù)位進(jìn)入Bootloader程序區(qū),Bootloader程序負(fù)責(zé)將片外FLASH中存儲(chǔ)的APP節(jié)點(diǎn)寫入功能程序區(qū)覆蓋原功能程序,再強(qiáng)制程序指針跳轉(zhuǎn)執(zhí)行新寫入的功能程序,完成節(jié)點(diǎn)升級(jí)。實(shí)現(xiàn)過程涉及到3個(gè)關(guān)鍵技術(shù):節(jié)點(diǎn)分片數(shù)據(jù)校驗(yàn)與重組、FLASH在線編程、片內(nèi)FLASH分區(qū)與跳轉(zhuǎn)執(zhí)行[12]。
節(jié)點(diǎn)遠(yuǎn)程升級(jí)過程如圖5所示。本設(shè)計(jì)將STM32的FLASH分成Bootloader、標(biāo)志位和功能程序3個(gè)區(qū)。當(dāng)節(jié)點(diǎn)MCU重啟時(shí)執(zhí)行BOOT程序,首先讀取片內(nèi)FLASH的標(biāo)志位區(qū)的IAP標(biāo)志。若該標(biāo)志位有效則說明節(jié)點(diǎn)需要更新節(jié)點(diǎn)程序,讀取片外FLASH中的節(jié)點(diǎn)程序數(shù)據(jù)并將其寫入片內(nèi)功能程序區(qū),再將IAP標(biāo)志位清0,然后跳轉(zhuǎn)執(zhí)行新功能程序。若BOOT程序檢測到的IAP標(biāo)志無效則直接跳轉(zhuǎn)執(zhí)行功能程序。在節(jié)點(diǎn)執(zhí)行功能程序時(shí)若接收到APP分片數(shù)據(jù)則進(jìn)行CRC校驗(yàn),校驗(yàn)成功則將其寫入片外FLASH并反饋成功標(biāo)志到網(wǎng)絡(luò)控制器,并請(qǐng)求下發(fā)下一個(gè)分片,校驗(yàn)失敗則反饋失敗標(biāo)志并請(qǐng)求重發(fā)該分片。當(dāng)APP所有分片數(shù)據(jù)接收完畢,將IAP標(biāo)志位置位,再軟件復(fù)位MCU,重啟后由BOOT程序完成節(jié)點(diǎn)新程序?qū)懭肱c跳轉(zhuǎn)執(zhí)行。
圖5 節(jié)點(diǎn)IAP實(shí)現(xiàn)流程圖
3.3 基于MFC的上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件采用VS2010進(jìn)行設(shè)計(jì),VS2010的工具箱提供了豐富的控件如Static Text、Edit Control、Group Box、IP Address Control等,上位機(jī)軟件設(shè)計(jì)所用到的控件均可從工具箱中拖出。打開VS2010新建MFC應(yīng)用程序,在向?qū)У摹皯?yīng)用程序類型”界面和“高級(jí)功能”界面分別勾選“基于對(duì)話框”和“Windows套接字”,點(diǎn)擊完成按鈕即完成基于對(duì)話框的應(yīng)用程序創(chuàng)建。勾選“Windows套接字”后,會(huì)自動(dòng)生成MFC Socket支持的頭文件afxsock.h,并在應(yīng)用程序類的成員函數(shù)InitInstance()內(nèi)自動(dòng)調(diào)用AfxSocketInit(),對(duì)Windows Sockets進(jìn)行初始化。
4.1 系統(tǒng)功能測試驗(yàn)證
為了驗(yàn)證無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)的遠(yuǎn)程升級(jí)性能,搭建了如圖6所示的測試系統(tǒng),該系統(tǒng)包括6個(gè)節(jié)點(diǎn)、網(wǎng)絡(luò)控制器、思科路由器和PC機(jī),PC機(jī)與網(wǎng)絡(luò)控制器通過路由器組建局域網(wǎng)。上位機(jī)的協(xié)議類型選擇TCP_Server,主機(jī)地址自動(dòng)獲取,監(jiān)聽端口設(shè)置為3001,點(diǎn)擊“啟動(dòng)服務(wù)器”開啟監(jiān)聽模式。客戶端與服務(wù)器端建立TCP連接后,節(jié)點(diǎn)上傳數(shù)據(jù)至上位機(jī),上位機(jī)根據(jù)接收數(shù)據(jù)中的地址信息判斷在線節(jié)點(diǎn),并加入在線節(jié)點(diǎn)列表。選擇需要升級(jí)的節(jié)點(diǎn),并載入目標(biāo)文件(選擇溫濕度傳感器節(jié)點(diǎn)SHT75.bin),點(diǎn)擊“發(fā)送文件”啟動(dòng)文件并等待升級(jí)結(jié)果,結(jié)果如圖7所示。
圖6 系統(tǒng)功能測試圖
圖7 升級(jí)成功上位機(jī)界面
分別對(duì)5個(gè)節(jié)點(diǎn)進(jìn)行升級(jí)測試,每個(gè)節(jié)點(diǎn)測10次,并統(tǒng)計(jì)升級(jí)成功率與平均耗時(shí)。測試結(jié)果表明:在理想條件下節(jié)點(diǎn)的升級(jí)成功率為100%,受WIA-PA網(wǎng)絡(luò)傳輸效率的限制升級(jí)較慢,平均用時(shí)約為70 s。同時(shí)測試了對(duì)歷史節(jié)點(diǎn)升級(jí)功能,測試結(jié)果表明:本設(shè)計(jì)支持歷史節(jié)點(diǎn)快速升級(jí),即通過上位機(jī)下發(fā)升級(jí)指令,節(jié)點(diǎn)接收到指令后將片外FLASH存儲(chǔ)器中的節(jié)點(diǎn)直接寫入片內(nèi)FLASH完成升級(jí),用時(shí)僅為1.3 s。
4.2 系統(tǒng)性能測試驗(yàn)證
在分片數(shù)據(jù)下發(fā)過程中,接收端會(huì)對(duì)數(shù)據(jù)進(jìn)行CRC校驗(yàn),并將校驗(yàn)反饋至發(fā)送端。當(dāng)校驗(yàn)結(jié)果為成功時(shí)發(fā)送端繼續(xù)下發(fā)下一個(gè)分片,校驗(yàn)結(jié)果失敗則重發(fā)當(dāng)前分片。重發(fā)次數(shù)超過5次則認(rèn)為本次升級(jí)失敗,并把結(jié)果反饋至上位機(jī)。
測試時(shí),由上位機(jī)載入節(jié)點(diǎn)(以煙霧傳感器節(jié)點(diǎn)驅(qū)動(dòng)為例,節(jié)點(diǎn)大小為57.9 kbyte),進(jìn)行測試。5個(gè)節(jié)點(diǎn)4種傳輸距離,每組測試20次共進(jìn)行10組,并統(tǒng)計(jì)升級(jí)成功率及平均升級(jí)耗時(shí)。測試數(shù)據(jù)如表1所示。
表1 升級(jí)結(jié)果統(tǒng)計(jì)表
測試結(jié)果表明,WIA-PA網(wǎng)絡(luò)傳輸數(shù)據(jù)丟包率較低,當(dāng)通信距離為1.2 km時(shí)丟包率僅為0.7%。當(dāng)數(shù)據(jù)校驗(yàn)失敗時(shí)自動(dòng)請(qǐng)求重發(fā),連續(xù)失敗5次則認(rèn)為出現(xiàn)異常終止升級(jí)。當(dāng)丟包率維持在較低水平時(shí),同一分片數(shù)據(jù)連續(xù)重傳5次均出錯(cuò)的幾率很低,升級(jí)成功率較高。當(dāng)通信距離在2 km以內(nèi)時(shí)丟包率低升級(jí)成功率較高;當(dāng)通信距離超過3 km時(shí),升級(jí)成功率下降明顯。
本設(shè)計(jì)是在無線傳感器網(wǎng)絡(luò)的應(yīng)用越來越廣泛、無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)更新困難的背景下,依據(jù)現(xiàn)有的IAP技術(shù)、以太網(wǎng)技術(shù)和無線傳感網(wǎng)技術(shù)提出的基于IAP的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)遠(yuǎn)程升級(jí)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)方案。該方案支持節(jié)點(diǎn)遠(yuǎn)程一鍵升級(jí),相比傳統(tǒng)的節(jié)點(diǎn)回收更新方法節(jié)省人力財(cái)力且效率高。具有較好的應(yīng)用和推廣價(jià)值。
[1] 霍文文. 無線傳感器網(wǎng)絡(luò)在線升級(jí)系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)[D]. 濟(jì)南:山東大學(xué),2012:45-49.
[2] 洪萬帆,蘇淑靖. 基于無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 電子器件,2016,39(1):180-185.
[3] 譚勵(lì),楊朝玉,楊明華,等. 改進(jìn)的非均勻有向傳感器網(wǎng)絡(luò)節(jié)點(diǎn)部署方法[J]. 傳感技術(shù)學(xué)報(bào),2015,28(12):1835-1840.
[4] 張智威,孫子文. 基于蟻群算法的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)可信安全路由[J]. 傳感技術(shù)學(xué)報(bào),2016,29(2):256-263.
[5] 李興鶴,蔡亮,宋吉波,等. STM32用戶基于IAP的程序更新技術(shù)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(1):74-75.
[6] 李景林. 基于IEEE802.15.4g的無線傳感網(wǎng)模塊設(shè)計(jì)[D]. 重慶:重慶郵電大學(xué),2015:51-54.
[7] 吳瑞娜,張建奇,梁喜軍. 基于STM32的GPRS遠(yuǎn)程在線升級(jí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 自動(dòng)化技術(shù)與應(yīng)用,2015,34(12):34-37.
[8] 陸旭. 基于μC/OS-Ⅱ和LwIP的嵌入式設(shè)備監(jiān)控平臺(tái)研究[D]. 重慶:重慶大學(xué),2013:32-34.
[9] Chan J,Su T,Li M C. Method and Apparatus for Logic Read in Flash Memory:US8614920[P]. 2013.
[10] Shen J,Shang-Chang M A,Zhang S J,et al. Serial Port Equipment Networking Technology Research Based on UCOS-Ⅱ and Lw IP[J]. Electronic Design Engineering,2015,2(10):75-78.
[11] Wang X,Liu T. Research on Subsystem Hybrid Scheduling and Priority Inversion Based uCOS-Ⅱ[J]. Journal of System Simulation,2012,19(3):117-121.
[12] Shi X F,Feng T,Zhang X M. Remote Data Acquisition System Based on Embedded RT-Thread[J]. Applied Mechanics and Materials,2012,21(24):2238-2241.
DesignandImplementationofRemoteUpgradeofWirelessSensorNetworkNode*
TONGShihua1,LIYi1*,XIELei2
(1.Chongqing College of Electronic Engineering,Chongqing 401331,China;2. Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
Aiming at the difficult situation of Wireless sensor network node upgrade,a solution based on IAP(In Application Programming)technology is proposed to realize remote upgrade of wireless sensor network node’s own program. Combined with existing microcontroller IAPtechnology,wireless sensor network technology and Ethernet,the scheme uses network controller as a core and designs the wireless sensor network nodes supporting IAP and achieves PC software based MFC for analysis and distribution of firmware files. The test results show that the scheme solves the difficult problem of wireless sensor network node upgrade and has good application prospects.
internet of things;wireless network node;remote upgrade;IAP;LWIP
10.3969/j.issn.1005-9490.2017.05.045
項(xiàng)目來源:重慶市教育委員會(huì)2016年度科學(xué)技術(shù)研究項(xiàng)目(KJ1602910)
2016-08-31修改日期2016-10-22
TP273
A
1005-9490(2017)05-1287-05
童世華(1980-),男,漢族,四川瀘縣,重慶電子工程職業(yè)學(xué)院,副教授,主要從事物聯(lián)網(wǎng)、智能家居等方向研究,108457135@qq.com;
李毅(1974-),男,漢族,重慶電子工程職業(yè)學(xué)院,副教授,主要從事計(jì)算機(jī)技術(shù)應(yīng)用等方向研究;
謝磊(1990-),男,漢族,重慶郵電大學(xué),碩士研究生,主要從事物聯(lián)網(wǎng)技術(shù)應(yīng)用研究。