【学术论文】KW01-ZigBee无线传感网应用开发平台的研制
摘要:
为解决无线传感网应用开发难度大、周期长等问题,通过深入分析其产生原因和无线传感网应用开发技术的现状,按照软件工程思想和构件设计的基本理论,提出了四层架构的开发平台模型。据此研制了一种架构清晰、对外接口丰富、硬软件构件完备的基于KW01-ZigBee的无线传感网应用开发平台,从开发板及硬软件构件设计、工程框架设计等方面详细论述了整个研制工程。利用开发平台开发的实例工程及运行测试证明了研制的平台正确实用且易于使用,可以降低开发技术难度,提高开发效率。
中文引用格式: 蔡伯峰,蔡伟达,王宜怀. KW01-ZigBee无线传感网应用开发平台的研制[J].电子技术应用,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正式推出的业内首款Sub-GHz芯片,是由基于ARM Cortex-M0+内核的微控制器KL26与SX1231-RF射频模块组成[1]。
无线传感网(Wireless Sensor Network,WSN)已渗入到医疗、家居、交通等各种领域,但由于其应用开发涉及到网络架构与方案、节点、RF通信电路、硬软件构件的设计,以及通信协议、操作系统融入、程序编写、可重用和移植性等知识和技术,所以门槛较高,导致WSN应用开发难度大、周期长、成本高,产品可维护性及移植性差。为解决这一现状,茅正冲[2]等研究可配置嵌入式应用程序设计模式,范宁宁[3]等研究测控系统框架,曹敬瑜[4]等研究高效软件构件化框架。但这些研究是通过设计构件来开发应用程序,并没有设计出具有完整架构的开发平台。为此本文研制了一款基于KW01-ZigBee 的层次架构清晰、接口丰富、驱动构件完备的相对通用实用易用的WSN应用开发平台,极大方便了WSN应用开发,将会降低开发难度、缩短开发周期,并能增强产品的可维护性和可移植性。
1 开发平台建模
WSN一般由若干个终端节点、带路由功能的终端节点,以及多个网关节点(本文称为PC节点)组成。本文研制的平台用于WSN应用工程各节点的开发,采用如图1所示的四层架构平台模型。
硬件平台层是由KW01-ZigBee开发板、写入器和用于连接网关节点与PC的USB-TTL串口线组成的开发套件。为减少设计成本并保证稳定可靠的通信,WSN中所有节点的开发板均相同。
MCU方工程框架用于开发应用程序,由硬件抽象层、软件构件层和应用层组成。硬件抽象层文件主要用于芯片上电复位和链接。软件构件层包括底层驱动构件、应用构件和高层构件;应用层的用户代码包括用户任务、主程序和中断服务例程(Interrupt Service Routine,ISR)。为便于开发功能复杂的WSN应用工程,在框架中融入MQXLite实时操作系统(Real Time Operating System,RTOS),用于管理、调度、处理多任务[5,6]。
2 开发板及硬件构件设计
开发板应架构清晰、使用和维护方便,为此本文设计了KW01-ZigBee开发板,硬件结构框图如图2所示。KW01 MCU由KL26和RF收发器组成,拥有16 KB SRAM、128 KB Flash和UART、SPI、IIC、TSI、ADC、定时器等模块,具有无线电性能高,传输速率快、距离远,处理能力强,超低功耗等特点[7]。
构件是提高系统可重用性、可移植性的基础和保障,用于组装系统可提高开发效率。设计开发板时将各电路模块设计成构件并提供功能明确的接口,可极大方便用户使用。如硬件最小系统构件由程序运行所需最低规模外围电路(如电源及滤波、复位、晶振等电路)组成;电源电路构件用于将5 V输入转换为3.3 V供芯片使用;RF前端电路构件用于连接射频引脚RFIO与天线。
为便于实验、科研及应用开发,将MCU除硬件最小系统引脚外的其他引脚封装成各种构件,如UART接口、SWD写入器接口、电池接口、对外接口等构件。图3中标识的是引脚默认功能,可直接使用,而其他功能的使用,可按照NXP官方网站给出的KW01技术参考手册[1]上的功能复用表进行引脚功能复用。
工程开发时,将外设模块连接到相应接口构件并根据需要复用引脚功能,可极大提高开发效率。
3 底层驱动构件设计
KW01包括RF、GPIO、ADC等硬件模块,编程时通过驱动程序操作对应的硬件模块,但驱动程序只有封装成底层驱动构件才便于重用移植,也才能方便用户直接使用,从而降低应用开发难度。
限于篇幅,本文仅介绍RF驱动构件设计过程。按照构件设计思想,将RF模块的初始化、接收数据、发送数据、检测能量等基本操作封装成独立的功能函数即可,但从方便实际应用出发还应封装带参数初始化、CSMA/CA机制发送数据、设置通道号等函数。由于它们都涉及到对RF硬件底层寄存器操作,是底层驱动函数,因此将其按构件设计原则封装,并集中存放在rf.c源文件中,同时配以rf.h存放相关宏定义、底层寄存器映射和驱动函数原型声明。在构件设计中,重点要设计好底层驱动函数原型并给出详细注释,方便用户使用。例如RF接收数据函数的功能是从FIFO队列中接收一帧数据,并返回接收成功与否标志,因此需提供数据缓冲区地址以存放接收的数据,以及存放接收数据长度的指针单元和硬件过滤地址(即当前WSN应用工程中节点的硬件地址,用于过滤掉其他工程发送的数据包,同一工程各节点硬件地址相同)。这样函数原型设计为:
//功能概要:RF接收数据帧
//参数说明:plen:接收数据长度指针,
//pbuf:接收数据缓冲区首地址, hw_adr:硬件过滤地址
//函数返回:=0,接收正常,=其他值,接收异常
uint_8 RFReceiveFrame(uint_8* pbuf, uint_8* plen,uint_8 hw_adr);
4 MCU方工程框架设计
MCU方工程框架用于为节点程序开发提供工程模板,以降低开发难度,提高开发效率。
4.1 工程框架设计的基本原则
遵循软件工程可复用、可移植、易理解、易维护的基本思想,为缩短产品开发周期及提高开发效率打好基础[8];以构件设计为基础,通过各种构件的设计与应用,提高框架的可复用性、可移植性,降低应用开发难度[9];目录结构合理分类,按照文件内容归纳整理、分类组织,提高软件产品的可维护性。
4.2 工程框架的组织结构
根据软件工程对工程框架必须满足结构清晰、文件安排合理、具有可移植和易修改特点的要求,以及以上设计原则和图1四层架构平台模型的设计思想,构建了如表1所示的树形结构统一MQXLite工程框架(All-in-one MQXLite FrameWork,AMQXLFW)。
4.3 AMQXLFW设计分析
除开发环境特有的文件夹外,工程框架包含的文件夹均相同,表1是基于Kinetis开发环境(Kinetis Development Studio,KDS)包含的12个文件夹,个数和名称固定。存放文件原则如下:
01_Doc存放工程文档,随工程变化而更新。02_CPU和03_MCU分别存放内核、芯片相关的上电复位启动文件,因内核厂家只负责设计维护内核及源代码而不生产芯片,故分开存放便于移植更新。04_Linker_File存放提供程序代码、中断向量表、常变量的存放地址的链接脚本,随开发环境修改。充足完备的构件可有效降低工程开发难度[10],05_Driver、06_App_Component、07_Soft_Component分类存放底层驱动、应用和高层构件便于构件融入、更新、移植,应用和高层构件的名称和内容封装后不允许更改。08_Source和09_MQXLite分别是无操作系统和有操作系统编程和调试的主要目录,08_Source中各文件名固定、内容随工程而修改,includes.h包含所有构件头文件(有操作系统下使用01_app_include.h),isr.c包含RF接收中断isr_gpio_cd()等。09_MQXLite包含内容见表2,isr.c仍然有效,因为有/无操作系统时中断处理流程一致,但main.c用来初始化并启动MQXLite,app是按照MQXLite任务设计要求增加的目录,包含3个固定文件和若干用户任务文件,其余文件夹文件从MQX或KDS安装目录提取,对文中开发板不必修改。
4.4 使用框架开发的流程及优越性
有了工程框架,只要遵循图4所示流程就能方便快速地开发MCU方程序。不使用框架时,内核和芯片文件可从厂商获得,链接文件可由环境生成,但工程中其余文件都需自己编写,还需移植操作系统,开发难度大、效率低、周期长;使用框架时,只需修改或添加少量文件及代码,就可完成开发任务,不同应用间移植也很容易。
5 开发平台的应用实例
5.1 应用实例的基本功能
应用实例工程的硬件架构包括终端节点、PC节点和PC,PC节点与PC串口通信,终端节点与PC节点均采用KW01-ZigBee开发板,通过RF通信。实例的基本功能是:PC端下发采集芯片温度命令数据包,经串口传给PC节点,再经RF转发给终端节点,收到后解帧,再通过KW01自带温度传感器采集芯片温度并组帧,经RF发给PC节点送PC显示。
5.2 MCU方程序开发
根据终端节点要实现的功能,开发其MCU方程序只需设计1个ISR和3个任务:(1)RF接收中断:接收来自PC节点数据包,并启动RF接收任务,数据帧格式可自行定义。(2)RF接收任务:解析接收的数据包,数据命令启动温度采集任务,该任务文件已包含在框架中,只需根据任务文件中说明修改即可。(3)芯片温度采集任务:通过AD通道采集芯片温度并组帧,再启动RF发送任务。(4)RF发送任务:将包含芯片温度的数据包通过RF发送给PC节点,由PC节点传给PC端。该任务文件已包含在框架中。
然后,在app中添加task_temp_ad.c,其采集温度与组帧的代码如下:
rf_sendBuf[0]=(uint_8)’T’;//帧头
rf_sendBuf[1]=57;//有效帧长
rf_sendBuf[2]=(uint_8)hd_adr;//硬件过滤地址
//将下行帧的内容复制到上行帧中
for(i<=3;i<=58;i++) rf_sendBuf[i]= rf_revBuf[i];
//调用KW01的ADC构件ad_read()采集芯片的温度
ADResult=ad_read(26);//从通道号26采集AD值
//物理回归:根据芯片手册上的公式计算出温度值
Vtmp=(ADResult*3 300)>>16;//电压采样值mV
tmp=25-(Vtmp-706)/1.62;//计算温度
//计算温度的整数和小数部分并封装在帧尾前两字节中
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工作流程和框架模板就可快速完成终端节点MCU方程序开发。PC节点的MCU方程序开发类似。
5.3 应用实例运行测试
借助VS2013开发PC端程序和测试界面,通过界面下发温度采集命令,终端节点收到后将采集的芯片温度封装在应答帧有效数据的最后两个字节中,通过RF送PC端显示。通过反复运行测试,测试结果稳定;当给芯片加热或降温时,测试结果也相应改变。实例工程的开发和测试结果表明,用本文研制的开发平台能快速完成开发工作,工程任务运行和调度正常,稳定性和实时性都能满足工程要求。
6 结论
本文研制了一种能有效降低开发难度,提高开发效率的WSN应用开发平台。通过将MCU硬件最小系统和各种对外接口、硬件底层驱动设计为构件供用户使用;通过给出编程框架模板、应用方法等,用户只要根据具体工程适当修改模板文件并增加任务,就能快速完成应用开发。在后续研究中将继续加强对接口的设计研究,完善构件库,优化工程框架结构,以提升复用性和可移植性。本文提出的研制方法对同类平台的研制具有很好的借鉴作用。
参考文献
[1] NXP.MKW01Z128 Reference Manual Rev.2[DB/OL].(2014-03-01)[2016-08-20].http://www.nxp.com/.
[2] 茅正冲,叶臻,黄芳,等.基于构件的可配置嵌入式应用程序设计模式[J].计算机测量与控制,2015,23(4):1432-1434,1437.
[3] 范宁宁,王宜怀,陈瑞杰.基于WSCN与E-Ethernet相结合的远程测控系统框架研究[J].现代电子技术,2016,39(2):53-57,61.
[4] 曹敬瑜,柴玮岩,王博,等.嵌入式分布计算环境下的高效软件构件化框架研究[J].兵工学报,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] 王宜怀,朱仕浪,姚望舒.嵌入式实时操作系统MQX应用开发技术[M].北京:电子工业出版社,2014.
[9] 屈新怀,张先燏,丁必荣.可控嵌入式构件框架的研究与实现[J].计算机应用与软件,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,蔡伟达3,王宜怀1
(1.苏州大学 计算机科学与技术学院,江苏 苏州215006;
2.泰州职业技术学院 信息技术学院,江苏 泰州225300;3.西北工业大学 航天学院,陕西 西安710072)
招聘信息