衡阳师范学院物理与电子工程学院 许岳兵
衡阳师范学院初等教育学院 何烨雯
衡阳师范学院物理与电子工程学院 谭岳衡
基于ARM和ZigBee的智能家居系统的设计
衡阳师范学院物理与电子工程学院 许岳兵
衡阳师范学院初等教育学院 何烨雯
衡阳师范学院物理与电子工程学院 谭岳衡
针对智能家居系统布线复杂、扩展性差、应用成本高等缺点,设计了一款基于ARM和ZigBee技术的智能家居系统。系统以三星Exynos4412为控制核心,移植了Linux 操作系统和Boa 服务器,采用ZigBee无线模块组建了家庭内部网,通过4G无线模块接入Internet,实现了智能家居系统的远程监控。
智能家居系统;Exynos4412;CC2630;ME3760
智能家居又称智能住宅,融合了计算机技术、网络通讯技术和传感器技术于一体的智能化家居控制系统。国外的智能家居系统发展较快,美国的X-10系统,德国的EIB系统和新加坡的8x系统等,这些系统在国内应用较少,系统架构、灵活性、价格等方面难以满足要求。国内的智能家居起步较晚,但一些企业也推出了不少好产品,如清华同方的e-Home数字家园,海尔U-Home家电和海信DNet-home数字家庭等。这些系统基于有线方案,布线麻烦,增减设备需要重新布线;同时依靠PC机进行管理,升级和维护不方便。因此,本文设计了一款低成本、高性能的智能家居系统。
图1 系统原理框图
系统原理框图如图1所示。系统由Exynos4412 ARM控制平台、USB摄像头、ZigBee通信电路、LCD触摸屏、4G通信模块和声光报警电路等构成。图中检测电路由传感器阵列组成,利用传感器检测室内温湿度、亮度、可燃气体泄漏、烟雾和盗贼入侵等情况。控制电路实现对家用电器的控制,包括对空调、电视、热水器、LED灯、加湿器、门窗等的开启和关闭。系统以ARM平台为控制中心,利用USB摄像头采集视频,ZigBee无线网络连接检测电路和控制电路,通过4G通信模块接入网络,当家庭内部发生煤气泄漏或火灾等危及生命财产的安全事故时,系统自动报警。用户也可以使用远程终端登录ARM平台上的web服务器,实时查看家庭内部的监控情况或发送控制命令,实现对家庭内部各种家居设备的监控及管理。
系统硬件电路包括ARM平台、ZigBee模块、4G通信模块和传感器检测电路等。系统ARM平台由三星Exynos4412主处理器、1G DDR3内存、4GB eMMC高速闪存及其他外围电路构成,具有mini PCI-E接口、2路RS232 UART串口、4路TTL UART接口、4路I2C接口和1路USB2.0接口等,支持4G通信模块。Exynos4412四核处理器基于ARM Cortex-A9内核,主频高达1.4~1.6GHz,ARMv7指令集,采用128/64位内部总线结构。一级缓存用于数据和指令的容量都是32 KB,二级缓存容量为1024 KB,运算性能十分突出。
ZigBee模块采用TI公司的CC2630,集成符合2.4GHz IEEE 802.15.4的无线收发器,含有32位ARM Cortex-M3处理器,128KB闪存,8KB RAM,12位ADC,多达31个通用I/O接口,具有I2C、UART等外设接口,具有低MCU电流、有源RF和低功耗模式,可使用纽扣电池供电。ZigBee协调器模块通过UART接口与ARM平台连接,通过2.4G无线通信与ZigBee节点控制器模块实现通信。
4G通信模块采用中兴公司的ME3760,是一款Mini PCI-E接口的LTE 模块,支持4GTDD-LTE/FDD-LTE网络、全频段,理论上支持最大100 Mb/s下行,50 Mb/s上行的数据传输速率,完全满足系统的设计要求。ME3760模块通过Mini PCI-E接口与ARM平台连接,通过串口AT指令实现数据通信。
温湿度传感器采用Sensirion公司SHT31,具有I2C接口,电压输出。SHT31通过I2C接口与ZigBee节点控制器模块连接。亮度检测采用光敏电阻,由于室内亮度的改变会引起光敏电阻阻值的变化,从而引起其在电路中电压值的变化,通过ZigBee节点控制器模块的12位A/D采集光敏电阻两端电压值,实现室内亮度的采集。煤气检测传感器采用MQ4,对甲烷的灵敏度较高。烟雾传感器采用MQ2,其电导率随空气中可燃气体浓度的增加而增大,将电导率的变化转换为与气体浓度相对应的输出信号。热释红外传感器采用基于红外线技术的HR-SR501,可靠性强,灵敏度高,超低电压工作模式。
系统软件的设计主要包括Linux操作系统的移植,Web服务器的设计,ZigBee程序设计,视频采集程序设计和4G通信程序设计等。
Linux操作系统的移植首先需要搭建交叉编译环境。PC机安装的是Ubuntu16.04操作系统,ARM平台的Bootloader引导程序和内核在PC机上交叉编译后,下载到目标板上运行。本文采用的交叉编译器为arm-linux-gcc-4.5.1,下载、解压,把arm-linux路径添加到环境变量PATH中,保存退出即可。然后进行Bootloader移植,Bootloader类似于PC机的BIOS,引导加载程序。本文采用u-boot-2015.10.tar.bz2,下载、解压,修改Makefile文件,指定交叉编译工具链。修改相似的BOARD配置,使其支持Exynos4412 CPU,编译运行。最后进行内核移植,系统Linux内核版本为3.5.0,在内核配置时,完成对串口、USB摄像头和4G通信模块等驱动的配置,并对YAFF2S根文件系统进行配置,保存退出。执行命令make uImage,编译完成后,在arch/arm/boot目录下生成了内核镜像文件uImage,把这个文件烧写到目标板上运行,就可以看到Linux的启动信息了。
Web 服务器采用Boa服务器,利用CGI 技术可以实现对家居设备的监控。Boa服务器的移植步骤:修改Makefile文件,指定交叉编译工具链;修改boa.conf文件,配置相关目录,包括修改Group开放用户组的限制,配置HTML文件存放目录,修改ScriptAlias配置CGI脚本的存放目录,修改mime.type文件的存放目录;在制作好的根文件系统下创建相应的目录,将上述文件拷贝到对应的目录。当Boa服务器接收到用户的请求时,CGI 程序就处理浏览器发过来的参数,生成HTML页面,为用户提供浏览。
ZigBee程序设计包括协调器节点和节点控制程序。本文采用TI公司的Z-STACK 协议栈,调用系统提供的API接口来开发应用程序。ZigBee协调器节点负责建立和维护无线网络的运行,向节点控制发送控制指令和接收传感器采集的信息,通过串口发送给ARM平台。ZigBee节点控制将传感器采集到的数据发送给协调器节点,同时接收协调器节点发送过来的控制指令。当传感器节点和ARM平台没有数据请求时,节点控制进入休眠模式;当有数据请求时,实时完成数据采集并发送至协调节点。
视频采集程序的设计基于Video for Linux Two(简称V4L2)技术,V4L2是Linux操作系统中关于设备的内核驱动,提供了用于采集视频等数据的API接口,加载相应的设备驱动,可以实现视频的采集。实现流程:首先打开视频设备,获取设备信息,使用ioctl()函数设置视频格式;申请帧缓冲区,映射到用户空间;将申请到的帧缓冲区在视频采集输入队列中排队,保证视频流的顺序;启动视频采集,使用VIDIOC_DQBUF使视频帧出队列,取出的视频帧,使用VIDIOC_QBUF使视频帧入队列,循环往复,可采集连续的视频数据;采集完成后释放缓冲区,并关闭摄像头设备文件。
4G通信模块程序设计采用基于TCP/IP 协议的流式Socket 通信,通过Linux下的Sockets套接字编程实现。服务器使用socket()函数创建套接字,用bind()函数绑定服务器IP地址和端口号,创建socket对象。客户端调用sendto()函数向服务器发送服务请求报文,调用recvfrom()函数等待并接收服务器的应答报文;双方通过socket套接字进行数据的发送与接收,实现用户远程终端与ARM平台之间的通信。
设计了一款基于ARM和ZigBee的智能家居系统,以三星Exynos4412为控制核心,结合ZigBee模块、4G通信模块和传感器等完成了系统硬件设计,通过移植Linux操作系统,Web服务器以及编写ZigBee程序、视频采集程序和4G通信程序,实现了用户远程终端与系统监控平台之间的互通互联。经测试,系统运行稳定,具有实时性好、可靠性高、扩展性好等特点,具有广阔的市场前景。
[1]尹纪庭等.基于ARM和ZigBee的智能家居控制系统研究与开发[J].计算测量与控制,2011,21(9):2451-2454.
[2]杨新华,王彦龙,薛健.光伏储能电动汽车充电站的监控系统研究[J].单片机与嵌入式系统应用,2015(9):65-68.
[3]赵建华,张占华.基于ARM和ZigBee的便携式智能家居终端系统[J].计算机与数字工程,2013,41(9):1529:1531.
[4]许岳兵等.基于S3C2440的家用视频监控系统的设计[J].衡阳师范学院学报,2011,32(3):52:55.
许岳兵(1980—),男,湖南岳阳人,讲师,主要研究方向为机器学习,嵌入式及应用。
湖南省教育厅高校科研计划项目(12C0532)。
何烨雯(通信作者)(1980—),女,湖南岳阳人,中教二级,主要研究方向为物理学教育,嵌入式及应用。