网络通信 频道

基于ZigBee网络的无线智能照明系统设计

  目前市场上有多种智能家居情景照明的解决方案,其中利用ZigBee技术组网配合MCU控制的方案因其成本低、功耗低和易于实现等优点得到广泛应用。本文提出了一种利用ZigBee技术组建无线网络配合ARM9内核MCU,利用TCP/IP协议进行通信,可以对家居中每一盏LED灯进行控制,实现亮度控制与情景转换的智能控制系统。

  1 无线ZigBee网络

  ZigBee是一种新兴的短距离、低速率无线网络技术,它是一种介于无线标记技术和蓝牙技术之间的技术方案,主要用于近距离无线连接,具有自己的无线电标准,在数千个微小的传感器之间互相协调实现通信。这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,因此其通信效率非常高[1-2]。

  ZigBee采用自组网方式实现组网,这种架构被称为无线基础构架的无线局域网,而且对网络内部的设备数量不加限制,并可随时建立无线通信链路。协调器一直处于*状态,新添加的RFD会被及时发现[3]。

  2 系统规划

  整体组网采用树状簇型结构,即以每个房间为1个单元,房间内的每盏灯作为一个终端设备,每个房间设置1个路由器用以与协调器通信并向房间内每一个终端设备转发数据[4]。整体结构布局及组网方式如图1所示。

  在功能设定方面,由于不同的房间所具有的职能不同,所以对每一个房间的终端设备所具有的功能进行分别设置。总体上,要求房间内所有的终端设备可以对LED进行开关控制及亮度调节。

  为了方便和快速进行调节,在遥控面板上还加入了情景和亮度设定,其中亮度设定为昏暗程度、明亮程度和超明亮程度。情景模式可以设置多种颜色模式。还可以具有以下功能:

  (1)智能调光:开灯时,灯光亮度由暗逐渐变亮;关灯时灯光亮度逐渐由明变暗。有利于保护视力及延长灯泡寿命。

  (2)延时功能:当按下延时按键后,所有灯光将在一定时间后全部关闭。

  (3)全开全关:实现一键控制全部灯光的开关功能。

  3 工作流程

  系统的总体软件流程图如图2所示。该流程图从电路的整体功能上概括地说明了整套系统所能实现的功能,即通过发送模块发送指令,接收模块收到指令以后对其进行解码,从而控制LED等的情景变化和亮度变化。

  4 功能实现

  4.1 上电启动

  系统上电后,首先进行一系列初始化功能,包括对液晶显示屏、按键、CC2480模块、定时器及UART接口进行初始化。初始化完成后,系统会启动组建网络的功能。对于协调器,首先会发送StartZBNwk(COORDINATOR,NWKpanID)函数向CC2480中写入指令以启动ZigBee协议栈。其中,COORDINATOR是器件类型,表示此器件作为协调器使用;NWKpanID是此网络的网络ID。路由器进行同样的操作,不同的是函数中设备类型参数为ROUTER[5]。

  协议栈启动后,系统会利用GetDeviceInfo(DEVICE_

  SHORT_ADDR)函数来获取CC2480通过UART向ARM核发送的设备信息。其中,DEVICE_SHOR_ADDR参数是CC2480模块的16位短地址。获取地址成功后,系统会将信息显示在液晶屏上,完成上电启动过程。

  4.2 组网绑定

  上电启动完成后,系统进入组网绑定状态。首先系统会调用ZB_APP_REGISTER_REQUEST()函数对ZigBee寄存器写入配置,命令代码为Cmd 0:0x26、Cmd1:0x0a;然后会调用ZgBeeAllowBind()函数发出允许绑定的命令,命令代码为Cmd 0:0x26、Cmd1:0x02。

  允许绑定后,路由器会调用menudis()函数进行绑定。此函数进行的操作如下:首先扫描按键以获取用户输入的所要绑定的协调器的地址,然后调用ZgBeeZDOFindIEEE(bindAddr,0,2)函数来寻找网络中的物理地址。其中,bindAddr就是所要绑定得到的协调器的地址,参数0代表获取1个地址,参数2代表索引个数。

  获得地址后,系统调用ZgBeeBind(1,add)函数进行绑定并将绑定结果显示在液晶显示屏上,从而完成组网绑定的功能[6-10]。其中命令代码为Cmd 0:0x66、Cmd1:0x01。

  4.3 数据传输及调光

  系统完成组网后即可进行数据传输和调光。系统采用ZgBeeSendData()函数来进行数据传输,此函数包含的主要参数有目的地址、命令类型和数据,命令代码为Cmd 0:0x66、Cmd1:0x03。而目的地址与数据均通过键盘扫描用户输入来写入寄存器。

  对于调光功能的实现,本文采用PWM调制方式,即通过输出不同占空比的方波进行不同情景模式的调光。具体实现方式:采用while循环中内嵌1个case语句实现。while循环负责检查是否有外部命令到来,每一个case分支对应1个情景模式,当设备接收到调光命令后,根据命令中的有关情景模式的数据进入到相关的case分支中产生相应的PWM信号,当检查到外部命令来临时,则跳出该分支进入相应的分支产生新的情景模式。对于PWM信号的产生有多种方式,本文利用循环计时的实现方法,即通过利用不同长短的延时来输出0和1实现不同占空比的方波。基本计算方法如下:单位延时为晶振的1/12,则系统在进行[(方波周期/单位延时)×占空比]个延时后输出1,在进行[(方波周期/单位延时)×(1-占空比)]个延时后输出0,如此进行反复循环即可实现PWM功能。

  5 实验结果

  ZigBee模块对LED的调光控制采用PWM调制方式,即通过输出3路不同占空比的方波实现对LED的RGB分量的调节,形成不同颜色的光。在本实验中采用事先设定好情景模式,根据用户按下不同的情景按键输出不同的PWM波形来实现LED的情景照明。实验结果输出占空比分别为25%、57%、70%的方波,如图3所示。

  本文针对目前智能家居照明发展趋势,提出了一种基于ZigBee和ARM处理器的智能家居照明系统设计方案,实现了系统控制和智能调光功能,为以后的研究打下了一定的基础。

0
相关文章