曹梦龙,邹云东
(青岛科技大学自动化与电子工程学院,山东青岛 266042)
随着计算机、网络和微电子技术的飞速发展以及人们生活水平的提高,人们开始追求高质量的生活方式,物联网、智能家居开始成为人们研究的热点。智能家居是指利用先进的计算机网络通信技术、嵌入式技术和传感器技术与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,使家居生活更加舒适和安全[1]。
家庭网关的主要功能是通过Internet或者GSM网络等外网连接家庭本地网络和远程控制终端,使用户可以通过外网对家庭本地网络进行远程监控。目前家庭网关的设计大多为基于PC的方案和基于单片机的方案。基于PC方案的网关不仅灵活性差,不能满足人们对家居现场的实时监控,而且成本较高,不便于智能家居的推广。而以单片机为控制核心的家庭网关设计,由于单片机软件资源有限,给系统的升级、维护及调试带来极大的困难[1]。参考文献[2],以 ARM Cortex-M3为平台,实现了基于μC/OS-Ⅱ的小型 TCP/IP 协议栈的网关[2],实现了家庭内网与外网的链接。但是这种小型的TCP/IP协议栈传输功能有限,只能进行简单的数据传输,不能完成视频监控等任务。μC/OS-Ⅱ操作系统是一个基于优先级的实施操作系统,只支持多任务,而不支持多线程。而智能家居中需要多个节点的并行控制,因此需要多进程的编程,所以它并不适合智能家居的控制。
综合以上考虑,本文采用ARM9 S3C2440处理器作为硬件平台,并移植Linux操作系统,然后在其上搭建boa Web服务器,实现智能家居网关的设计。
智能家居系统一般分为本地控制终端、家庭本地网络、家庭网关、远程控制终端四部分。家庭本地网络中各终端节点将采集到的数据传给网关,经网关处理后发送给外网。用户可以通过智能手机、计算机等远程控制终端实现对家庭本地网络的监控。
本文设计的智能家居网关硬件结构如图1所示。其中家庭网关包括控制器 S3C2440、DM9000AE网卡、SIM300手机模组。控制器使用的S3C2440是三星公司开发的一款基于ARM920T内核和0.13 μm CMOS工艺的32位RISC微处理器,最高主频为400 MHz,低成本、低功耗,能够满足智能家居的控制要求。网卡是设备连接互联网的必备芯片,本文选用的网卡为DM9000AE。SIM300手机模组将重要的报警信息,以短信的形式发送给用户手机。用户也可以通过发送短信控制家庭本地网络中各个设备,其与控制器通过串口相连。
图1 智能家居硬件结构
DM9000AE与S3C2440芯片的连接电路图如图2所示。DM9000AE是16位总线宽度,连接在 S3C2440的bank2上,DM9000AE的第32脚CMD用来指示当前数据总线Index端口还是Data端口,地址线A1接到此引脚,以区分读写的是命令/地址还是数据。DM9000AE的Index端口的地址是0x10000000,Data端口的地址是0x10000002。驱动程序中只以两个物理地址访问DM9000AE。网卡使用中断EINT2。
图2 DM9000与S3C2440连接电路图
本文采用免费、开源的Linux作为ARM9 S3C2440平台的操作系统,它的内核可裁剪,易于移植,占用资源小,并支持多进程,能够满足本文网关的设计要求,并适于智能家居系统的整体控制。本文的网关要实现的通信功能具体有两个:家庭本地网络与Internet网络的通信;家庭本地网络与GSM手机网络的通信。
本文设计实现了一种通过浏览器浏览网页进行智能家居远程监控的控制方法。这种B/S(浏览器/服务器)模式,省去了C/S(客户端/服务器)模式中客户端软件的设计,节省了客户端软件的设计开发和维护成本。同时与C/S模式相比,更方便用户对家居进行控制,用户可以在任意能上网的计算机或者手机上对家居进行监控,而不需要安装控制软件。
如图3所示,用户通过计算机或者手机浏览器访问相应的HTML格式的网页,通过Javascript脚本程序将控制命令传递给家庭内网S3C2440芯片上运行的boa服务器,boa服务器通过CGI程序对家庭内网中的各硬件设施进行控制。
图3 Internet通信原理
由于嵌入式设备的资源有限,并且不需要能同时处理很多用户的请求,因此本文没有选用Apache等大型的服务器,而是选择了boa服务器。boa服务器占用资源很小,可执行代码只有约60 k,是一个专门为嵌入式设备设计的Web服务器。它能很好地支持CGI程序。boa的设计目标是速度和安全,在服务器站点公布的性能测试中,boa的性能要好于Apache服务器。而且,boa服务器为开源的免费软件,更节省了成本。
本文设计中,网页采用HTML语言编写。HTML语言即超文本标记语言,它通过标记符号来标记要显示网页中的各个部分,它的主要功能就是显示。Javascript是HTML网页中的脚本语言,它是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。CGI是“公共网关接口”(Common Gateway Interface)的简称,它运行在服务器上,是服务器与系统中其他程序的桥梁。服务器接收到浏览器的请求后,通过CGI程序获得家庭本地网络的状态信息,再转发给浏览器网页或者对家居进行控制。
本文设计中使用的Javascript脚本语言中的AJAX,即Javascript及XML。可以在不重新加载整个网页的情况下,对网页的某部分进行更新。但是编写常规的AJAX代码并不容易,因为不同的浏览器对AJAX的实现并不相同。这意味必须编写额外的代码对浏览器进行测试。为了解决这个问题,本文中使用了jQuery。jQuery是一个写得少,但做得多的轻量级Javascript库。
本设计中通过jQuery AJAX从家庭内网获得温度的Javascript脚本程序如下:
对于一些重要的报警信息(如防火报警、防盗报警),只是通过Internet发送给用户,用户将不能及时地接收到报警信息。在部分场合,用户不能或者不方便使用Internet上网,这时用户将不能通过Internet对家居进行监控。因此本文设计加入了手机短信的监控方式。当家庭本地网络产生报警信息时,可以通过手机模组向用户手机发送报警短信。用户也可以发送相应的短信对家居进行监控。因为只是使用了手机的短信功能,GSM网络完全可以实现本系统功能并且成本更低,因此本系统没有选用3G或者4G网络。
手机通信程序结构如图4所示。main主程序创建gprsThread进程。经手机模块初始化和串口初始化后,进程进入while(1)循环,循环检测红外、烟雾报警信息和从串口读取短信控制命令。当检测到报警信息后,通过串口给手机模组发送命令,给用户发送报警信息。
图4 手机通信程序结构图
当从串口中读取到“+CMTI:"SM",1”时,说明GPRS模块收到了短信。这时给GPRS模块发送短信读取命令“AT+CMGR=1”。在串口中可以读取到如下形式的数据“+CMGR:"REC UNREAD","+861515420****","13104122,10:57:50+32"CONTROL_LAMP ON”。上述字符串中“CONTROL_LAMP ON”为控制命令,将电灯打开。通过处理上述字符串,将控制命令解析出来,即可控制家庭内网中的电器。
将本系统通过固定 IP(211.64.219.***)接入 Internet,在室温16℃,湿度70%环境下测试。本文设计的网关能够实现家庭本地网络与外网的通信。通过浏览器,能够接收家庭本地网络的状态信息,也可以向家庭本地网络发送控制信息,实现家居的远程控制。用户可以通过手机短信对家居进行监控。浏览器访问的监控网页如图5所示。通过网页打开电灯和热水器开关后,实现了对电灯和热水器的远程开关控制。获取温度16.5℃,湿度70.6%。发送的短信控制命令和控制结果如表2所示。
图5 智能家居控制网页(截图)
表2 短信控制结果
本文设计了一种基于Internet和GSM的智能家居网关,在S3C2440为控制器的硬件平台上移植嵌入式Linux操作系统,结合手机模组SIM300,实现了家庭内网与Internet网络和GSM网络的通信。该网关设计成本低、性能高,在智能家居领域将会有很高的应用价值。另外在酒店管理、医疗自动化等需要局域网通信的领域也有很广阔的应用前景。
:
[1]赵勇.基于ARM和ZigBee的智能家居远程监控系统设计[J].测控技术,2012,31(11):52-59.
[2]张毅,马钧元,杨校权.基于Cortex和ZigBee的智能家居网关设计与实现[J].电视技术,2012,36(1):56-58.
[3]朱恒军,张志华,于泓博,等.GSM短信预警的智能家居服务系统设计[J].东北石油大学学报,2012,36(4):79-84.
[4]刘治国,陈新华.基于Linux和Qt的智能家居系统的设计与实现[J].电子技术应用,2012,38(4):23-26.
[5]南春辉,李博,武颖.基于Web技术的嵌入式智能家居系统设计[J].电视技术,2013,37(3):86-92.
[6]张庆海.基于无线通信网络融合的智能家居系统研究[J].电视技术,2013,37(4):92-95.
[7]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.
[8]MATTHEW N,STONES R,陈建,等.Linux程序设计[M].北京:人民邮电出版社,2012.