基于树莓派和Ardunio的WiFi远程控制 智能家居系统设计
2019-04-28李泽山郭改枝
李泽山 郭改枝
摘要:文中以树莓派(Raspberry Pi)、Ardunio作为主控核心,以语音信号和智能手机作为客户端,设计一款WiFi远程控制智能家居系统。系统中,Raspberry Pi充当服务器端的角色,由C、Python语言构建;手机客户端则采用Java、C++语言编写,并详细介绍智能家居的环境搭建及应用测试,最终通过WiFi实现语音和手机APP对智能家居的远程控制。
关键词:智能家居系统;远程控制;环境搭建;应用测试;服务器端;客户端
中图分类号:TN915-34:TP391.9
文献标识码:A
文章编号:1004-373X( 2019)24-0167-05
从计算机的发明到互联网的普及,信息化技术已经彻底改变了人们的日常生活,它所创造的价值已经不可估量,而如今的物联网(Internet of Things,IOT)和人工智能则很有可能成为互联网的下一幕,并且它离人们越来越近,正在以星星之火之势渗透到生活的各个方面。而随着智能家居的普及和发展,使用智能家居产品则成为了生活的主流。但是,当今市场上主要采用ZigBee来实现智能家居的功能控制,ZigBee不仅安装复杂,成本高,而且不能连接用户的手机来进行远程控制。WiFi控制则有效地避免了这些问题,它具有速度快,不需要网桥就可以接人到互联网的特性,并且可以通过将各种通信终端以无线方式互相连接,形成网络,与手机进行通信。在现如今智能手机飞速发展的时代,以WiFi来远程控制智能家居已经成为研究设计的重要方向。本文基于Raspberry Pi和Ardunio的WiFi无线终端系统,實现在WiFi信号热点[1-2]区域,以语音、手机APP对智能家居进行远程控制。该设计将WiFi技术与智能交互相结合开发出具备无线通信的各种智能系统[3-4]。
1 系统总体框架设计
本文系统的整体框架如图1所示。该系统选用Raspberry Pi,Ardunio为核心,各种家居设备以模块化的形式进行统一管理。Raspberry Pi通过Ardunio控制各种家居所对应的驱动设备,该系统中的Raspberry Pi又起到服务器端的作用,一方面用来接收语音控制信号,将其上传到百度云平台进行分析,并将分析结果返回播放,进而通过Ardunio来控制各种家居设备;另一方面用来接收Android手机客户端发送的控制指令,并且根据不同的指令来改变相对应的家居设备。服务器端和客户端之间采用SSH进行数据通信。
另外,为了克服内网与外网之间IP设备无法直接互相传输数据的问题,本文引入了具有外网IP的路由器作为桥梁,起内外网之间访问的通道。首先,手机客户端访问具有外网IP的路由器通过某个固定端口,然后在路由器的配置管理页面设置端口转发,将固定端口的数据转发到Raspberry Pi。所以,手机客户端去访问路由器,路由器再将端口的数据包发给Raspberry Pi,从而完成了Android手机客户端到Raspberry Pi服务器端的数据传输。
2 WiFi无线终端系统设计与系统软件平台
2.1 系统设计
基于Raspberry Pi,Ardunio的WiFi无线终端系统的开发可分为三部分,分别是搭建硬件平台、软件开发平台和设计上层应用程序。
在硬件设计中,要设计各个模块,包括元器件型号的选择,电路原理图的设计,硬件电路正确性的检测。本系统的WiFi终端硬件部分的核心是嵌入式技术,结合实验设备相关资源和功能开发的需要,选择具有64位哈佛结构[5]的一款基于Broadcom BCM2837内核的Cortex A53微处理器和AVR处理器,并且搭建所需要的外部设备,构建系统的硬件开发平台,利用该硬件平台所提供的资源模块,开发出系统所需要的功能。ESP8266 WiFi shield模块[6]与Cortex A53,AVR处理器连接,选用USB无线网卡、TL-WN823N构建无线局域网;人机交互模块采用语音信号或者手机与微处理器通过组网互联;电源模块采用锂电池模块进行独立供电。
在软件设计部分中,又可划分为搭建软件开发平台和设计上层应用程序两个模块。搭建软件开发平台要选择所需要的操作系统(Linux操作系统),对BCM2837内核根据Linux系统的开发要求做相应的配置,包括支持无线网络连接,语音的识别、上传、解析,指令控制等操作;上层应用程序开发是本系统的核心部分,设计开发基于Qt[7]的电源管理客户端程序和网络配置界面客户端程序,从而实现连接无线网络和降低功耗的功能。最后,各模块进行集成调试,将Linux操作系统移植到硬件开发平台上,保证整个系统能够正确运转,以及智能控制家电功能的实现。系统总体开发的流程图见图2。
2.2 系统软件环境搭建
2.2.1 树莓派环境的搭建
Raspberry Pi运行于Linux操作系统下,RaspberryPi没有固态硬盘,所采用的是SD卡。只需要从Rasp-berrv Pi官网下载最新镜像,通过一张烧写Linux镜像的TF卡即可启动Raspberry Pi。使用secure RT登录Linux系统界面如图3所示。
接下来要做的是Raspberry Pi的远程访问。对于远程访问,可以使用两个工具:VNC[8]和XSHELLc9],如图4所示。VNC的特点是不仅可以远程操作,还可以把Raspberry Pi的桌面窗口映射到本地;而XSHELL更为轻便,只提供一个控制终端,应用底层SSH协议,就可以在里面输入命令实现相应控制。
2.2.2 Ardunio环境的搭建
Ardunio相比于51单片机的区别在于,它对底层寄存器的配置进行了封装,提供了非常易用的函数接口以及大量的库。更重要的是Ardunio是开源的,可以清楚地查看底层代码,便于进行学习和研究。Ardunio的开发是基于C语言和C++语言,C语言主要是用于开发上层的模块,下层的库大部分是基于C++开发的。对于环境搭建较为简单,到官网下载Arduino的IDE,下载后打开IDE配置下载器、端口号和板子类型。图5是Arduin-oIDE的下载配置界面。
3 WiFi技术应用
3.1 WiFi技术中智能家居网关
与传统智能家居系统所采用的有线布网方式相比,WiFi技术的应用能够减少布线的麻烦,具有更好的移动性与可拓展性。图6是WiFi在智能家居中组网的示意图。该图主要包括智能家居网关以及若干个无线通信子节点。在智能家居网关上有无线发射模块,每个子节点上都含有一个无线网络接收模块,通过这些无线收发模块,数据就能在网络之间进行传送。其中,WiFi智能家居网关就是室内机,是家庭中一个智能化枢纽,通过智能家居网关上的无线射频模块与各子节点进行通信,实现家居的控制;通过Web网络来控制智能家居网关,从而实现对家居的远程控制。智能家居网关作为智能家居的核心设备,起到整个智能家居网络的管理和协调的作用,同时还要处理多媒体数字音频,视频的解码、不同通信协议之间的转换,通过它实现系统信息的采集、输入、输出、远程控制、联动控制等功能。智能家居网关可以充当机顶盒使用,内容方面与爱奇艺合作,也配有基于安卓的智能系统,可以安装其他软件进行使用。同时,适配智能插座、温湿度感应、燃气报警、智能监控、智能门铃等智能电器,实现物联全家智能设备并统一由手机远程管控。
3.2 智能语音控制
在系统硬件设计中,以Raspberry Pi和Arduino为核心处理器。Raspberry Pi主要负责语音数据的录入、上传、下载;Arduino主要负责接收Raspberry Pi通过串口、网络传来的指令,根据相应的指令做出相应的动作。设计过程为:
1)開启录音,用户下达语音指令,然后判断声音是否超过录音阈值,如果没有超过阈值,则返回录音继续判断;如果超过录音阈值,则开始录音保存。
2) Raspberry Pi通过HTTP协议将录音上传云端,进行解析,判断结果是普通指令还是对话,如果是普通指令,则指令传递给Arduino,进而控制各类家居;如果是对话指令,则把对话传递到图灵云端进行语义解析,进而播放相应的对话语音。智能语音控制的具体软件流程如图7所示。
3.3 手机远程控制及其应用程序
3.3.1 远程控制实现过程
IOT终端设备初次配置时,相应的设备会通过串口转WiFi模块自动组建一个WiFi网络,从而将服务器配置信息和AP写入到终端设备,完成远程设备的登录。当用户加入到该WiFi网络后,会读取终端设备的信息,获取到相应MAC地址[10]、IP地址、端口号等信息,进行系统的初始化。配置信息的写入可通过Smart-config或者手动方式,配置好对应AP信息、工作模式和服务器信息后。终端设备的信息将通过互联网注册到服务器上,从而实现终端设备连接到互联网服务器上。IOT终端设备配置流程图如图8所示。
在手机端远程控制方面,本设计选择Android手机作为实验平台通过RPi-Automation和Raspberry Pi Com-mand手机端APP,实现手机端对树莓派GPIO电平的控制,并且能够实现一键发送预先设置好的指令,来完成负责的操作任务;而且APP具有可编程性,根据需求来修改指令,满足人们的各种需求。通过智能手机端可以远程控制电灯的亮灭、水壶烧水、空调的开启和关闭、窗帘的拉开和关上.从而方便使用者的生活,节约了大量时间,使生活更加智能化。
3.3.2 远程控制应用
1)灯光模块与电水壶模块。开关相当于对Rasp-berry Pi输入信号,所以要使用GPIO的输入功能,即将Ardunio的GPI0 3与继电器S管脚相连,与此同时,将继电器COM接线口与开关的一端相连,NC接线口与开关的另一端相连。在中断方式下编写Python程序。使用时,运行LEDl.py,即可控制灯的亮灭;而电水壶模块的设计是利用GPIO接口来控制电水壶的开启和关闭。当GPIO接口设置为低电平时,则不会执行烧水功能;当GPIO接口设置为高电平时,电水壶开启,内置电阻开始加热,烧水功能开始执行。利用DS18820 T0-92来检测温度,当温度达到100℃时,GPIO接口自动切换为低电平,电水壶自动关闭,烧水功能停止,保温功能自动打开,并开启报警功能,提醒用户水已经烧开。两个模块接收到语音或手机端控制信号时,通过组网的形式,对各模块进行对应控制,进而实现对其功能的控制。
2)空调模块。红外对管包括红外线发射管和接收管。用户通过Android手机发送打开、关闭或者设置相应温度指令时,家庭中的Raspberry Pi接收到控制数据,将对应空调的红外编码数据调至38 kHz的载波上,然后通过红外发射管将调好的信号发射。空调内部设置的红外接收管根据接收到的语音或者Android手机发送的控制信号,解调出对应的控制指令,从而来设定空调的不同工作状态。除上述列举的控制模块之外,还有很多能够远程控制的模块,如窗帘模块、风扇模块、电视模块等,原理上类似。
4 测试结果
基于Raspberry Pi和Ardunio的WiFi无线终端测试主要包括:人机交互模块测试和无线局域网连接测试。人机交互模块测试包括语音交互测试和Android手机触屏点击测试。语音控制时,启动终端,利用端口扫描软件扫描对应的端口,见图9,然后打开XSHELL软件,查看到正常交换的信息,见图10;智能手机控制时,当家居与手机APP成功连接时,可以从智能手机的用户界面看到人机交互的相应的信息,见图11。
在无线局域网模块连接测试时,首先需要将树莓派、Ardunio、智能手机等终端放到WiFi热点区域内,并且要获取到该区域内WiFi热点名称和密码。在WiFi模块配置页面输入对应的名称和密码(名称是mywhite,密码是1234567890),见图12。然后登录,最后通过浏览器实现联网。无线网络配置成功界面见图13。
5 结语
本文研究的WiFi智能远程控制家居系统是一个物联网和人工智能相结合的实例化,充分证明了语音交互控制和智能手机远程控制在实际中的可行性。随着无线网络技术和语音技术的发展,通过组网的形式,实现家居的智能控制是未来家庭生活的发展趋势,它将改变人类的生活方式,解放人类的肢体。
参考文献
[1]贺琨,张立文,宋占伟.基于WiFi通信的嵌入式集装箱数据终端[J]吉林大学学报(信息科学版),2012.30(6):579-584.
HE Kun, ZHAN(; Liwen, SONG Zhanwei. Embedded contain-er data terminal based on WiFi communication [J]. Journal ofJilin University (Information science edition), 2012. 30(6):579-584.
[2]魏学哲,戴海峰,孙泽昌.汽车嵌入式系统开发方法、体系架构和流程[J]同济大学学报(自然科学版),2012, 40(7):1064-1070.
WEI Xuezhe, DAI Haifeng, SUN Zechang. Methodology, ar-chitecture and development flow of automotive embedded sys-tems [J]. Joumal of Tongji University (Natural science),2012. 40(7): 1064-1070.
[3]蒋嘉柔,苏寒松,李婷.基于手机终端无线通信系统的设计与实现[J].电子测量技术,2015( 10):122-130.
JIANG Jiarou, SU Hansong, LI Ting. Design and implementa-tion of wireless communication system based on mobile termi-nal [J]. Electronic measurement technology, 2015( IO): 122 -130.
[4]李祉岐,孙磊,李杰,等.基于桌面云终端的无线即时通信系统设计[J]现代电子技术,2017,40(15):47-51.
LI Zhiqi, SUN Lei. LI Jie, et al.Design of wireless instantmessaging system based on desktop cloud terminal [J]. Modernelectronics technique, 2017. 40(15): 47-51.
[5]何凯成,施慧彬,基于哈佛结构的单周期堆栈处理器设计[J].微电子学与计算机,2013(9):66-70.
HE Kaicheng. SHI Huibin. Harvard structure: based single cy-cle stack processor design [J]. Microelectronics&computer,2013(9):66-70.
[6]范兴隆.ESP8266在智能家居监控系统中的应用[J]单片机与嵌入式系统应用,2016,16(9):52-56.
FAN Xinglong. Application of ESP8266 in intelligent homemonitoring system [J]. Microcontrollers&embedded systems,2016, 16(9):52-56.
[7]向明尚,張志华,潘丽艳.基于Qt的多线程嵌入式系统设计与实现[J]科技与创新,2017(4):11-13.
XIANG Mingshang, ZHANG Zhihua. PAN Liyan. Design andimplementation of multithreaded embedded system based on Qt[J]. Science technology and innovation , 2017( 4) : 11-13.
[8] RODRIGUEZ S D A. LOUREIRO A J, GONZALEZ C F J, etal. Improving the virtualization of rich applications by combin-ing VNC and streaming protocols at the hypervisor layer [J].Software practice & experience, 2016, 46(5) : 625-644.
[9]王金恒 .基于密钥的 SSH安全认证 [J].电脑与电信fn , 2011(8) :41-42.
WANG Jinheng. Key - based SSH security authentication [J].Computer & telecommunication . 2011( 8) : 41-42.
[10] MARTIN J, MAYBERRY T. DONAHUE C. et al. A study ofMAC address randomization in mobile devices and when itfails [J]. Proceedings on privacy enhancing technologies, 2017( 4) : 365-383.
作者简介:李泽山(1994-),男,硕士研究生,研究方向为嵌入式及物联网技术应用。
郭改枝(1968-),女,教授,硕士生导师,研究方向为嵌入式信息处理。