一种基于安卓与云平台的智能家居系统设计
2021-04-20黄兴李文金苏凯雄
黄兴 李文金 苏凯雄
摘要:针对传统智能家居系统安装复杂、功能单一、携带性差等问题,提出了一种基于安卓和云服务技术的智能家居系统设计方案。该系统以Arduino Mega2560控器作为硬件平台,实现对室内各电器设备的控制和数据采集。手机App采用低功耗蓝牙与硬件平台进行数据和指令交互,通过使用手机App可实现对室内电器设备的智能控制。PC端云服务器将手机App上传的室内环境信息保存在数据库中,以供查询和管理。实验结果表明,该系统操作方便、携带性好,能较好地实现对室内家居设备的智能控制。
关键词:安卓;语音识别;人脸识别;低功耗蓝牙;云服务
中图分类号:TP273 文献标识码:A
文章编号:1009-3044(2021)07-0005-04
Abstract: Aiming at the problems of traditional smart home system complex installation, single function, poor portability, etc. a smart home system design scheme based on Android and cloud service technology is proposed. The system uses the Arduino Mega2560 controller as the hardware platform to realize the control and data acquisition of various indoor electrical equipment. The mobile phone App uses low-power Bluetooth to interact with the hardware platform for data and instructions, and intelligent control of indoor electrical equipment can be realized by using the mobile phone App. The PC cloud server saves the indoor environment information uploaded by the mobile App in the database for query and management. The experimental results show that the system is easy to operate, portable, and can better realize the intelligent control of indoor household equipment.
Key words: Android; voice recognition; face recognition; Bluetooth low energy; cloud service
随着科技的发展和人们生活水平的提高,用户对于家居环境和生活质量也有了更高的要求。目前,传统[1]的智能家居控制系统一般通过有线方式组建并且通过PC控制,这种方式通常需要部署很多线缆,便携性也很差。基于以上事实,本文设计了一款基于安卓与云平台的智能家居系统。该系统采用低功耗蓝牙和4G网络等无线通信技术进行数据交互,这有效弥补了传统家居系统布线复杂和携带性差这一弊端。另外,基于安卓系统开发的手机App集成了百度AI识别与讯飞语音识别模块,通过使用该App不仅能够实现对室内设备的智能控制,而且能够将采集的室内环境信息实时上传至云服务器,实现对室内状况的运程监测。
1 系统总体设计方案
本文智能家居系统总体框图如图1所示,该智能家居系统包括三大部分:室內硬件控制终端、手机App、PC端云服务器。其中,室内硬件控制终端主要完成对室内各电器设备和传感器模块的控制和管理。手机App通过与硬件控制终端进行蓝牙连接可将用户的按键指令、手势指令、和人脸识别校验结果发送给主控终端。PC端云服务器通过HTTP协议与手机App进行通信,并将手机上传的数据展示在Web前端网页以供查询。
2 硬件系统设计方法
本文智能家居系统的硬件部分包括:ArduinoMega2560控制器、舵机门模块、电灯模块、MQ-135气体传感器模块、DY-SWV17F语音播报模块、DHT11温湿度模块、HC-08蓝牙BLE 4.0模块、OLED显示模块以及电源模块。
2.1 硬件主控平台设计
硬件主控板采用的是Arduino Mega2560[2]型,相较于其他型号的Arduino控制器,它提供了更多I/O口与更大运算储存空间。控制器的开发环境为Arduino IDE软件,该软件采用C语言进行驱动程序的开发并集成了丰富的系统类库,由于系统类库采用C++语言进行封装,只需要在程序中添加相应的头文件即可调用库函数来驱动硬件模块。
2.2温湿度模块设计
温湿度模块采用DHT11[3]温湿度传感器实时监测室内环境状态,并将采集的数据显示在OLED液晶屏。DHT11具有品质卓越、超快响应、抗干扰能力强等优点,模块数据通信方式采用单总线串行通信,信号传输距离可达20米,模块原理图如图2所示:
2.3蓝牙模块设计
本系统蓝牙通信采用HC-08蓝牙4.0 串口模块,该模块基于Bluetooth Specification V4.0 蓝牙低功耗(Bluetooth Low Energy,BLE)协议,它支持数据透传,采用广播模式,通信距离可达80米。本模块与手机透传无需配对码,只需手机上安装有BLE蓝牙模块的App即可进行数据收发,模块与手机通信连接如图3所示:
2.4语音模块设计
DY-SV17F语音模块集成了IO分段触发、串口控制和one-line单总线控制模式,它支持播放MP3等常见音频格式文件。由于本模块板载5瓦 D类功放,可直接驱动4~8欧的小喇叭,并且该模块集成了4Mbte flash 可以用来存储音频文件。本文采用了IO触发方式进行音频的选曲播放,该方式通过单片机控制8个IO口可实现0-255首歌曲的选择。由于IO触发方式为低电平有效,为此本模块通过上拉电阻把IO口电平默认置高,模块电路图如图4所示:
3 软件系统设计方法
本系统的软件设计主要包括:控制器驱动程序设计、手机客户端程序设计和PC端云服务器设计三个部分。
3.1 控制器驱动程序设计
控制器驱动程序采用C语言进行开发,它主要负责接收手机端的蓝牙指令,并根据指令内容驱动相应硬件设备进行工作,程序流程图如图5所示:
3.2 手机客户端程序设计
手机客户端分为主界面和各模块界面,软件主界面如图6所示:
主界面UI布局采用安卓GridView控件进行布局内容的显示,该控件需在逻辑控制代码文件中进行获取,然后创建一个HashMap列表对象存放键值对信息,再将该列表对象传入SimpleAdapter对象中进行显示内容的适配。
3.2.1风扇和电灯控制模块设计
本文风扇控制模块支持的功能有:一键开关、定时启动和关闭、手动模式、自动模式、休眠模式。其中,手动模式下用户通过软件的数字挡位按钮可以手动调节风扇转速。在自动模式下,手机App采用PID(Proportion Integration Differentiation)算法对风扇转速进行调节,该算法通过监听蓝牙串口回传的环境信息实时监测当前环境温度,然后,再根据当前温度值大小自动给风扇模块发送PWM(Pulse width modulation)数据,实现自动温控。本文电灯控制模块主要实现电灯的一键开关和模拟调光操作。其中,模拟调光操作实现原理为:当用户滑动电灯界面滑动条时,会触发控件的滑动事件监听器,然后通过监听器回调函数给主控设备发送PWM占空比数据,从而实现模拟调光操作。风扇控制界面和电灯控制界面下图所示:
3.2.2环境监测模块设计
安卓客户端软件环境监测模块实现原理如下:首先,软件后台线程会实时监听蓝牙串口数据并将该数据送入串口缓冲区。然后,当用户点击相应按钮后,该程序将从缓冲区中提取数据并判断数据报文头的类型。最后,程序根据数据报文头的类型调用对应环境数据的显示函数并在控制界面上进行显示。由于用户点击事件去处理串口数据是在子线程中完成,而安卓系统的线程是不安全的[4],即子线程中不能更改UI线程内容。为了实现环境数据的正确显示,软件控制代码必须先创建一个Handler对象,再通过该对象获取Message对象,最后把环境数据存入Message对象中发送出去,以达到间接更改UI线程内容的效果。另外,本客户端软件除了可以在手机端查询室内环境数据,它还能过通过HTTP协议给远程云服务器发送POST请求,远程服务器接受到手机端请求后可以将上传的环境数据进行保存以供用户查询。环境监测模块App界面如下图所示:
3.2.3串口报文格式设计。
由于手机App与硬件主控平台之间所有的控制指令和采集的环境数据都是通过蓝牙串口进行收发,为此手机端和控制器模块必须能够识别自身所要的数据类型,然后再从串口缓存区中筛选所需数据。为了达到这一要求,App软件为每个模块的数据设置不同的数据头[5],这些数据头由“$”,“#”,“*”等符号构成。接收器只需从所有串口数据中筛选出包含对应数据头的报文,然后再将报文头信息和检验信息进行剔除后[6]即可得到报文内容数据。串口数据处理流程如图10:
3.2.4语音識别算法实现
语音识别技术是人机交互的新形式的体现,通过对语音信号的加工处理、特征提取、模板匹配等步骤,最终转化为机器语言,使被控设备能按照人的语音指令进行操作。
本文App软件语音识别算法采用讯飞语音[7]开发平台提供的第三方软件开发工具包(Software Development Kit,SDK),用户根据需求选择相应的API(Application Program Interface)接口以实现用户语音的识别。App软件后台线程可将识别的结果转换为文本字符串,并采用UTF-8格式对字符串进行编码,最后将文本指令送入蓝牙发送线程进行发送。语音识别算法实现流程图如图11所示:
3.2.5人脸识别和手势识别算法实现
在本客户端软件中,人脸识别算法[8]用于人脸门禁操作。当用户需进入室内时,可以打开手机客户端软件在线拍摄一张人脸图片也可以从手机相册中选择一张人脸图片。如果该人脸信息之前未进行注册,则手机端会提示该人脸信息错误,此时门禁系统将不会打开大门。本文手势识别算法[9]用于手势指令控制,用户可以把软件默认的24种手势设置为控制指令,当用户需要进行手势控制时,只需打开手机摄像头获取一张手势图片即可实现对各电器设备的手势控制。算法程序流程图如图12所示:
3.3 PC端云服务器实现方法
本文系统服务器采用B/S架构[10],并结合模型视图控制器(model view controller,MVC)模型的构建方案对系统进行分层设计。整个服务器工程部署在阿里云服务器,用户只需在浏览器输入网页地址即可访问。该服务器Web静态页面采用html5和ccs3技术进行开发,并结合当前主流的Vue和bootstrap前端框架实现页面的动态响应。该服务器系统可以同时在PC端、移动端、i OS设备、安卓设备上运行,即实现一套代码跨平台、跨设备和跨系统的操作,大大节约了开发和维护成本。
本文Web前端网页管理界面设计分为三大主要模块:用戶登录、个人中心,数据统计。用户登录模块主要完成用户信息的鉴权操作,只有成功登录的用户才能对系统进行管理。个人中心模块的功能是查看和更改用户个人信息。数据统计模块完成的功能是对上报的环境数据进行可视化展示,该模块可以以折线图、柱状图以及数据表的形式展示环境数据。
4结论
智能家居系统是人工智能应用的一个分支,符合未来居家系统的发展趋势。本文设计了一款基于安卓与云平台的智能家居系统,为用户提供了人性化的交互应用体验。该系统具有操作简单、方便携带等特点。其中,主控设备与安卓客户端采用蓝牙通信方式进行交互,解决了传统家居系统布线复杂、安装困难等问题。针对指令和回传数据共用串口问题,采用协议头机制对报文进行分发。另外,为了实现对室内环境信息远程可视化管理,采用PC端云服务器对室内环境信息进行存储和管理,用户可以在PC端观测室内环境变化,也可以通过手机4G网络访问服务器进行查看。最后,针对传统家居系统功能单一等问题,通过在手机App上集成百度AI识别和讯飞语音识别技术丰富用户的交互体验。
参考文献:
[1] 徐宏宇, 程武, 张博. 基于ARM和Android的智能家居控制系统设计[J]. 微型机与应用,2017, 36(3):29-32.
[2] 崔阳, 张维华, 白云峰. 一种基于Arduino的智能家居控制系统[J]. 电子技术应用, 2014, 40(4):123-125.
[3] 李长有, 王文华. 基于DHT11温湿度测控系统设计[J]. 机床与液压, 2013, 41(13):107-108.
[4] 郭霖.第一行代码[M].北京:人民邮电出版社,2014.
[5] 富新辉, 余之喜, 苏凯雄. 基于BLE北斗便携终端的安卓系统设计[J]. 微型机与应用, 2017(7).
[6] 朱洪涛, 李江明, 王志勇. 一种基于蓝牙串口模块的数据处理算法[J]. 实验室研究与探索,2013, 32(11):93-96.
[7] 黄贤立, 罗冬梅. 基于讯飞语音技术的智能家居控制App设计[J]. 福建电脑, 2016, 32(8):112-112,145.
[8] 顾德喜, 李贵霖, 时祥凯,等. 基于百度AI开放平台的人脸识别门禁系统[J]. 单片机与嵌入式系统应用, 2019, 19(6):33-36.
[9] 刘长坤,符志强,李舒怡,等.基于手势识别的智能控制系统的设计与实现[J].电脑知识与技术,2020,16(16):9-10.
【通联编辑:梁书】