2.3.3 LED路灯控制模块
LED 路灯控制电路如图7 所示,路灯由两部分控制。当定时时间到时开启路灯,开启模式为全亮;进入雷达检测模式后,有移动物体出现在检测范围内,开启全亮模式;两种控制用与门连接,有一个输出为低电平就开启路灯。没有移动物体在雷达检测范围之内时路灯处于半亮模式,接入的电压为全亮模式的一半用。为了使其控制端间互不影响,在各控制末端加入光电耦合器进行隔离。
3 软件设计
系统上电后进行初始化,检测系统是否正常工作,如果正常则按照路灯控制界面进行状态检测并对路灯进行输出控制,使路灯按照既定程序实现开/关状态。
主机系统显示相应的控制信息;协调器不断检测主机数据输出口状态判断发送数据与否;终端等待协调器的数据进行。系统软件设计主要包括主机软件设计、协调器软件设计、路由器和终端软件设计等三大部分。其中在协调器软件设计、路由器和终端软件设计上协议栈尤为重要,不同厂家出品的不同产品有不同协议栈。本文使用的芯片为TI公司生产的CC2530芯片,使用的协议栈是由TI公司出品的Z-Stack协议栈。
3.1 主机系统软件设计
根据智能路灯系统实现功能的需要,主机系统软件划分为以下几个部分:监控主程序、日历时钟子程序、LCD显示子程序、键盘扫描子程序、光线明暗检测子程序。监控主程序通过对时间、键盘、光线情况的循环判断,决定是否执行相应的功能程序。主机软件设计流程图如图8所示。主机根据时间与外界光线状态发出控制命令如表1所示。
3.2 协调器系统软件设计
根据协议栈对协调器系统进行软件编程。实现此项目要求只需修改协议栈的应用层和硬件层。应用层执行查询任务工作,修改硬件层使整个系统与所扩展的硬件匹配。
3.2.1 硬件层的修改
定义协调器的P2.0、P2.1为数据的输入端口。协调器上有显示故障信息的12864显示模块,首先建立一个lcd.h 文件,在内部定义所应用的管脚定义及相应的宏定义。之后按照12864 的时序编写12864 的读写程序lcd.c,建立出数据与写数据位置的接口函数。在协议栈中ZigBee 联盟已经将LCD 的显示程序封装在硬件层,如果应用另外的显示硬件只需将原有的lcd.h文件覆盖即可。
3.2.2 应用层修改
系统不断的采集主机数据输出端口发来的数据,根据数据的不同而执行相应的操作。首先将读取主机数据任务ID 号加入到任务中,这样在任务循环执行时方可执行到,否则永远执行不到这个任务。协调器读取任务流程如图9所示。
3.3 路由器和终端节点系统软件设计
根据协议栈对路由器和终端节点系统进行软件编程。同样只需修改协议栈的应用层和硬件层。应用层执行查询任务工作,修改硬件层使整个系统与所扩展的硬件匹配。路由器和终端节点系统中开关灯、开关雷达端口用协议栈内部定义好的两个LED灯端口。用控制两个LED灯的开/关分别控制路灯开/关、雷达控制开/关。路由器和终端节点系统接收来自协调器的字符控制信号,不同字符执行不同操作。利用中断查询方式采集亮灯状态下灯泡的光照强度进而判断是否出现故障,出现故障进入故障处理函数,编辑路灯地址并发送到协调器。
4 总结
本方案从应用方面着手对ZigBee技术的网络拓扑结构进行研究,采用TI公司的Z-Stask协议栈和IAR 开发环境,以CC2530芯片为核心构建了一个基于ZigBee通信网络的路灯控制系统。该路灯控制系统的设计与传统的路灯控制系统设计相比,一方面减少了“ 全夜灯”、“后夜灯”,有效的节约了电能资源,并且还保护了电灯,延长了其使用寿命;另一方面智能路灯控制系统可对全部路灯进行实时监控和管理,集中控制、监视、检查,大大减少了后期人力、物力、财力的投入,同时提高了巡查设备和路灯的工作效率。