智能家居通讯网络架构的研究
2019-11-05王章弘陈曦
王章弘 陈曦
摘 要:可靠、适用的通讯网络是智能家居的重要组成环节,一个典型的家居通讯网络可以由终端、主网关、服务器、客户端所组成。其中终端采用TI公司推出的具有ZigBee协议的微处理器CC2530,并构成ZigBee局域网,包括节点、路由器、协调器;主网关采用联发科7688硬件+OpenWrt系统,使用中移物联网开放平台做服务器后台,实现数据的交互。通过温湿度状态显示以及排插远程操作的测试,验证了智能家居通信网络架构的可行性。
关键词:智能家居;ZigBee;OpenWrt;服务器;客户端
中图分类号:TP39 文献标识码:A
Abstract:Reliable and applicable communication network is an important part of smart home. A typical home communication network can be composed of terminal,main gateway,server and client.The terminal adopts the ZigBee protocol microprocessor CC2530 launched by TI company,and forms the ZigBee LAN,including nodes,routers and coordinators.The main gateway adopts mediatech 7688 hardware +OpenWrt system,and USES the open platform of China mobile Internet of things as the server background to realize data interaction.The feasibility of the intelligent home communication network architecture is verified through the test of temperature and humidity status display and remote operation of platoon and plug.
Key Words:smarthome;ZigBee;OpenWrt;server;client
伴随着科技的不断进步,生活水平也在逐渐提高,对于家庭居住环境的智能化是人们追求高生活质量的展现之一,主流趋势便是将无线网络技术应用于家庭网络中。通过智能化手段,连接家庭中的电器设备,是物联网在现代家庭中重要的体现[1]。家居的通讯网络架构决定智能家居系统内部之间数据传输的效率和速率,通讯网络架构的研究,对家居设备的应用设计有着重要的意义。
1 系统整体结构
智能家居的通信架构由终端、网关、服务器、客户端组成,系统结构如图1所示。终端主要由Zigbee组成的控制通信网络,连接着灯、电动窗帘、红外线收发器等传输速率要求不高的设备,对于视频和语音数据使用WIFI来传输。家居网关则是数据信息相互转换的设备,红外网关由CC2530设计,目前还有很多的家用电器是使用红外线控制,比如空调、和电视机。主网关有担任着家庭主机的任务,通过接收终端的数据和从服务器中查找历史数据,进行分析处理后,实现智能控制。服务器是一个数据库,服务器云使用中移物联开放平台,中移云已经提供了设备管理,比如设备的查找,安装,卸载,客户端则是网页或者手机APP,用户使用浏览器读取服务器中的数据并解析,显示出家庭设备环境参数。用户要控制家电,则通过网页访问服务器,服务器再将控制数据发给家庭网关,家居网关再将数据发送给响应的设备,设备再执行相应的动作[2][3]。
2 硬件设计
2.1 CC2530最小系统
CC2530是一个应用于IEEE802.15.4、Zigbee和RFCE4的片上系统解决方案,拥有增强工业标准的8051MCU,片上有可编程FLASH,8 kB RAM和许多外设。终端设备可以直接运用CC2530构成应用设计,而不需要其它MCU,降低了成本。CC2530最小系统可分为时钟电路,复位电路、下载仿真电路、射频输入输出匹配电路[4][5]。
2.2 温湿度检测
DHT11是数字式温湿度传感器,可以直接连接到CC2530的数字I/O口。DHT11拥有功耗低,体积小的特点,其内部包含电阻式感湿元件和一个NTC测温元件。MCU通过单总线协议来读取DHT11的数据,单总线协议中一条总线可以挂无数个器件,线路简单。传感器数据接口为开漏输出,需要加上拉电阻,一般当总线连线长度少于20 m时,上拉电阻取5 k适宜。D数据与CC2530的P0.2相连[5][6]。
2.3 智能插座
智能插座属于ZigBee局域网中的终端,每个插座输出口通过印制板继电器触点的闭合状态来实现开和关,或者通过固态继电器控制插座口的火线。两类继电器控制可以由CC2530的I/O口来实现,这样将排插接入了局域网,可以实现远程控制。一般MCU的I/O口灌拉电流比较小,而继电器驱动电流相对较大,可靠驱动电流值约50 mA,可以在I/O口外接开关电路,如采用小功率三极管9013以驱动继电器。对于印制板继电器而言,继电器线圈就是一个电感,在线圈断开瞬间,会有很大的反向电动势,所以在应用中继电器线圈需要并接一個续流二极管,即保护小功率三极管,也可以消除对电源的干扰。
2.4 红外网关
很多家用电器是通过红外遥控器控制的,要想通过手机远程操作,就需要清楚家用电器的红外编码指令,这样才能把从手机端来的网络数据变成红外数据指令,显然解码不同家用电器的遥控红外指令是必需的。
YIRTX02是一款集红外编码和解码功能为一体的芯片,能够学习上99%的红外遥控器,内部嵌入了MCU,而且已经烧入了固件,通过串口和外部通信,电路图如图2所示。芯片从红外接收管接收到红外数据,在芯片内部处理之后,通过串口TX端口将处理好的数据包发出。外部MCU发数据协议包到RX端口,YIRTX02经过对数据的处理,再经过红外编码,将信号从红外发送器发出,控制YIRTX02的MCU为CC2530,则可以红外网关作为ZigBee网络中的终端节点[7]。
2.5 主网关
Linkit Smart 76880 Duo开发板有TX和RX引脚,直接分别连到Zigbee局域网中协调器上的CC2530 的RX和TX硬脚上,这样主网关与Zigbee局域网构成了有效的数据链。并且,开发板上有WIFI收发电路,可以直接通过WIFI连接到互联网,板上有HOST USB接口,可以通过USB摄像头,采集图像数据。
3 软件设计
3.1 ZigBee局域网和网关的协调
主网关是整个智能家居通信架构的核心,一方面承担着数据的传输任务,同时还具备控制主机的功能。在局域网络中每个节点设备的信息、数据都是在主机中不断更新和保存,通过协调器来连接网关和各个设备,协调器作为系统的第一个节点,负责无线网络的建立和参数的配置。当数据来自于节点并发送给协调器时,需要利用协议簇(Z-stack)来对数据类型进行划分,而当数据为透传数据时则不需要进行区分,直接传给网关。协调器和网关的运行流程图如图3所示,(a)是协调器的运行流程,(b)是网关的运行流程。通过协调器搭建好局域网后,从每个设备节点获取设备信息,向网关发送所有设备的有关信息,并初始化系统中的所有设备列表。接着,两者便会不停的进行发送和接收的操作,协调器从节点接收到的数据大致分两种类型,一种是Z-stack协议栈的内部消息;另一种是节点发给网关的透传数据,透传数据指的是从硬件设备传送给传感器等设备后,需要上传的数据。网关发给协调器的数据也分两种,第一种是直接给协调器的数据;第二种是透传发给终端设备的数据,它指的是远程发送的指令。当收到来自于协调器的数据后,网关将更新设备列表中的内容,同时上传有关数据给服务器。而当收到来自于服务器的命令时,网关会迅速透传给节点,确保命令的时效性[8][9][10]。
3.2 Linux 网络编程
Linux的网络编程采取Socket套接字,发送和接收就是通过write()函数和read()函数,Socket就是应用层和TCP/IP层之间的中间层,在编程时不需要考虑具体数据的有关操作。Socket通信是成对出现的,分别是sever端和client端,标准的套接字分为TCP和UDP两种方式,TCP是面向连接的服务,其优势在于能够精确发送和接收数据,而UDP协议是面向无连接的服务,可能无法正确的对数据进行收发。所以在通过socket()函数创建套接字时,选择TCP数据格式。
3.3 数据上传和远程控制
这里采用EDP协议的目的一是为了对家电设备进行远程控制,二是保证家电设备中的数据上传。EDP消息包的组成元素有:消息类型(一个字节)、剩余消息长度(1-4字节,指示选项+消息体的长度)、选项(根据消息类型0个或多个)、消息体(根據消息类型0或多个字节)。消息类型如表1所示,程序设计时需要用到的消息类型有CNN_REQ、CONN_RESP、SAVE_DATA、SAVE_ACK、 CMD_REQ、CMD_RESP、PING_REQ、PING_RESP。
初始化系统之后,通过套接字连接平台服务器地址jjfaedp.hedevice.com,TCP 端口876。向服务器发送连接请求,登录设备。网关接收到连接响应之后,表示网关正常登录。通过SAVE_DATA类型消息包,网关将需要更新的数据发送给服务器,等待服务器的响应,当接收到SAVE_ACK消息包数据表示数据成功上传。数据在服务器中的保存时限为一年,手机APP客户端可以通过服务器查询数据。当远程客户端发送控制指令,表示服务器发送CMD_REQ命令请求,此时网关将数据发送至对应的ZigBee终端。整个过程需要周期性地向服务器发送心跳包并等待服务器的心跳应答,若无反应则可能是因为某种原因与服务器失去连接,需要重新登录。
4 仿真与调试
用户界面的设计采用中移物联网开放平台,界面中包括家庭设备的远程控制以及数据显示等。在中移物联平台的应用管理中,可以添加应用,其中支持的应用有文本显示、定位显示、图像显示、折线图显示、开关、旋钮。在应用设计中,主网关的状态信息通过文本来显示,对应的数据流为gateway_status;温度和湿度用折线图显示;监控的视屏(5S刷新一次)用图片显示;而开关的数据流则用智能排插的数据流显示。用户界面如图4所示。需要注意的是,在设置开关时,EDP命令中0002表示设备的地址是0002,即在ZigBee局域网中对应节点地址为2。{V}中的V表示开关的值,每次执行动作时都会向网关发送该命令。比如,当执行开的命令时,会发送“00021”字符串。
设计好界面后通过SSH进入主网关,执行主网关程序中可执行文件SmartHome。网关的可执行文件是通过Eclipse交叉编译生成,在/home 目录中执行./SmartHome命令。在用户界面中温湿度通过曲线图显示,图5中显示温度27°,湿度67%,其中横坐标表示时间。图中温湿度的值为零的原因是设备刚开机,传入了为零的温湿度值。