摘 要 主要介绍了基于nRF24AP1无线网络芯片智能家居的硬件电路与软件设计流程,主机通过串口对信道参数进行配置,节点配对,利用ANT协议实现与从机设备数据包的收发,从而实现控制家电的目的。
关键词 智能家居 nRF24AP1 ANT协议 信道配置
引 言
随着社会信息化的加快,人们对家居的要求早已不只是物理空间,更为关注的是一个安全、方便、舒适的居家环境。为了很好地满足用户对家居网络的灵活性、可靠性以及便捷性等方面的需求,智能家居系统使用无线网络技术,不但克服了有线系统的高成本和不方便等缺点,而且使用方便,能够快捷地管理家务、监测家居环境、遥控家用电器等。
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(),从缓冲区中取出相应的数据。