基于Arduino的智能家居语音控制及能源管理系统设计*
2020-01-18贾晓宝毕玉洁姚卫丰谭凌峰刘鹏程
贾晓宝,毕玉洁,姚卫丰,谭凌峰,刘鹏程
基于Arduino的智能家居语音控制及能源管理系统设计*
贾晓宝1,毕玉洁1,姚卫丰1,谭凌峰1,刘鹏程2
(1.深圳职业技术学院 机电工程学院,广东 深圳 518055;2. 深圳市腾讯计算机系统有限公司,广东 深圳 518055)
文章设计了基于Arduino的智能家居语音控制及能源管理系统,系统主要由主控制器模块、语音识别模块、液晶显示模块、继电器组模块及电源模块等组成.通过非特定人语音识别技术,系统可根据用户口令控制相关电气动作,监测家庭或者整个建筑物设备的耗电量、人员活动状态、家居环境等参数,并将各类参数在液晶屏模块实时显示,也可将参数作为数据源为第三方平台提供数据服务.
Arduino;开源;非特定人语音识别;室内环境
艾瑞咨询在其2018年中国智能家居行业研究报告中指出:物联网、云计算和人工智能是智能家居领域的三大关键技术[1].金基环境智能研究机构进一步指出,智能家居有望在听觉、视觉及触觉等多层面具备主动观察和感知能力[2].将语音识别这项新技术与传统的智能家居电气控制系统相结合,可以让语言成为人类和智能家居系统沟通的桥梁,使人类的日常家居生活变得更加便捷、舒适与节能.文献[3]实现了语音与玩具娃娃的简单对话,文献[4]通过语音识别实现对电灯、风扇、窗帘的控制,文献[5]对智能家居能耗管理系统的背景、组成与趋势进行了深入分析,文献[6]结合环境参数、设备状态从深度学习的角度设计了一种智能家居管控模型.本研究结合语音识别技术、室内环境参数采集、电量参数采集以及节能控制策略,从标准、开放与节能的角度出发设计了基于开源硬件Arduino的智能家居语音控制及能源管理系统.
1 系统结构
1.1 系统工作原理
基于Arduino的智能家居语音控制及能源管理系统采用非特定人语音识别技术,通过MIC采集人的自然语言,输入语音识别模块后实施频谱分析与语音特征的提取,并将识别的语音转换成特定的字符串经SPI串行总线接口传输给微控制器.微控制器将接收的字符串与其预定义好的关键词语列表中的关键词语进行匹配,若匹配成功则微控制器通过继电器模块执行相应动作,否则微控制器视接收到的字符串为无效信息或干扰信息,不执行任何操作.同时,微控制器通过数字输入端口接收来自人体红外传感模块、温湿度传感模块的信息,系统自动判断是否有人在房间,当房间内无人的时长超过系统设定阈值时及时停止用电设备,达到节约能耗的目的;通过模拟输入端口采集用电设备的电流值,计算设备的耗电量.微控制器将采集的温湿度、电量、人员状态信息通过I2C通信方式实时显示在液晶显示模块上,便于人们及时了解各用电设备的耗电量及室内环境状况,加强人们的节能意识.系统设计原理图如图1所示.
1.2 系统硬件构成及电路设计
微控制器是控制系统的核心,系统基于开源硬件平台Arduino UNO进行设计开发.Arduino UNO基于ATmega328P的单片机开发板,具有14路数字输入输出,6路模拟输入,1路UART接口,非常适合小型的输入输出接口控制的对象[7].
图1 基于Arduino智能家居语音控制及能源管理系统原理图
语音识别模块采用LD3320芯片,非特定人语音识别技术,可离线识别[8].该芯片的工作电源电压为3.3V,采用SPI的通讯方式接口,可与Arduino对应的SPI管脚直接连接即可,接线相对简单[9].此外,SPI接口传输协议简单,数据的传输速率高,语音识别模块与微控制器通过该接口通讯,具有较强的实时性.从语音识别到微控制器执行相关动作,使用者不会感觉到时延的存在.
为了使该控制系统功能更加完善,使用更人性化,系统硬件配置了室内环境感知与采集模块、人员移动探测、电器电量采集等传感器、LCD液晶显示器等辅助设备.温湿度传感模块DHT11是一款含有已校准的数字信号输出的温湿度复合传感器[10],与微控制器Arduino单总线接口通讯.电流互感器(CT Sensor)是测量交流电流(AC)的传感器,系统设计开合式电流互感器结构,尤其对已正常供电的建筑物,不用断电就可完成传感器及系统的安装[11].电流采集电路设计一33Ω的负载电阻,将互感器二次线圈输出交流电流转换为范围[-2.333,2.333]伏交流电压;同时设计一组由2只10kΩ电阻和一只10μF电容构成的偏置电路,将负载电阻的电压变化范围提升到适合微控制器采集计算的电压范围.液晶显示模块选择16*2的LCD显示器并且采用了RGB的背光灯,可以使显示屏显示出不同的颜色,液晶显示模块与微控制器通过I2C方式通信[12].详细电路设计图如图2所示.
2 系统软件设计
系统软件程序包括初始化程序、语音识别程序、参数采集显示程序3个部分.初始化程序主要包括对Arduino控制板的引脚形式的初始化、相关库函数的加载、语音识别模块的初始化以及波特率的设置等.语音识别程序主要是判断输入的语音字符是否符合关键列表中定义的语音,根据具体的语音口令执行相关操作.参数采集显示程序主要是在定义引脚的基础上,采集计算不同的参数并且显示在LCD屏.软件工作流程图如图3所示.
2.1 系统初始化
初始化主要通过 void setup()函数完成[13],其目的是加载相关库函数、设置波特率、常量定义等,为系统做一些基本的初始化工作.在该系统控制的软件实现过程中,初始化主要由4部分组成:Arduino控制板的引脚状态的初始化、波特率的设置、LD3320语音模块的初始化以及LCD液晶屏的初始化.1)引脚状态初始化通过pinMode函数来完成,初始化程序需完成:定义A1~A3引脚为三路电量采集通道;定义D0~D3为三路输出控制继电器组模块通道;定义D6、D8引脚分别为采集温湿度与人体感应状态.2)波特率作为该系统与第三方软件平台信号传输速率的一种量度,通过调用串口函数将系统波特率定义为9600[14].3)语音识别模块LD3320 通过SPI方式与 Arduino 控制板通信,在初始化芯片的SPI通讯方式前必须加入库函数ld3320.h,通过Voice.ini()来实现[15].4)LCD屏的初始化是通过begin()函数来实现的,该函数有2个参数,第一个参数指列,表示LCD的列数;第二个参数指行,表示LCD的行数.具体程序如图4所示.
图2 设计电路图
图3 软件工作流程图
图4 系统初始化程序树状图
2.2 语音识别程序与参数采集显示程序
语音识别与参数采集显示程序主要是通过void loop()函数完成.void loop()函数是一个循环函数,软件会循环运行这个函数内的程序.
语音识别程序由3部分组成:设置关键指令的内容和参数,识别指令,识别条件以及根据识别的结果输出状态.1)设置指令内容和参数主要是通过函数Voice.addCommand()来完成,这个函数包含两个参数,第一个是指令内容,设置LD3320识别的关键词语,第二个参数是给关键词语排序.2)开始识别指令时通过Voice.start()函数完成的,该函数在系统上电后运行,执行该函数LD3320会无限循环识别周围环境的声音.3)因为对识别的精度要求比较高,所以采取的识别模式为触发识别,当按钮的状态为HIGH,LD3320会开始识别环境的声音.
参数采集显示程序由3部分构成:定义引脚、采集参数与显示参数.1)定义各参数采集的物理引脚,如电流传感器的引脚定义是由emon1.current()函数完成的,这函数包含两个参数,第一个为引脚参数,是模拟量引脚,第二个参数为电流传感器互感器的量程.2)显示参数是通过函数lcd.print()实现的,采集到的参数数据会显示在LCD屏.语音识别与参数采集显示程序树状图如图5所示.
图5 语音识别与参数采集显示程序树状图
3 应 用
按照上述思想,设计的智能家居语音控制器及能源管理系统实验板如图6所示.为了便于测试系统及验证参数采集的准确性,该实验板安装在深圳职业技术学院建筑智能化工程楼宇自动化实训室,该实训室配置三路照明回路,格力立式空调KFR-72LW 2台,实训电脑21台.系统主要实现功能包括:一路照明回路和1台空调的语音开关控制;室内人员状态与温湿度参数检测;回路实时电流采集,由于照明回路电流较小,空调是大耗能设备,因此系统测试采集其中1台立式空调的实时电流,互感器安装如图7所示;系统通过串口将所采集的数据源提供给楼宇集成第三方平台集成显示.系统经1个月的不间断测试运行稳定可靠.
图6 系统测试实验板
图7 互感器安装位置
需要说明的是系统为基础阶段,节能控制的算法较为简单,空调的开启除了语音启动供电外,还必须使用空调专属遥控器方可真正运行,后期将从提高语音识别的精度与范围,循环神经网络控制算法等方面提高系统的稳定性和节能效果.
[1] 艾瑞研究院.中国智能家居行业研究报告(2018年)[R].上海:上海艾瑞市场咨询有限公司,2018.
[2] 金基环境智能.人工智能加持下的智能家居行业现状[EB/OL].[2019-04-06].http://www.hn-ami.com/mobile/ArticleDetail-I444.html.
[3] 王富中.基于语音识别技术的智能控制系统设计[J].自动化与仪表,2006(4):8-10.
[4] 王磊.智能语音控制系统的设计与实现[J].计算机测量与技术,2018,26(2):109-122.
[5] Yuanyuan liu Bo-Qiu. review of samrt home energy management system[J]., 2016,104:504-508.
[6] 毛博,徐恪,等.一种基于深度学习的智能家居管控模型[J].计算机学报,2017,40(8):1-15.
[7] Akram syed ali Zachary-Zanzinger. A low cost arduino- based platform for long-term indoor environmental data collection[J]., 2016,100(2):114-126.
[8] 洪家平.LD3320的嵌入式语音识别系统的应用[J].单片机与嵌入式系统应用,2012(2):47-49,53.
[9] Icroute.LD3320数据手册[M].上海:ICRoute公司,2018:3-5.
[10] Aosong.DHT11温湿度模块开发手册[M].广州:奥松电子公司,2018:1-5.
[11] Yhdc.SCT006电流互感器开发手册[EB/OL].河北:耀华德昌.[2017-07-07].http://www.yhdc.com/product 1393.html.
[12] Seeed technology co. Ltd. Grove-LCD RGB Backlight [EB/OL]. [2018-02-15]. http://wiki.seeedstudio.com/cn/ Grove-LCD_RGB_Backlight/.
[13] Fund Arduino. Arduino IDE User Manual[EB/OL]. [2017-03-22]. https://www.arduino.cc/en/Main/Software.
[14] 周骑.面向家庭的无线移动视频监护系统[D].北京:北京交通大学,2015.
[15] Icroute公司.LD3320开发手册[M].上海:Icroute公司,2018:11-19.
Design of Smart Home Voice Control and Energy Management System Based on Arduino Micro-Controller
JIA Xiaobao1, BI Yujie1, YAO Weifeng1, TAN Lingfeng1, LIU Pengcheng2
()
In this paper, a smart home voice control and energy management system based on Arduino micro-controller is designed. The system is mainly composed of micro-controller, voice recognition, LCD display, switch groups and power module. Via speaker-independent automatic speech recognition technology, the system can control domestic appliances and measure a number of important parameters in a house, such as electricity (electric power consumption), human presence, and indoor environment. The system can also display those parameters on LCD screen and supply service for the third platform as a data source.
Arduino; open source; speaker-independent automatic speech recognition; indoor environment
2019-05-23
深圳职业技术学院自然科学基金资助项目(601822K21027)
贾晓宝,男,陕西人,硕士,讲师,研究方向为建筑智能化控制技术.
TP273
A
1672-0318(2020)01-0023-06
10.13899/j.cnki.szptxb.2020.01.004