文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.013
中文引用格式: 蔡伯峰,,蔡偉達(dá),王宜懷. KW01-ZigBee無線傳感網(wǎng)應(yīng)用開發(fā)平臺(tái)的研制[J].電子技術(shù)應(yīng)用,,2017,,43(3):55-58.
英文引用格式: Cai Bofeng,Cai Weida,,Wang Yihuai. Design of KW01-ZigBee wireless sensor network application development platform[J].Application of Electronic Technique,,2017,43(3):55-58.
0 引言
KW01是飛思卡爾公司2014正式推出的業(yè)內(nèi)首款Sub-GHz芯片,,是由基于ARM Cortex-M0+內(nèi)核的微控制器KL26與SX1231-RF射頻模塊組成[1]。
無線傳感網(wǎng)(Wireless Sensor Network,,WSN)已滲入到醫(yī)療,、家居、交通等各種領(lǐng)域,,但由于其應(yīng)用開發(fā)涉及到網(wǎng)絡(luò)架構(gòu)與方案,、節(jié)點(diǎn)、RF通信電路,、硬軟件構(gòu)件的設(shè)計(jì),,以及通信協(xié)議,、操作系統(tǒng)融入、程序編寫,、可重用和移植性等知識(shí)和技術(shù),,所以門檻較高,導(dǎo)致WSN應(yīng)用開發(fā)難度大,、周期長(zhǎng),、成本高,產(chǎn)品可維護(hù)性及移植性差,。為解決這一現(xiàn)狀,,茅正沖[2]等研究可配置嵌入式應(yīng)用程序設(shè)計(jì)模式,范寧寧[3]等研究測(cè)控系統(tǒng)框架,,曹敬瑜[4]等研究高效軟件構(gòu)件化框架,。但這些研究是通過設(shè)計(jì)構(gòu)件來開發(fā)應(yīng)用程序,并沒有設(shè)計(jì)出具有完整架構(gòu)的開發(fā)平臺(tái),。為此本文研制了一款基于KW01-ZigBee 的層次架構(gòu)清晰,、接口豐富、驅(qū)動(dòng)構(gòu)件完備的相對(duì)通用實(shí)用易用的WSN應(yīng)用開發(fā)平臺(tái),,極大方便了WSN應(yīng)用開發(fā),,將會(huì)降低開發(fā)難度、縮短開發(fā)周期,,并能增強(qiáng)產(chǎn)品的可維護(hù)性和可移植性,。
1 開發(fā)平臺(tái)建模
WSN一般由若干個(gè)終端節(jié)點(diǎn)、帶路由功能的終端節(jié)點(diǎn),,以及多個(gè)網(wǎng)關(guān)節(jié)點(diǎn)(本文稱為PC節(jié)點(diǎn))組成,。本文研制的平臺(tái)用于WSN應(yīng)用工程各節(jié)點(diǎn)的開發(fā),采用如圖1所示的四層架構(gòu)平臺(tái)模型,。
硬件平臺(tái)層是由KW01-ZigBee開發(fā)板,、寫入器和用于連接網(wǎng)關(guān)節(jié)點(diǎn)與PC的USB-TTL串口線組成的開發(fā)套件。為減少設(shè)計(jì)成本并保證穩(wěn)定可靠的通信,,WSN中所有節(jié)點(diǎn)的開發(fā)板均相同,。
MCU方工程框架用于開發(fā)應(yīng)用程序,由硬件抽象層,、軟件構(gòu)件層和應(yīng)用層組成,。硬件抽象層文件主要用于芯片上電復(fù)位和鏈接。軟件構(gòu)件層包括底層驅(qū)動(dòng)構(gòu)件,、應(yīng)用構(gòu)件和高層構(gòu)件,;應(yīng)用層的用戶代碼包括用戶任務(wù)、主程序和中斷服務(wù)例程(Interrupt Service Routine,,ISR),。為便于開發(fā)功能復(fù)雜的WSN應(yīng)用工程,,在框架中融入MQXLite實(shí)時(shí)操作系統(tǒng)(Real Time Operating System,RTOS),,用于管理,、調(diào)度、處理多任務(wù)[5,,6],。
2 開發(fā)板及硬件構(gòu)件設(shè)計(jì)
開發(fā)板應(yīng)架構(gòu)清晰、使用和維護(hù)方便,,為此本文設(shè)計(jì)了KW01-ZigBee開發(fā)板,,硬件結(jié)構(gòu)框圖如圖2所示。KW01 MCU由KL26和RF收發(fā)器組成,,擁有16 KB SRAM,、128 KB Flash和UART、SPI,、IIC,、TSI、ADC,、定時(shí)器等模塊,具有無線電性能高,,傳輸速率快,、距離遠(yuǎn),處理能力強(qiáng),,超低功耗等特點(diǎn)[7],。
構(gòu)件是提高系統(tǒng)可重用性、可移植性的基礎(chǔ)和保障,,用于組裝系統(tǒng)可提高開發(fā)效率,。設(shè)計(jì)開發(fā)板時(shí)將各電路模塊設(shè)計(jì)成構(gòu)件并提供功能明確的接口,可極大方便用戶使用,。如硬件最小系統(tǒng)構(gòu)件由程序運(yùn)行所需最低規(guī)模外圍電路(如電源及濾波,、復(fù)位、晶振等電路)組成,;電源電路構(gòu)件用于將5 V輸入轉(zhuǎn)換為3.3 V供芯片使用,;RF前端電路構(gòu)件用于連接射頻引腳RFIO與天線。
為便于實(shí)驗(yàn),、科研及應(yīng)用開發(fā),,將MCU除硬件最小系統(tǒng)引腳外的其他引腳封裝成各種構(gòu)件,如UART接口,、SWD寫入器接口,、電池接口,、對(duì)外接口等構(gòu)件。圖3中標(biāo)識(shí)的是引腳默認(rèn)功能,,可直接使用,,而其他功能的使用,可按照NXP官方網(wǎng)站給出的KW01技術(shù)參考手冊(cè)[1]上的功能復(fù)用表進(jìn)行引腳功能復(fù)用,。
工程開發(fā)時(shí),,將外設(shè)模塊連接到相應(yīng)接口構(gòu)件并根據(jù)需要復(fù)用引腳功能,可極大提高開發(fā)效率,。
3 底層驅(qū)動(dòng)構(gòu)件設(shè)計(jì)
KW01包括RF,、GPIO、ADC等硬件模塊,,編程時(shí)通過驅(qū)動(dòng)程序操作對(duì)應(yīng)的硬件模塊,,但驅(qū)動(dòng)程序只有封裝成底層驅(qū)動(dòng)構(gòu)件才便于重用移植,也才能方便用戶直接使用,,從而降低應(yīng)用開發(fā)難度,。
限于篇幅,本文僅介紹RF驅(qū)動(dòng)構(gòu)件設(shè)計(jì)過程,。按照構(gòu)件設(shè)計(jì)思想,,將RF模塊的初始化、接收數(shù)據(jù),、發(fā)送數(shù)據(jù),、檢測(cè)能量等基本操作封裝成獨(dú)立的功能函數(shù)即可,但從方便實(shí)際應(yīng)用出發(fā)還應(yīng)封裝帶參數(shù)初始化,、CSMA/CA機(jī)制發(fā)送數(shù)據(jù),、設(shè)置通道號(hào)等函數(shù)。由于它們都涉及到對(duì)RF硬件底層寄存器操作,,是底層驅(qū)動(dòng)函數(shù),,因此將其按構(gòu)件設(shè)計(jì)原則封裝,并集中存放在rf.c源文件中,,同時(shí)配以rf.h存放相關(guān)宏定義,、底層寄存器映射和驅(qū)動(dòng)函數(shù)原型聲明。在構(gòu)件設(shè)計(jì)中,,重點(diǎn)要設(shè)計(jì)好底層驅(qū)動(dòng)函數(shù)原型并給出詳細(xì)注釋,,方便用戶使用。例如RF接收數(shù)據(jù)函數(shù)的功能是從FIFO隊(duì)列中接收一幀數(shù)據(jù),,并返回接收成功與否標(biāo)志,,因此需提供數(shù)據(jù)緩沖區(qū)地址以存放接收的數(shù)據(jù),以及存放接收數(shù)據(jù)長(zhǎng)度的指針單元和硬件過濾地址(即當(dāng)前WSN應(yīng)用工程中節(jié)點(diǎn)的硬件地址,,用于過濾掉其他工程發(fā)送的數(shù)據(jù)包,,同一工程各節(jié)點(diǎn)硬件地址相同),。這樣函數(shù)原型設(shè)計(jì)為:
//功能概要:RF接收數(shù)據(jù)幀
//參數(shù)說明:plen:接收數(shù)據(jù)長(zhǎng)度指針,
//pbuf:接收數(shù)據(jù)緩沖區(qū)首地址, hw_adr:硬件過濾地址
//函數(shù)返回:=0,接收正常,=其他值,接收異常
uint_8 RFReceiveFrame(uint_8* pbuf, uint_8* plen,uint_8 hw_adr);
4 MCU方工程框架設(shè)計(jì)
MCU方工程框架用于為節(jié)點(diǎn)程序開發(fā)提供工程模板,,以降低開發(fā)難度,,提高開發(fā)效率。
4.1 工程框架設(shè)計(jì)的基本原則
遵循軟件工程可復(fù)用,、可移植,、易理解、易維護(hù)的基本思想,,為縮短產(chǎn)品開發(fā)周期及提高開發(fā)效率打好基礎(chǔ)[8],;以構(gòu)件設(shè)計(jì)為基礎(chǔ),通過各種構(gòu)件的設(shè)計(jì)與應(yīng)用,,提高框架的可復(fù)用性,、可移植性,降低應(yīng)用開發(fā)難度[9],;目錄結(jié)構(gòu)合理分類,,按照文件內(nèi)容歸納整理、分類組織,,提高軟件產(chǎn)品的可維護(hù)性,。
4.2 工程框架的組織結(jié)構(gòu)
根據(jù)軟件工程對(duì)工程框架必須滿足結(jié)構(gòu)清晰、文件安排合理,、具有可移植和易修改特點(diǎn)的要求,,以及以上設(shè)計(jì)原則和圖1四層架構(gòu)平臺(tái)模型的設(shè)計(jì)思想,構(gòu)建了如表1所示的樹形結(jié)構(gòu)統(tǒng)一MQXLite工程框架(All-in-one MQXLite FrameWork,,AMQXLFW)。
4.3 AMQXLFW設(shè)計(jì)分析
除開發(fā)環(huán)境特有的文件夾外,,工程框架包含的文件夾均相同,,表1是基于Kinetis開發(fā)環(huán)境(Kinetis Development Studio,KDS)包含的12個(gè)文件夾,,個(gè)數(shù)和名稱固定,。存放文件原則如下:
01_Doc存放工程文檔,隨工程變化而更新,。02_CPU和03_MCU分別存放內(nèi)核,、芯片相關(guān)的上電復(fù)位啟動(dòng)文件,因內(nèi)核廠家只負(fù)責(zé)設(shè)計(jì)維護(hù)內(nèi)核及源代碼而不生產(chǎn)芯片,,故分開存放便于移植更新,。04_Linker_File存放提供程序代碼、中斷向量表,、常變量的存放地址的鏈接腳本,,隨開發(fā)環(huán)境修改,。充足完備的構(gòu)件可有效降低工程開發(fā)難度[10],05_Driver,、06_App_Component,、07_Soft_Component分類存放底層驅(qū)動(dòng)、應(yīng)用和高層構(gòu)件便于構(gòu)件融入,、更新,、移植,應(yīng)用和高層構(gòu)件的名稱和內(nèi)容封裝后不允許更改,。08_Source和09_MQXLite分別是無操作系統(tǒng)和有操作系統(tǒng)編程和調(diào)試的主要目錄,,08_Source中各文件名固定、內(nèi)容隨工程而修改,,includes.h包含所有構(gòu)件頭文件(有操作系統(tǒng)下使用01_app_include.h),,isr.c包含RF接收中斷isr_gpio_cd()等。09_MQXLite包含內(nèi)容見表2,,isr.c仍然有效,,因?yàn)橛?無操作系統(tǒng)時(shí)中斷處理流程一致,但main.c用來初始化并啟動(dòng)MQXLite,,app是按照MQXLite任務(wù)設(shè)計(jì)要求增加的目錄,,包含3個(gè)固定文件和若干用戶任務(wù)文件,其余文件夾文件從MQX或KDS安裝目錄提取,,對(duì)文中開發(fā)板不必修改,。
4.4 使用框架開發(fā)的流程及優(yōu)越性
有了工程框架,只要遵循圖4所示流程就能方便快速地開發(fā)MCU方程序,。不使用框架時(shí),,內(nèi)核和芯片文件可從廠商獲得,鏈接文件可由環(huán)境生成,,但工程中其余文件都需自己編寫,,還需移植操作系統(tǒng),開發(fā)難度大,、效率低,、周期長(zhǎng);使用框架時(shí),,只需修改或添加少量文件及代碼,,就可完成開發(fā)任務(wù),不同應(yīng)用間移植也很容易,。
5 開發(fā)平臺(tái)的應(yīng)用實(shí)例
5.1 應(yīng)用實(shí)例的基本功能
應(yīng)用實(shí)例工程的硬件架構(gòu)包括終端節(jié)點(diǎn),、PC節(jié)點(diǎn)和PC,PC節(jié)點(diǎn)與PC串口通信,終端節(jié)點(diǎn)與PC節(jié)點(diǎn)均采用KW01-ZigBee開發(fā)板,,通過RF通信,。實(shí)例的基本功能是:PC端下發(fā)采集芯片溫度命令數(shù)據(jù)包,經(jīng)串口傳給PC節(jié)點(diǎn),,再經(jīng)RF轉(zhuǎn)發(fā)給終端節(jié)點(diǎn),,收到后解幀,再通過KW01自帶溫度傳感器采集芯片溫度并組幀,,經(jīng)RF發(fā)給PC節(jié)點(diǎn)送PC顯示,。
5.2 MCU方程序開發(fā)
根據(jù)終端節(jié)點(diǎn)要實(shí)現(xiàn)的功能,開發(fā)其MCU方程序只需設(shè)計(jì)1個(gè)ISR和3個(gè)任務(wù):(1)RF接收中斷:接收來自PC節(jié)點(diǎn)數(shù)據(jù)包,,并啟動(dòng)RF接收任務(wù),,數(shù)據(jù)幀格式可自行定義。(2)RF接收任務(wù):解析接收的數(shù)據(jù)包,,數(shù)據(jù)命令啟動(dòng)溫度采集任務(wù),,該任務(wù)文件已包含在框架中,只需根據(jù)任務(wù)文件中說明修改即可,。(3)芯片溫度采集任務(wù):通過AD通道采集芯片溫度并組幀,,再啟動(dòng)RF發(fā)送任務(wù)。(4)RF發(fā)送任務(wù):將包含芯片溫度的數(shù)據(jù)包通過RF發(fā)送給PC節(jié)點(diǎn),,由PC節(jié)點(diǎn)傳給PC端,。該任務(wù)文件已包含在框架中。
然后,,在app中添加task_temp_ad.c,,其采集溫度與組幀的代碼如下:
rf_sendBuf[0]=(uint_8)’T’;//幀頭
rf_sendBuf[1]=57;//有效幀長(zhǎng)
rf_sendBuf[2]=(uint_8)hd_adr;//硬件過濾地址
//將下行幀的內(nèi)容復(fù)制到上行幀中
for(i<=3;i<=58;i++) rf_sendBuf[i]= rf_revBuf[i];
//調(diào)用KW01的ADC構(gòu)件ad_read()采集芯片的溫度
ADResult=ad_read(26);//從通道號(hào)26采集AD值
//物理回歸:根據(jù)芯片手冊(cè)上的公式計(jì)算出溫度值
Vtmp=(ADResult*3 300)>>16;//電壓采樣值mV
tmp=25-(Vtmp-706)/1.62;//計(jì)算溫度
//計(jì)算溫度的整數(shù)和小數(shù)部分并封裝在幀尾前兩字節(jié)中
rf_sendBuf[57]=(uint_8)tmp;
rf_sendBuf[58]=(uint_8)((tmp-(uint_8)tmp)*10+0.5);
rf_sendBuf[59]=(uint_8)'D';//幀尾
其余步驟按圖4工作流程和框架模板就可快速完成終端節(jié)點(diǎn)MCU方程序開發(fā)。PC節(jié)點(diǎn)的MCU方程序開發(fā)類似,。
5.3 應(yīng)用實(shí)例運(yùn)行測(cè)試
借助VS2013開發(fā)PC端程序和測(cè)試界面,,通過界面下發(fā)溫度采集命令,終端節(jié)點(diǎn)收到后將采集的芯片溫度封裝在應(yīng)答幀有效數(shù)據(jù)的最后兩個(gè)字節(jié)中,,通過RF送PC端顯示,。通過反復(fù)運(yùn)行測(cè)試,測(cè)試結(jié)果穩(wěn)定,;當(dāng)給芯片加熱或降溫時(shí),測(cè)試結(jié)果也相應(yīng)改變,。實(shí)例工程的開發(fā)和測(cè)試結(jié)果表明,,用本文研制的開發(fā)平臺(tái)能快速完成開發(fā)工作,工程任務(wù)運(yùn)行和調(diào)度正常,,穩(wěn)定性和實(shí)時(shí)性都能滿足工程要求,。
6 結(jié)論
本文研制了一種能有效降低開發(fā)難度,提高開發(fā)效率的WSN應(yīng)用開發(fā)平臺(tái)。通過將MCU硬件最小系統(tǒng)和各種對(duì)外接口,、硬件底層驅(qū)動(dòng)設(shè)計(jì)為構(gòu)件供用戶使用,;通過給出編程框架模板、應(yīng)用方法等,,用戶只要根據(jù)具體工程適當(dāng)修改模板文件并增加任務(wù),,就能快速完成應(yīng)用開發(fā)。在后續(xù)研究中將繼續(xù)加強(qiáng)對(duì)接口的設(shè)計(jì)研究,,完善構(gòu)件庫,,優(yōu)化工程框架結(jié)構(gòu),以提升復(fù)用性和可移植性,。本文提出的研制方法對(duì)同類平臺(tái)的研制具有很好的借鑒作用,。
參考文獻(xiàn)
[1] NXP.MKW01Z128 Reference Manual Rev.2[DB/OL].(2014-03-01)[2016-08-20].http://www.nxp.com/.
[2] 茅正沖,葉臻,,黃芳,,等.基于構(gòu)件的可配置嵌入式應(yīng)用程序設(shè)計(jì)模式[J].計(jì)算機(jī)測(cè)量與控制,2015,,23(4):1432-1434,,1437.
[3] 范寧寧,王宜懷,,陳瑞杰.基于WSCN與E-Ethernet相結(jié)合的遠(yuǎn)程測(cè)控系統(tǒng)框架研究[J].現(xiàn)代電子技術(shù),,2016,39(2):53-57,,61.
[4] 曹敬瑜,,柴瑋巖,王博,,等.嵌入式分布計(jì)算環(huán)境下的高效軟件構(gòu)件化框架研究[J].兵工學(xué)報(bào),,2013,34(4):451-458.
[5] NXP.MQXLite RTOS reference manual[DB/OL].(2014-09-10)[2016-08-20].http://www.nxp.com/.
[6] CHOVANEC M,,SARAFIN P.Real-time schedule for mobile robotics and WSN aplications[J].FedCSIS,,2015(5):1199-1202.
[7] NXP.MKW01 development hardware reference manual[DB/OL].(2014-03-01)[2016-08-20].http://www.nxp.com/.
[8] 王宜懷,朱仕浪,,姚望舒.嵌入式實(shí)時(shí)操作系統(tǒng)MQX應(yīng)用開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,,2014.
[9] 屈新懷,張先燏,,丁必榮.可控嵌入式構(gòu)件框架的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,,2014,31(2):14-16,,85.
[10] YAHLALI M,,CHOUARFIA A.Towards a software component assembly evaluation[J].IET Software,,2015,9(1):1-6.
作者信息:
蔡伯峰1,,2,,蔡偉達(dá)3,王宜懷1
(1.蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,,江蘇 蘇州215006,;
2.泰州職業(yè)技術(shù)學(xué)院 信息技術(shù)學(xué)院,江蘇 泰州225300,;3.西北工業(yè)大學(xué) 航天學(xué)院,,陜西 西安710072)