引 言
随着社会信息化的加快,人们对家居的要求早已不只是物理空间,更为关注的是一个安全、方便、舒适的居家环境。为了很好地满足用户对家居网络的灵活性、可靠性以及便捷性等方面的需求,智能家居系统使用无线网络技术,不但克服了有线系统的高成本和不方便等缺点,而且使用方便,能够快捷地管理家务、监测家居环境、遥控家用电器等。
1 系统总体结构及工作原理
智能家居系统由主机、从机、接口设备及各家电设备组成,主从机都有一个无线收发芯片,通过主从机间无线数据的收发,实现一个小型的无线智能网络。芯片 nRF24AP1内部结构包含串行接口UART、时钟模块、ANT协议机和1 Mb/s的射频收发信机等4个模块。首先MCU通过串口对nRF24AP1进行信道参数配置,nRF24AP1执行配置任务,主机执行发送数据包指令,通过空中接口完成数据信息包的发送与接收;从机接收数据信息,由从MCU执行任务,从而实现控制家电的目的。图l为系统总体框图。
2 硬件电路设计
(1)主机电路
处理器模块选用AVR系列的ATmegal6单片机,并通过键盘输入和液晶显示,利用nRF24AP1无线收发模块实现数据的发送和节点设备的控制。MCU和nRF24AP1通过异步串口实现通信。图2为主机框图。
(2)从机及接口设备电路
从机通过nRF24AP1进行数据接收,当有数据触发中断时,从机MCU从接收缓存中取出数据,并执行控制任务,通过接口设备(如智能开关)实现控制家电的目的。图3为从机框图。
3 软件设计
无线收发芯片nRF24AP1有“休眠”和“待机”两种省电模式,及配置收发的工作模式。模式与引脚关系如表1所列。
为了降低功耗,主机在大部分时间处于休眠状态。当有数据发送时SLEEP置低,nRF24Ap1进入工作状态,而从机始终处于查询接收状态。主从机间使用独立单向信道传输数据,主机查询发送,从机以中断方式接收控制数据。
ANT是以数据包的形式发送/接收数据,每个数据包的消息格式如下:
ANT协议是二进制协议,每个消息函数都是一个完整的协议数据包,由五部分组成:SYNC、MSG LEN、MSGID、DATA、CHECKSUM。每一部分是8位(1字节),每个消息以SYNC(OxA4)字节位开始,以CHECKSUM字节结束,以比特的方式发送与接收。当有数据包发送到nRF24AP1接收缓存时,ANT协议根据MSG ID判断消息的类型,根据MSG LEN判断数据长度。ANT接收到有效的数据包后,自动移去SYNC、MSG=LEN、MSG ID、CHECKSUM,只留有效数据放在缓存中。从MCU以中断方式从缓存中提取有效数据,执行控制任务。
3.1 串口初始化配置
ATmega16单片机和无线收发芯片nRF24APl都有UART模块,在使用前需要进行初始化设置。本设计使用异步串口通信,主从机使用同样的波特率 19 200。从机波特率由芯片nRF24APl上的引脚BR2、BR1来设置,异步数据以1个起始位、8个数据位、1个停止位以及无校验的方式进行传输。当有串口数据到达从机MCU缓存时产生中断,从机MCU响应中断,从接收缓冲区读取数据。中断接收设置一个长度为16字节的缓冲区(rx_bufer),缓冲区设有单独读/写指针,并与缓冲计数器相关联。串口发送的数据首先通过SendData()写入发送数据寄存器UDR,然后由硬件自动将其发送到接收数据寄存器UDR。接收数据时,先将接收到的数据写入rx_buffer,再根据应用需要调用函数GetData(),从缓冲区中取出相应的数据。3.2 信道配置
在ANT节点实现通信之前,必须对信道参数进行配置,这些参数包括网络号、射频频率、信道ID(生产商ID/设备类型/设备号)、信道类型和信道周期。主从结点要求网络号、射频频率和信道周期3个参数设置完全一致,信道类型参数的设置必须一一对应,例如“双向发送信道”对应“双向接收信道”。至于信道ID 参数,则应从节点遵循主节点的设置。
主机通过串口对信道参数进行配置,配置过程如下:
①配置信道之前要进行系统复位,执行ANT_ResetSystem();
②分配信道,执行ANT_AssignChannel();
③配置信道ID,执行ANT__SetChannelID()。
同样,各从机也按照主机配置步骤对从机进行信道参数配置,设置自己的信道号、信道类型、网络号等。
3.3 节点配置
ANT协议中,通信节点建立连接的过程称为节点配对的过程。ANT协议提供两层配对控制,即信道ID和配对比特。
对于信道ID,只有相同的或兼容的信道ID才允许配对。
对于信道比特,信道ID参数中“设备类型”字段的最高位规定为ANT的“配对比特”。当从节点对仅知晓部分信道ID参数时,该比特的设置才对配对结果有影响。ANT协议规定,具有兼容的信道ID参数且配对比特的设置也相同的节点才能实现配对。
如果信道ID的所有数据域都是已知的,将不需要配对比特,因为接收者已经准确地知道要和哪个发送者连接,当使用配对比特并且信道ID的数据域至少一个是wild card时,期望和另一方建立通信的两个节点在连接过程中配对比特必须处于同一状态。
3.4 打开信道,发送数据
当用户想遥控家电时,主机执行数据发送。主机有输入按键1、2等(代表信道1、信道2)来选择信道,当有按键输入时,主机从休眠模式快速苏醒,快速完成数据传输任务。另还有发送按键“SEND”,用来调用发送数据函数。
执行过程如下:
①打开信道,调用ANT_OpenChannel();
②发送数据,调ANT_SendBroadcastData()。
例如通过按键“1”打开1信道,主程序调用ANT_OpenChannel(1)一>SerialData0xA4,0x01,0x4B, 0x01,0xEF),即调用ANT_OpenChannel(1)将产生串行数据(0xA4,0x0l,0x4B,0x01,0xEF),然后把这些串行数据以比特的形式发送到ANT模块的接收缓存。ANT协议自动移去0xA4、0X01、0x4B、0xEF,即第4个数据0x01为有效数据,放在接收缓存,触发接收中断。
4 液晶模块接口与键盘接口设计
按键用于数据输入。本设计使用独立式按键,电路简单,每个按键接通一条输入数据线,这样按键工作不会影响其他I/O口。这里用3个按键举例,介绍电路使用查询方式。
按键1:“CHl”,输入信道“1”。
按键2:“CH2”,输入信道“2”。
按键3:“SEND”,发送数据。
LCD作为人机交互界面,通过按键输入显示选择的信道(CHl/CH2),通过按键输入信道数,执行打开信道函数ANT_OpenChannel()。如打开信道1,执行ANT_OpenChannel(1)。主机处于查询接收状态,主机寻找匹配信道的节点,然后建立连接,等待数据的传输。点“SEND” 按键,执行发送数据消息函数ANT_SendBroad-castData()发送数据。每次打开信道和发送数据消息成功都有LED指示。
当主机没有数据发送时,主机MCU置SLEEP为高,使主机进入休眠状态,进入省电模式,以达到省电节能的目的。图4为软件实现流程图。
结语
本设计方案中的智能家居系统利用无线网路芯片nRF24APl传输数据,硬件电路简单。芯片内嵌ANT协议,协议结构简易,使用方便,成本较低,超低功耗,软件设计合理,使用稳定可靠,效率高,而且节点易扩展。这不仅在智能家居方面,还在体育娱乐、远程控制系统、医疗工业自动化及其他新兴无线应用领域,都具有推广价值和广阔的市场前景。