基于MQTT协议的面向老年人陪护的智能语音助手研发
2022-06-24郑健
郑健
(湄洲湾职业技术学院,福建莆田,351119)
0 引言
根据第七次全国人口普查数据显示,2010年至2020年,我国(大陆地区,下同)60岁及以上人口的比重上升了5.44个百分点,65岁及以上人口的比重上升了4.63个百分点。与2000-2010年相比,上述指标的增幅分别提高了2.51和2.72个百分点,表明我国的人口老龄化进程明显处于加速状态[1]。预计到2025年,我国六十岁以上人口将达到3亿,成为超老年型国家[2]。
针对这一些问题作者做了《面向老年人陪护的智能语音助手设计需求调研》,普遍老年人认为越是简单易上手的设备更好,如使用通过智能语音设备如智能音箱或手环直接呼出或简易定位的通讯设备。
1 系统设计概述
该项目参考模型如图1所示,根据物联网系统的四层参考模型设计,在感知层主要设备有无线传感控制器、温湿度传感模块、摄像头及A9G模块,传输层主要根据系统的特点采用有线及无线的传输方式,其中无线传感终端主要采用WIFI的方法接入,无线通讯终端使用GPRS的方式接入,其协议使用MQTT协议进行通讯。在平台层上主要由微信小程序、物联网设备管理平台、EMQ平台及树莓派的语音识别系统组成,并由此支撑及服务语音识别、合成等诸多应用。
图1 系统参考模型图
硬件设计方面:采用目前主流的开源硬件,主要采用树莓派、Arduino、ESP系列芯片组开发板,使用DHT11及A9G模块等做为感知终端采集现场环境及GPS等位置信息。
软件设计方面:基于树莓派的语音识别系统采用Python,其支持、融合度高;物联网接入平台使用Thinkphp架构底层设计,它是国内一款免费开源的快速简单的面向对象的轻量级 PHP 开发框架,通过 THINKPHP 使用,极大减轻了开发的工作量,可进行快速的基础平台部署及二次开发[3]。
通讯协议方面:采用物联网平台及终端主流的MQTT (Message Queuing Telemetry Transport,消息队列遥测传输协议)协议,它是由IBM公司提出的一种轻量级的消息发布和订阅(publish/subscribe)方式的交换协议,其包含了MQTT消息代理服务器、发布者及订阅者[4]。MQTT较CoAP在传输模式上更为灵活[5],故课题采用MQTT方式。
2 语音识别系统开发
该系统功能设计如图2所示,主要基于树莓派(Raspbian 系统)、Python、HTML5、PHP、微信小程序设计的一款符合老年人使用的智能语音系统,系统主要包括:语音唤醒、语音识别、语音合成、智能互动、插件式功能扩展等交互功能。
图2 系统功能设计图
前端显示系统采用HTML+CSS+DIV页面布局技术,JavaScript(简称:JS)脚本语言技术、JQuery(简称JQ)JavaScript库技术,其它前端与系统Python的通讯主要分为被动显示和主动请求两种。其中被动显示为了达到实时性,采用WebSocket方式实现,主动请求是采用直接调用Python程序方式显示。
整体设计架构上支持应用程序、网页、微信小程序及移动端的开发接入。系统采用多进程消息队列管理模式运行,各模块和插件均为独立进程运行互不干扰。进程间采用消息通知方式通信。
系统预留语音唤醒、识别、合成、屏幕控制、微信小程序等通信接口,在后期的插件及功能扩展方面可以根据需要,如老年人的其它语音陪护需要可以定制高耦合的功能插件,实现功能的灵活扩展。
3 物联网接入平台开发
该 平 台 基 于LAMP【Linux+Apache+Mysql+PHP】环境进行开发,基于ThinkPhp5.0架构,内嵌百度地图API,主要分为物联网设备统计看板、设备告警管理、触发器管理、物联网设备管理、用户管理、系统管理等功能,具体设计如图3所示。
图3 物联网接入系统功能设计图
系统平台具有多点数据采集、多点实时监控、数据分析与数据维护等功能。数据采集完成整个数据链上各个环节的数据建立和数据采集;实时监控进行全程动态数据、现场环境参数进行监控;数据分析与数据维护负责对历史数据进行分析和系统相关信息维护。
数据库在建构时体现通用性、灵活性、扩展性的特点,在整个数据链上保证数据的完整性、最终产品的唯一性及可靠性是关键,也是整个系统平台的基础。
4 无线传感终端硬件设计
无线传感终端硬件设计电路图如图4所示,其功能主要是进行现场温湿度数据采集及开关量设置的控制,其主控芯片采用NodeMcu,其WIFI支持STA、AP、STA+AP工作模式,该芯片集成度高,内部集成有32位的微型处理器、标准数字外设接口、电源管理模块等[6-7]。它使用Lua脚本语言编程。该平台基于eLua 开源项目,底层使用ESP8266 sdk 0.9.5版本,其IO接口比较丰富,能较好适用于多节点传输的需要。温湿度传感器采用DHT11,DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度±5%RH,温度±2℃,量程湿度5~95%RH, 温度-20℃~+60℃,能较好满足测量的要求。开关量的控制使用LED来进行模拟,使用一个电阻进行限流。
图4 无线传感终端设计原理图
5 无线通讯终端硬件设计
该通讯终端设计原理图如图5所示,其在硬件上主要采用安信可公司的A9G模块。其中A9G模块是一个完整的四频(GSM/GPRS+GPRS/GPS)模块,其支持数字音频和模拟音频,支持HR,FR,EFR,AMR语音编码;同时该模块功耗低,平均电流在2mA以下(开机后默认状态的基底均值为8.8mA),其具备基础的电话/短信,GPRS联网通信,GPS/BDS双模定位功能[8]。
图5 无线通讯终端设计原理图
A9G芯片模块需要5V和4.2V两种电源电压供电,主电源是采用5V的USB供电,5V的USB电源在为A9G芯片供电的同时也为A9G的锂电池提供充电能源,充电电路采用具有恒压恒流的锂电池充电模块TP4057芯片,其具有电流监控、电池极性保护、欠压保护、自动再充电等功能,是一款专用的铝电池充电模块,当电池两端电压达到4.2V时,其充电电流将自动降至设定值的1/10,芯片将停止充电。当5V的USB充电电源切断,TP4057芯片也会自动调整为低电流状态,其漏电流小于2μA。A9G芯片的SIM模块采用内部电源供电,供电电压为1.8V。
A9G芯片的语音输出电路如图6所示,电路由扬声器和三个瓷片电容构成,扬声器用来将电信号转化为声音信号,三个瓷片电容用于滤除高频干扰小信号,保证输出的声音信号清晰。
图6 A9G 开发板语音输出电路图
6 通讯协议设计
MQTT协议并未明确规定主题中数据的格式。JSON是一种易于读写的轻量级数据表示格式,使用文本来表示JavaScript对象的信息,被广泛用在数据采集中[9]。由于JSON轻量易读,结构清晰,可以在多种语言之间进行交换,数据传输效 率明显优于其他数据传输格式[10],所以主题中数据内容一般使用JSON 格式。在本项目中使用MQTT协议进行发布终端DHT11采集的温湿度数据并在微信小程序端订阅该信息及GPS的相关定位数据。其主要使用Connect(连接)、Subscrible(订阅)、Publish(推送)方法进行,其消息封装在Payload中。
AT+MQTTCONN="8.*.33.202",1883,"Nano-A9g",120,0,"bl*d","1*" //客户端等待和连接服务器,同时发送CONNECT
AT+MQTTPUB="ledStatus","v1",0,0,0
//客户端向服务端传输一个应用消息中间的1为LED状态值
+MQTTPUBLISH: 1, test, 6, 124563
AT+MQTTSUB="ledStatus",1,0
//客户端向服务端发送SUB报文用于创建订阅
7 结语
智能语音做作为智能家居的一个重要载体在智能音箱上广泛应用,通过MQTT协议的支持,可以更好实现语音助手的相关功能。经过相关测试,系统的研发对于MQTT协议及物联网设备接入平台在物联网技术中的应用也具有良好的示范作用。对于轻量化、数据量小、实时传输的数据,可以做为传统的NB-IOT及LoRa技术的一种有效补充,解决信号覆盖,基站建设等大投入问题。该系统的建设对智能化家居的管控、系统的建设等具备参考价值。