理论教育 物联网应用实践:路由器软件设计

物联网应用实践:路由器软件设计

时间:2023-10-27 理论教育 版权反馈
【摘要】:该协议栈是TI公司专门为CC2530系列芯片设计的ZigBee协议栈。

物联网应用实践:路由器软件设计

1.节点软件主流程

软件设计基于TI公司的Z-Stack2007协议栈。该协议栈是TI公司专门为CC2530系列芯片设计的ZigBee协议栈。它是由一个简单的单线程操作系统管理,该系统基于任务调度的机制。各个任务的事件处理函数按照任务的优先级被放入函数指针数组tasksArr[idx]中,事件以16位的变量形式存放在数组tasksEvents[idx]里,因此每个任务最多可定义16个事件。

操作系统运行流程如图5-24所示。主函数在完成节点相关的初始化之后会进入操作系统,操作系统是一个无限循环,一直在检测各个任务中的事件tasksEvents[idx],当它不为零时就会调用相应的事件处理函数tasksArr[idx]。处理完一个事件会将代表此事件的位清零,同时返回未处理的事件,直到这个任务中所有的事件处理完毕(即所有的事件位都被清零),操作系统就会跳向下一个任务进行事件处理。

2.节点软件模块化设计

节点软件采用的是功能模块化设计,不同功能用不用模块表示,不同模块间用接口连接,通过接口来调用其他模块的功能。如图5-25所示,传感器节点主要由数据采集模块、数据处理模块、数据传输模块和电源管理模块组成。

978-7-111-44976-8-Chapter05-34.jpg

图5-24 操作系统运行流程图

978-7-111-44976-8-Chapter05-35.jpg

图5-25 节点流程框图

3.路由器数据模块

在此,只需要把CC2530的设备类型设置成网络路由器节点,则在ZigBee协议栈中只需要更改应用层事件处理函数SampleApp_ProcessMSGCmd(aflncomingMSGPacket_t∗pkt),使其在接收到信息后调用SampleApp_SendFlashMessage(),把接收到的信息发送出去即可。

4.数据处理模块(www.daowen.com)

数据处理模块是无线传感器节点的核心,负责控制整个传感器节点的操作,存储和处理本身采集的数据以及其他节点发来的数据。为便于管理和调度,节点所要进行的操作都是被定义为事件进行处理,每个事件完成相应操作。将事件按一定关系串接就能实现节点工作时要完成的系统功能。

数据处理模块工作流程如图5-26所示。数据处理模块对接收到的命令进行解析后,会对所有要执行的操作进行判断。对于本节点要完成的操作,就会触发相应的事件,实现相应的功能;对于其他未完成的操作命令,会通过数据传输模块转发给其他节点。在处理完本条命令之后,会继续等待或接收下一条命令。

5.数据传输模块

数据传输模块负责与其他传感器节点进行无线通信,传输控制消息和收发采集数据,通过软件来控制无线通信模块的工作模式。若为数据发送模式,先按照通信协议中规定的数据格式对数据进行打包,然后再将数据包发送出去;若为数据接收模式,则按照数据格式对接收到的数据包进行解析,再进行下一步处理。数据传输模块工作流程如图5-27所示。

978-7-111-44976-8-Chapter05-36.jpg

图5-26 数据处理模块工作流程图

978-7-111-44976-8-Chapter05-37.jpg

图5-27 数据传输模块流程图

6.电源管理模块

电源管理模块主要功能是为传感器节点提供运行所需的能量,并进行电量检测。无线传感器网络需要在无人值守情况下长时间地工作在恶劣环境条件下,因此更换电池是一件很麻烦的事情。为保证铅酸电池能够为节点长期供电,节点硬件电路设计了一个充电控制电路对其进行充电管理。

CC2530专门提供一个I/O口对供电电压进行A-D采样,当供电的电源电压不足(即低于设定的某一个值)时,通过软件控制进行切换,先让另一组电源对节点进行供电,再打开太阳能充电电路对本组电源充电。节点在通信和采集数据时功耗很大,因此在每一次的通信和采集数据完成之后都会检测当前供电电压值和当前的充电电压值,根据两个电压值决定是否进行电源切换、对电源进行充电,以及充电是否完成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈