智能家居网关及其Web控制软件的设计和实现
2015-06-15侯维岩魏耀徽庞中强
侯维岩 魏耀徽 庞中强
(郑州大学信息工程学院1,河南 郑州 450001;上海市电站自动化技术重点实验室2,上海 200072)
智能家居网关及其Web控制软件的设计和实现
侯维岩1,2魏耀徽1庞中强1
(郑州大学信息工程学院1,河南 郑州 450001;上海市电站自动化技术重点实验室2,上海 200072)
针对物联网智能家居领域多网络和多系统的现状,提出了一种能够同时兼容ZigBee、Bluetooth和以太网,并且能方便操作的B/S智能家居控制系统。网关采用STM32F103作为核心处理器,扩展多个功能模块和各个子系统节点构成硬件平台。软件方面采用线程编程,添加ENC28J60驱动,通过线程轮询的模式来控制不同子系统的数据传输与转换。以MySQL作为数据库,通过PHPsocket编程实现用户与网关、数据库之间的信息交互。网关与子节点之间通过串口电路进行通信。试验结果表明,系统运行效果良好、使用方便、维护难度较低,能更好地应用到智能家居领域。
数据库 ZigBee技术 Bluetooth技术 ENC28J60 网关 B/S架构
0 引言
随着无线传感器网络技术的发展,物联网技术从最开始的工业控制领域向民用领域逐步扩展[1]。最近几年,各大家电生产厂商逐步将生产方向转向高端智能化领域,并提出了智慧城市、智慧地球理念。目前各个大电子生产厂商生产的无线设备种类众多,例如ZigBee和Bluetooth[2]等。但是没有一个通用的控制系统将这些不同的通信设备进行有效融合。[3]
针对上述问题,本文设计一种易于大规模生产且能兼容不同协议的智能家居网关[4],即支持以太网、蓝牙4.0和ZigBee这3种不同网络间的信息交换,并设计与其相关的控制软件模型:MySQL数据库[5]和PHP界面。网关可以通过Socket通信[6]对家居环境中各种设备进行控制,实现远程智能监控。
1 网关架构设计
整个系统可分为:STM32F103VET6嵌入式网关和基于PHP的Web操控界面2大部分。嵌入式网关则由ZigBee模块、Bluetooth模块、RS232外设串口、ENC28J60以太网模块和MCU-STM32F103VET6组成。
1.1 网关MCU设计
网关的硬件核心部分选用CortexTM-M3系列的STM32F103嵌入式芯片,主频76 MHz,外接管脚功能较全。
网关需要处理和转换多种通信协议,并且还要能够运行以太网协议,所以本系统对网关的MCU内存容量要求较高。为了能使系统流畅地运行,选择STM32F103VET6嵌入式芯片为核心处理器,其内存可达512 kB。
JTAG接口通过STM32F103VET6芯片的JTDI(测试数据输入)、JTDO(测试数据输出)、JTCK(测试时钟)、JTMS(测试模式选择)、JTRST(测试复位) 管脚下载和调试程序。
ZigBee和Bluetooth模块通过STM32F103VET6的内置UART1和UART2管脚与芯片直接相连。UART3管脚则经过MAX232电源电平转换芯片设置为串口外设接口(方便程序的检测和调试)。各个子系统和MCU可以通过串口实现透明传输。
网络接口主要负责网关和以太网相连,使用ENC28J60网络芯片与STM32F103VET6的SPI接口相连,之后通过HR911105A网口与网线连接。
电源采用AMS1117芯片,实现5 V到3.3 V电压的转换,为主控芯片和各个子系统芯片提供电压。网关硬件设计如图1所示。
图1 基于ARM的网关结构图
1.2 ZigBee节点设计
ZigBee节点硬件设计主要包括:按键、CC2530、电源、LED灯,结构如图2所示。
图2 Zigbee结构图
ZigBee模块与网关共享同一个电源,子节点起采集信息及设备状态的作用。子节点周期性读取传感器的状态,后通过单播的方式将数据传输到协调器节点,协调器则通过串口将数据发送至网关。发送数据前,将采集数据与上次数据进行比较,如果没有变化,则不发送数据。这样不仅降低了节点能耗,而且避免了网关收发大量数据时产生的数据拥堵现象。LED等显示网络的连接状态是否正常,如不正常,则通过按键可以重启ZigBee模块。
本系统中对协调器和各个子节点进行了统一编码,并采用单播通信的方式通过地址响应,而非根据通信内容的响应来控制各个子节点设备,极大地降低了系统网络中数据的传输量,也简化了子节点的编程难度。数据帧格式如表1所示。
表1 ZigBee数据帧格式
从表1可以看出,帧头帧尾以固定的数据填充,用来校验数据格式是否正确,数据帧长度为15 B,其中帧头中Z表示系统类型(ZigBee),K或F表示控制或状态。而设备类型是描述设备的用途。节点网络地址占4 B,用来区分不同的终端设备。传感器采集的信号存放在数据段(少于4 B时,补0)。
当协调器收到子节点发送的数据时,自动查询子节点的网络地址,将网络地址以表1的格式打包发送给网关,再由网关转发到上层控制端。当协调器收到网关的控制指令后,根据网络地址将数据字符串发送给终端节点,终端节点收到消息后触发相应的响应函数,实现对设备的控制。
1.3 Bluetooth节点设计
蓝牙芯片采用TI生产的CC2540芯片,其硬件设计包括:CC2540、电源、按键、LED电路,结构如图3所示。Bluetooth节点运行TI官方的BLE协议栈。该协议栈是最新的蓝牙4.0协议,较之前的版本它具有功耗小、延时短以及成本低的优点,大大扩展了其在无线设备领域的应用范围。通信网络由主机和从机组成。
图3 Bluetooth结构图
由图3可知,主机(Central)通过对SimpleBLECentral_ProcessEvent()函数插入自动搜索语句,使主机能够上电自动搜索周围的广播设备。当搜索到可连接的设备后会自动连接,这时主机会通过串口向网关发送字符和广播内容,LED等闪烁表明连接已经建立。若连接失败,可以通过按键手动重新连接。
从机上电后自动广播,连接建立后主要通过两条特性值数据通道与主机通信。两条特性值数据通道定义为Char6和Char7。Char6设置为可读写的特性值语句,从机主要通过这条数据通道接收主机发送的信息,Char7为消息特性值语句。当从机收到外部数据后写入Char7,主机可以从Char7读取从机发送的数据。Bluetooth通信格式如表2所示。
表2 Bluetooth数据帧格式
表2表明,帧头帧尾以固定的数据填充,用来校验数据格式是否正确,数据帧长度为14 B。其中帧头B表示系统类型(Bluetooth),K或F表示控制或状态。后面的是节点网络地址用来区分不同的终端节点。蓝牙协议的网络地址是由48位IEEE地址构成,所以将节点网络地址字段设置为6 B。数据段为传感器发送的数据(少于4 B时,补0)。
1.4 ENC28J60模块设计
ENC28J60是闭环网络控制芯片,它符合IEEE 802.3的全部规范,内部拥有一个DMA模块,以实现高速数据的收发和IP校验与计算[7]。MCU通过2个中断引脚和SPI连接,最高传输速率可达10 Mbit/s。硬件设计主要包括:NEC28J60、按键、电源、晶振。WiFi结构原理图如图4所示。
图4 Wifi结构图
运行主程序之前,需要对芯片的SPI管脚进行配置:双向全双工、主机模式、发送接收8位帧结构、时钟悬空低、数据捕获第一个时钟沿、NSS片选信号有软件控制、波特率预分频为8、数据传输从MSB位开始、CRC计算值设置,编写SPI1_ReadWrite()数据读写函数。然后对NEC28J60芯片初始化配置包括:控制寄存器、以太网缓冲器和PHY寄存器。
网关运行的网络协议是UIP协议,UIP协议包含TCP协议栈的主要功能,代码较少只有6 kB,运行时只占用几百字节的RAM,适合在小型嵌入式芯片上运行。
1.5 网关软件设计
网关接收到ZigBee、Bluetooth反馈的数据,采用Socket通信把数据经以太网发送到服务器端。由于网关需要分析大量的数据,并向不同的端口传送,因此需要通过UIP_APPCALL()函数接口对数据进行转发,包括以TCP-UART1、TCP-->UART2、UART1-->TCP、UART2-->TCP。
网关系统流程如图5所示。
图5 网关系统流程图
设备端口主要是UART端口和Socket通信接口。串口通信采用无奇偶校验的方式,波特率统一设定为115 200 bit/s,同时对看门狗定时器周期性清零。端口查询程序由loop_tcpip()、loop_uart1()、 loop_uart2()这3个函数组成。loop_tcpip()是TCP循环处理函数,主要功能包括网络连接的建立和网络数据的收发。loop_uart1()和loop_uart2()函数实现UART1和UART2串口数据的收发。
2 Web控制端的设计
系统控制软件基于PHP+Apache+MySQL平台,构建B/S[8]架构的信息管理服务器。该架构是目前最流行的Web开发应用架构之一。数据库采用MySQL[9]来存储数据,使用MyEclipse 集成开发环境开发服务器端的Web 应用程序[10]。通过在前台HTML页面中嵌入智能家居场景,将不同电器的信息直接显示在网页中。
本文所设计的控制端主要分为:通信控制模块、状态查询显示模块、登陆模块、设备添加模块。其整体架构如图6所示。
图6 控制软件架构图
本系统采用在Linux环境下运行的MySQL数据库,在数据库中建立设备表和用户信息表。设备表格式如表3所示。设备地址表用来储存控制设备的类型和设备所在无线网络的地址。设备类型存储着由网关传送的数据头字符,地址是每个节点在网络中所分配的地址。设备状态存储节点返回设备的状态值和采集到的数据。控制系统自动将接收的网关数据写入数据库,同时也支持用户通过编辑页面更改数据库的数据。
表3 设备表格式
控制系统并非开放的系统。为了保证用户使用的安全性,本文在控制端设计了一个登录控制模块。程序接收到用户输入的用户名和密码,判断是否是合法用户。如果合法则转到控制界面,否则提示“用户名或者密码错误”。
登陆成功后才能进入通信控制页面和显示页面,页面中的每个图标都对应着各个子系统的终端节点。通过对数据库的实时查询,在图表上显示每个节点的状态,图标旁边是控制按键。当点击按键时,会把与按键相对应的器件地址和状态值通过Socket发送给网关。发送值=器件类型(BC/ZC)+ 器件在无线网络中的地址(通过查询数据库表)+控制状态。当发送成功后,器件的状态发生改变,再由网关发送至数据库,这时页面经过查询数据库更新显示器件的状态。
设备添加模块是用户手动更新设备表单的一个页面。设备表信息都显示在HTML表单中,用户修改完成后,单击提交按钮就会将数据更新到数据库。
3 结束语
本文提出了一种面向智能家居环境的基于无线网络-ARM网关-数据库-控制界面的网关控制系统。该系统利用成熟的ZigBee、Bluetooth、STM32和PHP Web设计软件,实现了智能家居环境下的信息采集和管理。系统一方面能够对不同通信系统的信息进行统一和实时的管理;另一方面优化了用户界面的操作,提高了项目的开发效率,同时也增加了系统的可移植性和可扩展性,具有较好的经济效益和社会效益。
[1] 李勇,赵刘阳,王平,等.智能家居无线控制网络的设计与实现[J].自动化仪表,2013,34(7):58-61.
[2] Baker N.ZigBee and Bluetooth strengths and weaknesses for industrial applications[J].Comp uting and Control Engineering Journal,2005,16(2):20-25.
[3] 沈永春,姜宁,张功镀.嵌入式多协议网关的设计与实现[J].自动化仪表,2007,28(3):8-12.
[4] 魏来,王海宽,费敏锐.异构网络测控系统集成设计及发电实验应用[J].自动化仪表,2011,32(5):6-10.
[5] 叶宁,王忠勤,王汝传,等.基于EPC网络的智能物资管理系统的应用与研究[J].计算机技术与发展,2012,22(10):209-216.
[6] 孙知信,唐苏宁.基于ipv6的无线传感器网络异构通信技术研究[J].中兴通讯技术,2012,18(3).
[7] 刘宗明,卓振泰,何明华.基于ENC28J60的以太网接口的设计与实现[J].电子器件,2013,36(6):920-922.
[8] Wang W J,Li J.The design of an open laboratory information management system based upon a browser/server (B/S) architecture[J].World Transactions on Engineering and Technology Education,2013,11(1):41-45.
[9] 李荣国,王见.MySQL数据库在自动测试系统中的应用[J].计算机应用,2011(S2):169-171,175.
[10]李丹.智能停车场Web车位引导的设计与实现[J].韶关学院学报,2013,34(2):243-246.
Design and Implementation of the Gateway for Smart Home and Its Web Control Software
In accordance with the current status of multi-network and multi-system in IOT smart home field, the B/S smart home control system that is compatible with ZigBee, Bluetooth, and Ethernet and easy to operate is proposed. In the gateway, STM32F103 is adopted as the core processor for expanding multiple functional modules and constituting the hardware platform. The thread programming is used in software, and the drive of ENC28J60 is added, data transmission and transformation of different subsystems are controlled through thread polling mode. With MySQL as the database of the system, the information interaction among users, gateway and database is implemented via PHPsocket programming, while the communication between gateway and child nodes is through the serial port circuit. The experimental results show that the system is running with excellent effect and is easy operated; it features lower maintenance difficulty, and is suitable for applying in the field of smart home.
Database ZigBee technology Bluetooth technology ENC28J60 Gateway B/S framework
侯维岩(1964-),男,2004年于上海大学控制理论与控制工程专业,获博士学位,教授;主要研究方向为分布式智能控制、信号和图像处理。
TN871
A
10.16086/j.cnki.issn1000-0380.201505016
修改稿收到日期:2014-10-08。