多协议融合的智能家居无线网关的设计与实现
2015-10-20聂亨廖惜春
聂亨,廖惜春
多协议融合的智能家居无线网关的设计与实现
聂亨,廖惜春
(五邑大学 信息工程学院,广东 江门 529020)
现有智能家居网关或是功能不完整,或是数据传输复杂、灵活性差、成本高,难以满足智能家居系统便捷、灵活、廉价的要求. 本文所述无线网关的设计,以STM32F103RBT6为主控芯片,融合了WiFi、GPRS和低成本nRF24L01无线通信模块,并使用自定义的内网无线通信协议,有效地解决了多协议融合及内网与外网数据转换的问题,实现了对家居情况的实时监控.
智能家居;无线通信协议;短距离无线通信;STM32
智能家居通过计算机技术、现代通信网络技术等将日常家居生活中的安防、照明、电器等进行统筹管理,使家居生活更舒适、更安全、更符合当代人的要求[1]. 其中家居无线网关作为家居网络与外界通信网的“沟通翻译机”,地位尤其重要. 现代通信网络的多样性与手持智能终端的普及,决定了无线网关接入网络与监控途径的多样性. 现在市场上大部分无线网关存在接入网络单一、对PC机高度依赖和只能监测不能控制等不足,本文采用高集成STM32F103RBT6芯片,外加GPRS、WiFi/以太网模块和低成本、底层全开放的nRF24L01模块组成硬件平台,将以太网、WiFi(IEEE802.11n)、GPRS移动通信网等三大通信协议与自定义的家居无线网络协议融合,同时使用手持智能终端监控软件和短信命令进行监控,实现了多协议的相辅融合,解决了接入网络的单一性与监控的实时性问题、降低了智能家居系统对PC机的依赖.
1 基于多协议融合的智能家居无线网关概述
1.1 智能家居系统的拓扑结构
智能家居系统包括安全防卫、能源监测、环境监测、家电控制、照明控制以及家庭娱乐等几大部分(其拓扑结构如图1所示),家庭网关可通过室内短距离无线传感网络与之连接,实现对室内各个节点的监控;也可通过以太网、WiFi、GPRS等网络与室外用户交互信息,为用户提供安全、舒适、便捷的家居环境.
图1 智能家居系统的拓扑结构
1.2 智能家居无线网关的结构与工作原理
智能家居网关是家庭内外信息交流的门户,其作用是协调各模块、各协议间的转换[2],其硬件电路组成如图2所示. 其中,GPRS模块的功能是远程短信控制,WiFi的功能是利用互联网远程使用人机交互界面以实施监控,nRF24L01的功能是传输家居内部各节点的数据,JTAG的功能是测试网关运行情况并做相应的调整.
图2 智能家居无线网关结构图
用户可通过移动设备上的互联网控制软件,查询或控制家里各个节点的数据;无互联网时,也可以通过手机短信、GPRS等传输数据,及时接收家居报警节点发来的信息. 2种方式的控制形式如下:
1)软件控制形式. STM32F103RBT6主控模块采集家中各个节点的数据,通过WiFi模块连接到互联网,再发送到移动设备上;同时,主控模块通过WiFi模块接收相应的控制命令编码,经过内部协议转换和数据处理后传输给RF模块(主),RF模块(主)同样按照相应的协议标准对数据编码并进行必要的处理后,发送给对应家电的RF模块(从),当对应家电上的RF模块接收到正确的控制命令编码后,便可以通过家电控制器来控制家电执行相应的操作[3].
2)短信控制形式. GPRS模块中设定特定指令,在手机上以短信方式输入特定指令并发送. GPRS模块接收的数据,经过协议间的转换,再通过RF模块(主)发送给RF模块(从),从而对指定家电进行相应操作.
1.3 智能家居无线网关的多协议转换
本网关融合了以太网协议、IEEE802.11n协议、GPRS协议与家居无线网络协议的转换. 以太网协议与IEEE802.3协议类似,是总线网协议. IEEE802.11n是无线网协议,即TCP/UDP协议,网关使用WiFi模块时,只需要解读TCP/UDP协议即可. 网关使用的协议是TCP协议,它分为11部分,数据部分为第11部分,在TCP包中,除去20 bit的包头,可传输的最大数据长度为1 460 bit. 当远程终端发送数据给网关时,网关去掉包头的20个字节后提取剩下的数据,即为远程终端发送来的内容;然后,将数据按家居无线网协议帧的结构封装进SPI传输给nRF24L01,发送给家居节点. 反之,网关接收到节点发来的数据包,提取数据内容后,加上TCP的包头,就能经过WiFi模块发送给远程终端. GPRS是经过AT指令集进行收发的,发送和接收方法与经过互联网收发数据类似. 本网关中不同协议的相互转换关系如图3所示.
图3 协议转换示意图
2 无线网关的组成模块介绍
如图2所示,无线网关主体由主控模块、GPRS通信模块、以太网/WiFi通信模块以及RF模块组成. 以下分别介绍各个模块的硬件选取与参数.
2.1 主控模块
网关选取STM32F103RBT6作为主芯片,该微处理器具有ARM CortexM3内核,最大时钟频率为72 MHz,内置高达128 kbit的Flash存储器和20 kbit的SRAM,具有丰富的通用I/O端口. 芯片有3个串口和1个SPI接口,足够添加GSM模块、WiFi模块和nRF24L01模块(UART1连接GSM、UART2连接WiFi模块、SPI接口连接nRF24L01). 芯片内部带有A/D转换器及休眠、停止、待机3种低功耗状态的切换,工作电压为2.0~3.6 V.
2.2 GPRS通信模块
GPRS网络是一种覆盖范围广、性能完善的无线网络,采用GPRS的监控系统,实时性高、安全可靠、通信成本低[4]. 网关选取SIM900A模块实现GPRS通信,其工作电压为3.2~4.8 V,支持频段为,支持一个UART接口,SIM900A模块通过该接口与STM32F103RBT6通信. 网关可通过该模块给用户发短信及时上报告警信息,或接收用户短信指令以响应用户的远程操作.
2.3 以太网/WiFi通信模块
网关选取高性能UART-EHT-WiFi模块ATK-RM04. 它自带串行通信接口、以太网接口和WiFi、无线路由功能,并具有LAN和WLAN两个网络接口,内置TCP/IP协议栈,能灵活地实现网关串口通信、以太网通信和WiFi通信3个接口间的转换.
用户在室内有WiFi网络时,可以使用COM-WiFi STA连接互联网;在室内没有无线网络时,可以使用EHT-COM(以太网接口)连接互联网;如果室内无网络,还可以使用COM-WiFiAP,将家居网关作为一个无线路由器进行局域网点对点的传输.
2.4 RF模块
3 无线网关的软件设计
3.1 网关主程序设计
网关的每个子模块都需要相应的驱动程序和功能实现程序,如GPRS模块需要编写基本的收发功能程序,此外还可以编写GPRS上网、拨号通话等功能程序. 图4为无线网关的总程序流程图.
图4 总程序流程图
为实现网关中以太网协议、IEEE802.11n协议、GPRS协议、家居无线网络协议之间的转换,本文自定义了如图5所示的家居无线网络协议帧结构,并指定了各个节点相应的数据需求表,主要为Data的内容. 以接收上行数据为例,网关接收到节点数据后的操作:1)提取第0位数据,判断其是否为本家居网络节点发送的数据,并准备执行相关数据转换的操作;2)提取第15位数据,判断数据接收是否完成;3)提取第4、第5位数据,再次判断其是否为本机所属的网络节点接收的数据(Flag Bit为系统从0~99中产生的一个随机数),这样的双层验证,能有效防止错误接收非本家居节点的数据,在一定程度上防止了不法渗透;4)提取第14位CRC校验码,判断本次接收的数据是否为节点想要发送的数据,以确保数据的准确性,如果不是,网关会自动发送“重发命令给节点”,让节点再次发送数据,再重复前三步的操作,直到接收到准确数据为止;5)提取第1~3位和第6~8位的数据,判断发送节点和目的地址的IP号;6)提取第9~13位的数据,执行相关的操作,转换打包,传输给WiFi模块或者GPRS模块,最后发送给用户. 下行的数据操作类似. 其中互联网的数据均由MAC协议中的数据字段提取,然后经过AT指令集,使用串口进行模块之间的数据传输.
图5 家居无线网络协议帧结构
图6 节点传输数据分析
以打开智能灯1为例,解释各部分数据所包含的信息. 因6为网关发送到节点1的数据按上述协议封装后的数据.
使用自定义的无线网络协议帧具有3点优势:1)防止同频同帧结构的数据互相串扰;2)灵活性大,预留的地址长度可以自行添加新节点,不受任何限制;3)安全性能好,使用公用协议帧,容易被不法分子盗取数据包进行非法操控,而自定义协议的加密技术(Flag Bit)可以自行定义或更新,大大提高了安全性。
3.2 GPRS通信程序
提取短信的内容是网关准确发送命令给节点的关键. 以下为提取内容的程序:
p=mymalloc(SRAMIN,200);
p1=(u8*)strstr((const char*)(USART2_RX_BUF),",");
sprintf((char*)p,"AT+CMGR=%s",p1+1);
if(sim900a_send_cmd(p,"+CMGR:",200)==0)
{p1=(u8*)strstr((const char*)(USART2_RX_BUF),",");
p2=(u8*)strstr((const char*)(p1+2),""");
p2[0]=0;
p1=(u8*)strstr((const char*)(p2+1),"/");
p2=(u8*)strstr((const char*)(p1),"+");
p2[0]=0;
p1=(u8*)strstr((const char*)(p2+1)," ");
sim900a_unigbk_exchange(p1+2,p,0);//为unicode码转gbk码}
3.3 WiFi通信程序
图7为WiFi通信程序的流程图. 一般情况下选择WiFista模式以适应短距离通信,长距离通信利用Internet进行传输. ATK-RM04网卡参数配置的主干程序如下:
图7 WiFi通信程序流程图
/////设置WiFi网卡模式,连接到无线路由器/////
send_cmd("at+netmode=2","ok",500);
send_cmd("at+dhcpd=0","ok",500);
send_cmd("at+dhcpc=1","ok",500);
sprintf((char*)p,"at+wifi_conf=%s,%s,%s",wifista_ssid,wifista_encryption,wifista_password);
send_cmd(p,"ok",500);
/////选择TCP协议,配置IP地址,设置为Server Mode/////
PRESTA:
netpro=m04_netpro_sel(50,30,(u8*)ATK_RM04_NETMODE_TBL[2]);
sprintf((char*)p,"at+remoteport=%s",portnum);
send_cmd(p,"ok",500);
if(netpro&0X01)
{ if(ip_set("WIFI-STA 远端IP设置",(u8*)ATK_RM04_WORKMODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA;
sprintf((char*)p,"at+remoteip=%s",ipbuf);
send_cmd(p,"ok",500);
send_cmd("at+mode=client","ok",500);}
if((netpro&0X01)==0)get_wanip(ipbuf);
wificonf_show(30,180,"请设置路由器无线参数为:",
(u8*)wifista_ssid,(u8*)wifista_encryption,(u8*)wifista_password);
3.4 nRF24L01通信程序
下行时,当MCU接收到通过互联网和GPRS网络传来的指令后,按照数据需求表,取出Data的内容打包成Tx_Buf,然后经过nRF24L01发送给下位机. 反之亦然. 图8为nRF24L01通信程序的算法流程.
图8 nRF24L01收发算法框图
3.5 数据测试
接收的数据包解读的结果是IP为000000的网关发送给IP为000001的节点,操作为打开节点1.表1和表2分别是部分家居节点与网关的数据情况.
表1 家居节点反馈网关数据需求表
表2 无线网关对节点监控数据需求表
测试以上节点,结果如表3所示。
表3 测试结果
4 总结
融合了多协议的家居无线网关是智能家居系统接入途径与功能多样性的重要保障. 本文设计的家居无线网关采用了嵌入式的硬件系统平台,运用了多协议融合的方法,经测试,该网关基本功能运作正常,初步达到了多协议融合的目的,预期可应用于家居、酒店房间或办公室中. 但由于智能家居网络没有统一的网络协议,且不同商家使用的无线模块、无线协议各不相同,因此无法将不同品牌的无线产品组成一个家居无线网络或者无法在家居网络中随便添加不同品牌的无线产品;同时本网关不能用在大型或障碍物较多的场所. 要完善本文设计的无线网关,首先要确定使用nRF24L01无线收发模块组成的家居节点网络中各节点之间的最优距离,然后才能制定出一个切实的路由方案将其应用到不同环境的场所中.
[1] 康祥喆. 浅谈我国智能家居的现状及发展趋势[J]. 中国科技信息,2014(8): 121-122.
[2] 袁麓,许艾明,朱琴娟. 多模接入家庭网关系统的研究[J]. 中国有线电视,2013(S): 355-358.
[3] 项雷军. 基于ZigBee、GPRS和TCP/IP协议的无线网关设计[J]. 微型机与应用,2013, 32(8): 51-54.
[4] 李华,李学云,区细成,等. 现代移动通信新技术GPRS系统[M]. 广州:华南理工大学出版社,2001.
[5] 曾勇,杨涛,冯月晖. 基于nRF24L01的超低功耗无线传感器网络节点设计[J]. 电子科技应用,2008, 7(7): 45-48.
[6] 向忠宏. 智能家居[M]. 北京:人民邮电出版社,2002.
[7] 王超,骆德汉,郑魏,等. 基于STM32的嵌入式智能家居无线网关设计[J]. 计算机技术与发展,2013, 23(3): 241-244.
[责任编辑:熊玉涛]
Design and Implementation of the Smart Home Wireless Gateway Based on Multi-protocol
NIEHeng, LIAOXi-chun
(School of Information Engineering, Wuyi University, Jiangmen 529020, China)
Existing functions of the smart home gateway are incomplete, with low flexibility, high cost,and complicated data transmission, and cannot adapt to the requirements for the hardware of the current home: Convenience, quickness, flexibility and low cost. In light of the requirements, a wireless gateway was designed based on the STM32F103RBT6, and it incorporated GPRS, WiFi and the low cost nRF24L01 module and adopted the custom internal network wireless communication protocol. The problem of the data conversion between internal and external networks was resolved effectively, achieving real-time monitoring of the smart home.
smart homes; wireless communication protocol; short distance wireless communication; STM32
1006-7302(2015)02-0061-07
TN919
A
2014-12-11
江门市科技计划项目(江财工[2011]131号)
聂亨(1989—),男,广东肇庆人,在读硕士生,主要研究物联网技术应用;廖惜春,教授,硕士生导师,通信作者,主要从事物联网技术及数据处理研究.