董晨乐,杨延宁,2,朱 扬
(1.延安大学 物理与电子信息学院,陕西 延安 716000;2.南昌理工学院,南昌 330044)
2020年“新冠”病毒的传播剧烈引起人们的很大关注。针对人们当前的迫切需求和生活的便利性。为防止病毒的广泛传播,疫情期间,出入公共电梯,民众采取了许多方式,比如在按键上粘上一层厚厚的纸,使用牙膏和门钥匙或者湿巾手纸。在已建立的行业与掌握的电子技术基础上。针对上面所提到的问题,研究并设计了一款利用人脸检测、语音识别与合成、智能化显示、NFC近场通信等关键技术,针对疫情防控、智能控制、电梯监控等提供一整套解决方案并设计了一套完整的控制系统。“病毒无情人有爱”,在目前爆发严重的疫情防控特殊环境中,制造一款智慧的自动化电梯具备非凡的意义,面对疫情带来的无接触的潜在需求,该项目采用多个控制方案,人脸面部检测和语音识别等其他诸多项目,以取代传统采用手动按钮的电梯,即可摆脱疫情带来的接触感染、为群众生活带来许多便利,并且在防止病毒威胁的情况下,还可以更好地为老人,儿童和残疾人提供更好的服务。在该领域进行深入研究对于家庭、社区和社会民生工作的开展具有重要价值[1-3]。
目前市场上有一些电梯具有语音功能,但只支持语音朗读相关信息和播报楼层,即当电梯到达指定楼层提醒乘客具体到达的楼层。仅在升降机外部添加一个感应模块,并不具备实用性和便利性。结合当下行业的发展趋势及存在的问题,通过撰写研究课题步骤及方法,以论证所要得出的研究成果和所要展示的形式[4]。
该论文的目标是实现电梯系统所有模块在Linux开发板树莓派4B(Raspberry-Pi 4B)上稳定运行;实现Baidu_Net、Home-Kit、Home-Assistant所有的传感器的稳定运行;并使系统所有代码可零成本快速打包迁移和部署;开发并完成智慧电梯实物模型一套。针对软件控制,开发了对应的安卓APK软件包和HTML5、CSS网页控制系统。
基于传统的电梯控制方案中存在的诸多的待解决问题,急切能够完成电梯轿厢自动控制的装置。区别于传统方案,应该采用哪种控制方案。主要提出了以下4种控制方式[5]。
1)与传统的电梯一样,采用带有详细的楼层信息的物理开关或按键检测来控制电梯到达对应的楼层位置。
2)在数据库提前存储用户的人脸信息和其所对应的楼层编号信息,之后利用人脸搜索技术,来对目标用户的人脸进行读取和检测,将获取到当前用户对应的楼层信息来向Raspberry-Pi的GPIO口下达高低电平指令驱动步进电机带动电梯轿厢前往指定楼层。
3)针对陌生的用户群体非本栋楼层的用户或没有提前录取到人脸信息,可以对电梯下达语音指令来进行其设备的控制。
4)手机用户采用NFC控制芯片,电梯控制实现真正的零接触,将指令通过自己的手机直接进行下发传达来控制Raspberry-Pi的GPIO,这里的NFC控制方案区别于传统的“门禁卡”用户可以直接用手机内置的NFC芯片来进行通信。智慧电梯总体方案设计逻辑如图1所示[6]。
图1 智慧电梯总体方案设计逻辑
利用局域网环境搭建起HTML5网页,打开HTTP服务器的监控功能。使用Linux终端定义两个路由,定义一个POST的类,第一个路由的作用就是扔给浏览器一个HTML文档后再从中读取index数据模板,发送至客户端服务器。针对第二个路由函数,使用Python调用Bottle的Run函数方法创建一个HTTP服务器,使其通过浏览器访问的界面。针对客户端(控制界面)引用jQuery和Bootstrap这两个前端框架,这样就完整的实现和Raspberry-Pi之间的网络通信[7]。
在基于Python3的开源家庭的自动化平台上。采用HASS类似于“智能家居”的环境部署方案,来进行对Raspberry-Pi的远程控制。Hass.io是一个专为集成操作,s将电梯控制系统与Hass.io和Docker集成在一起,用以简化Home-Assistant配置。
结合iOS终端的自动化和快捷指令程序进行更高复杂度的编程设计。摄像头将图像捕捉之后,利用互联网云市场上第三方的API接口来完成对采集到人脸进行数据分析与处理。
采用装载Linux微型操作系统Raspberry-Pi的开发板为主要控制器,作为通用微型计算机,拥有特殊的硬件性能、信号绝缘,低功耗等特点。可拓展USB摄像机或帧接口摄像头。
在Raspberry-Pi 4B的内部,设置的传输模块有Wi-Fi和蓝牙等,Raspberry-Pi的操作方式主要有两种,一种是图形界面操作,一种是命令行模式。这里使用Wi-Fi传输协议来进行所有数据收发和处理。内部硬件设备在远程连接、Windows通信、百度云平台连接均使用Wi-Fi协议,Raspberry-Pi主控板如图2所示[8]。
图2 Raspberry-Pi主控板
采用步进电机的传动装置作为电梯的动力系统来连接模拟电梯轿厢。具有精度高、灵敏度高、启停迅速等特点。在与Raspberry-Pi的连接运行中,步进电机负责对电梯的动力驱动。使用USB麦克风的最显著优势之一是即插即用,不需要其他的驱动。Raspberry-Pi操作系统当接入麦克风会自动检测麦克风驱动程序。在此设计中使用Windows系统的笔记本电脑来和实体世界进行Samba数据交互并将信号发送至Linux开发板。
Samba可以使运行Linux的计算系统能够参与操作其他计算机文件中,与 Microsoft Windows进行相同的网络协议通信,并从Windows客户端的角度作为另一个文件系统在网络上显示。Windows和Linux文件交换如图3所示。
图3 Windows和Linux文件交换
使用步进电机将脉冲信号转换为普通的物理机械运动,并且在使用步进电机时系统是可以不需要额外的数据反馈,即使没有反馈系统,步进电机也可以通过精确的位置控制进行连续旋转就既可以计算出相应的转动角度。针对步进电机的运行机制和特殊基准。除非在运行中产生错误丢失转动步数,否则它的旋转的角度对的系统和程序是已知的。
由于已知电机的旋转位置,因此可以精确地控制电机的位置。这里采用步进电机的传动装置作为电梯的动力系统来连接电梯轿厢。具有精度高、灵敏度高、启动停止迅速等特点。
步进电机的驱动形式主要有两种,在本次设计中采用的是两次相控驱动:这种输出方式的主要转矩特别大并且产生的震动较小。在转换的时候可以有一个通电线圈作为动力输出,这样既可以让它的输出扭矩变大,也可以减少其震动。两次相控驱动可提供更好的运动扭矩。当两相接通时,电动机产生更大的转动扭矩。需注意的是:转矩脉动是一个待解决的问题,因为它可能引起共振和振动导致步进电机不能运行。
针对和Raspberry-Pi的连接,本项目的设计方案主要是采用ULN2003激励作为驱动器,也就是将集成放大器至于电路内部,并且不需要在电路连接中设置其他电容或电阻元件,步进电机驱动板连接如图4所示[9]。
图4 步进电机驱动板连接
树莓派ARM 架构的卡片电脑,可以安装非常多的Linux发行版。Raspberry-Pi官方的操作系统是Raspberry-Pi OS,一共有3个版本,这3个版本都是可以兼容所有的Raspberry-Pi操作系统是一个免费的基于Debian的操作系统,也是最适合Raspberry-Pi设备。Raspberry-Pi OS在操作系统中已经预装了3 500多个常用软件包,其具备完整的Linux操作系统功能,可以很轻松安装在Raspberry-Pi上。Raspberry-Pi操作系统与大多数常见台式机兼容,例如MacOS和Microsoft-Windows。
4.1.1 操作系统选择
访问Raspberry-Pi China的官方网站以下载最新版本的Raspberry File和Photography文件。刻录过程首先选择目的镜像如图5所示。
图5 使用Win32进行系统烧录
当所有的软件连接配置完成之后,启动远程连接软件程序,主要有3种方式可以连接操作系统,这里使用Xshell接入到Raspberry-Pi操作系统中。
4.1.2 Python编译环境的安装
Python作为本次项目设计开发的主要编程语言,在的Linux终端上需直接运行此程序语言,开发环境搭建,访问官方网站https://www.python.org/,下载需要的安装包和在程序设计中的相关依赖即可完成对应操作。
4.1.3 HASS-IO远程控制系统的安装
作为基础框架,本项目利用Docker来部署Home-Assistant,并且为Home-Assistant 提供各种插件(addons)。如此来为在后面和电梯的连接中基本控制器(消毒系统)提供了帮助。而Home-Assistant在Hassio中,Home-Assistant 是利用Docker部署起来,Hassio和Home-Assistant 是通过内置的API进行联系和沟通以连接电梯的控制模块[10]。
4.1.4 百度云SDK的本地化安装
此SDK作为Python的一个第三方附属库,用以连接操作系统和百度云的API数据通信数据的收发。并定义了许多方便调用的子函数。无论是在Linux还是在其他操作系统平台,有了Python编译环境之后,便可以使用shell命令一键安装。
结合身份ID识别、人脸对比、活体检测等多项组合能力。其功能主要包含:人脸注册、人脸识别验证、人脸搜索验证。使用百度云平台来处理系统采集到的语音信息和捕获的人脸数据。
百度云API技术的云端调用时,官方提供有许多程序命令的DEMO,系统使用Python的JSON函数包去请求百度云服务器等待其参数结果的返回。API的接口程序中,本质都是调用服务器从此接口返回的结果后对数据集处理。
作为连接所有Raspberry-Pi设备的监视平台,Hass.io是一个简单的操作服务器和一个简单的家庭类帮助系统。在操作系统内安装相对应的OS软件和集成Docker环境使用Home-Assistant去简化系统使用并且更加便于移植。通过HASS服务分发Home-Assistant云服务。Hass.io使用Python创建类似于Docker Manager的程序以及在此处运行的控件,以升级或降级该服务环境。通过Home-Assistant的开源自动化平台。可以跟踪和控制电梯中的所有设备,并实现自动化控制。并完美运行在Raspberry-Pi。[11-12]
智慧电梯系统的网络环境配置中,Raspberry-Pi的监控方案采用的是网络IP摄像头的视频流上传。在Android、iOS、Windows上等各种平台都可以完成配置。利用Android平台的网络IP摄像头可以完成实时动作监控等操作。
当设备接入到此局域网络中,在另一台设备安装Cam Monitor通信协议,支持在两个设备之间的双向音频传输。Windows和macOS等都可以兼容。通过局域网的连接方式即可接入到HASS的Home-Assistant中,即可以在整个局域网中进行摄像头画面实时共享[13-14]。
电梯系统支持动作检测功能,并调整云服务器的设置以将其启用。激活运动检测模式,用于环境网络警报。技术原理采用检测间隔帧变化的方法。目标传输和目标分配最常用的方法是关键帧的分割方法。使用像素时间差来移除图像进行的两个或3个相邻正方形之间的图像运动部分。首先,将视频流截取成细微的“帧流片段”,然后对比前后两帧的图像位置,动作阈值检测如图6所示。
图6 动作阈值检测
无论是在Android的软件程序交互和PC或Mac的交互逻辑设计,系统采用的是统一API请求,使用Python为主设计语言,采用Flask框架模型作为后端部署程序。网页前端设计语言采用HTML5、CSS、JavaScript联合许多种CDN库,主要包含有jQuery版的JS、Bootstrap开发环境等。
为适应用户不同的设备终端,借助以上框架设计了一套网页APP,可以完美兼容Android和iOS等操作系统平台。通过HTML5网页渲染技术,使用Python程序中的POST请求给出一个服务器的IP的请求接口(8080),系统创建了两个HTML5网页客户前端,其HTTP交互逻辑如图7所示[15]。
图7 HTTP交互流程
在Raspberry-Pi上运行Python指定程序将接口释放,此时会生成两个HTML前端网页文件,一个是针对电梯的控制端(192.168.137.84:8080/cmd),二是针对IP摄像头的控制端(192.168.137.84:8080/cmd2)。使用Fusion-App将网页和Home-Assistant加载到“智慧电梯”安卓APP中。既可以使用图形化界面对电梯下达指令控制。安卓软件界面如图8所示。
图8 安卓软件界面
HTML后端交互和数据传输的程序框架选择上,采用Python的Flask架构。Flask框架非常适用在小型网站,也适用于开发各种Web服务的API,在大型网站开发,Flask开发灵活。修相比Diango同样作为普遍的Web服务框架,Flask框架具有更多的功能和交互性可以通过高度定服务来完成更灵活的服务设计。选用Flask作为主框架,可以更好地避免程序代码过多。在HTML5设计中,设定了6个API服务用作于硬件开关的接入。这里的Web服务网关接口,作为Web服务器和应用程序之间的通用接口,选用Python的Flask框架,确保了不同的Web服务器类型可以相互通信。
在电梯的控制环节中,现在人们周围许多的设备都具有NFC近场通信功能,例如可以用手机代替公交卡、银行卡甚至身份证等。本项目将这一技术应用到针对电梯的控制中去,即利用NFC的识别返回值或检测POST的命令请求来完成电梯的控制指令下发[16]。
在电梯的控制环节中,现在人们周围许多的设备都具有NFC近场通信功能,例如可以用手机代替公交卡、银行卡甚至身份证等。本项目将这一技术应用到针对电梯的控制中去,即利用NFC的识别返回值或检测POST的命令请求来完成电梯的控制指令下发。
NFC作为一种(近场通信)无线通信协议,主要是在两个电子设备之间4厘米或更少的距离内进行协议交换。连接准备、速度快。也可以引导许多针对设备的功能性操作。例如钥匙卡、明文身份标识卡,并且它们也可以用于各种支付系统或信用卡等。
在NFC的芯片选取过程中,本着低成本、高稳定性、易连接等主要特点。最终确认并选用ISO 14443-3A的NXP技术标准,在连接技术方案上采用的是NFC,并支持反复擦写读取。在Android和iOS的操作系统中,实现由两种方案设计。针对Android方案,利用NFC-Tools写入工具如图9所示,将在index的HTML5网页中的接口写入到NFC芯片内存中去[17]。
图9 NFC-Tools写入工具
针对iOS操作系统,利用每一张NFC的身份标识码,iOS操作系统对一张卡片完成检测后,会返回一个指定的芯片标识类型。分析到特定的标识符后,再通过快捷指令的SSH脚本去请求指定好的Python程序这样就完成了相应的请求。iOS操作系统可视化编程界面如图10所示。
图10 iOS操作系统可视化编程界面
人脸搜索技术是由Google开发的搜索服务,该服务的目的是用户可以从已上传到Internet的图像中搜索该人的所有图像。在电梯总体控制方案中,人脸对比技术是其本次设计任务设的主线,采用百度云的API服务调用处理。
利用摄像头将图像捕捉之后,利用互联网云市场上第三方的API接口来完成对采集到人脸进行数据分析与处理。这里采用的是百度云平台开放的AI处理工具百度云—人脸搜索。在人脸数据库中搜索人脸图像,返回数据库中和人脸组和最匹配的人脸信息关键值,它可以提供有人脸注册,更新,删除和请求用户信息等11种界面功能,并支持多级数据库管理界面。
为便于后期系统测试,系统关闭了活体检测。在API的返回信息中,如果对代码进行设置不同的控制度,就会得到不同相对应的质量控制阈值,若服务器的返回值不符合阈值的要求,即会向控制台发送并提醒错误信息。HTTP请求后既可以得到JSON返回结果信息又可以达到和Python Flask框架的交互。返回示例用User_id来判断用户姓名,以此控制步进电机以驱动电梯[18]。
5.5.1 语音识别
系统录音方案采用的是第三方的网络平台设备(Windows操作系统的录音模块PY)。使用ssh局域网通信协议传输到Linux的文档目录下,Windows和Raspberry-Pi交互逻辑如图11所示。
图11 Windows和Raspberry-Pi交互逻辑
使用主控制器(Raspberry-Pi)的数据控制介质进行数据收集,短语音识别技术在语音转文本的过程中,30秒的语音长度大多数情况下一秒钟即可完成。因此完全可以将其应用在控制和输入场景。
一是通过REST-API接入,在每个API的接口调用中,都会有专门的 HTTP 接口,用以上传编码后的完整录音文件。二是使用本地SDK接入并支持超过60秒的实时长语音识别。同时也支持上传完整录音文件。支持离线唤醒词、命令词、通用语义解析等功能。在这里选用的是REST-API的方案接入,此方案在价格和速度上具有很大的优势,而SDK所附有的其他功能不是本次项目所必需的,API请求类型如表1所示。
表1 API请求类型
5.5.2 语音合成
语音转换(TTS)系统将普通语言文本转换为语音文件,语音系统使用百度云AI平台。短语音模式的短语音识别模型能够以类似人类语音进行通信,适用于电话音频记录,语音搜索,语音通信等其他活动。具有5种知识形式:普通话,英语,四川语言等[19]。其中,Android,iOS和Linux SDK可以支持最多60秒的实时现场语音,语音属性如表2所示。
表2 语音属性列表
借助Home-Assistant平台,在电梯内置通风扇和紫外线消毒等,将以上硬件设备依托Home-Assistant云平台,接入到系统的控制端,它可以监听在局域网设备环境中的所有设备,并可以针对自动化控件,进行指令下发和接收。
在此项目中,HASS安装在Home-Assistant中的Raspberry-Pi硬件端口和电梯的主控上,用于数据交互。可以使用Raspberry-Pi的官方Raspberry操作系统来安装HASS或Hassbian系统。它可以很高程度的简化与Home-Assistant相关的插件和依赖项的安装和配置。
通过不同的通信协议,连接到不同的网络设备,并且可以在Web界面上编辑修改、移动端有iOS应用程序和Android应用程序,便于用户更简洁的进行交互使用。例如RGB灯的设备,也可以支持大量处理操作。
5.6.1 OLED数据显示模块
为了显示电梯控制系统的具体对应楼层的信息,系统需要实时显示楼层位置信息以及最新的告警消息。该系统使用Python向SSD1306-OLED模块来发送指令,并使用完整的IIC和SPI兼容驱动程序。SSD1306作为屏幕的驱动器,OLED本身分辨率高,单个像易素定位,且像素传感器能够旋转,屏幕明亮且功耗非常低。SS1306上安装的包括控制器、RAM显示器和晶体振荡器,从而减少外部设备和功耗,LED显示流程如图12所示。
图12 OLED显示流程
5.6.2 Home-Kit接入
系统中的HASS安装在Home-Assistant中的Raspberry-Pi硬件端口和电梯的主控上用于数据交互。可以使用Raspberry-Pi官方Raspberry操作系统来安装HASS或Hassbian系统。其可以高程度的简化与Home-Assistant相关的插件和依赖文件包的安装和配置。
它的通信协议机制包含例如:WeMo协议、ZigBee网关和Wi-Fi通信。允许移动设备和电话在远距离共享数据以创建个人局域网。借助Home-Kit平台,将所有设备组合在一个应用程序中,程序将文本信息发送至服务器,服务器解析完成并关联相对应的指令信息进行返回。HomeBridge作为连接桥梁是使用Node.js开发的应用连接程序框架,可以直接运行在家庭的局域网络,并在iOS设备和其他连接桥梁之间提供开放API[20]。
5.6.3 手机语音助手
实时语音控制可在任意时刻完成对设备的指令下发控制,时延低、响应快、内存占用小和受众面广。采用的iOS终端中集成的Siri语音助手,在连接家庭APP的同时,在快捷指令配置好ssh的Raspberry的Python程序,即可完成在Raspberry-Pi和iPhone之间的快速操作。如图13为快捷指令的配置界面。
图13 快捷指令的配置界面
针对前端技术,使用Siri技术的目标是处理用户请求并提供最佳结果。所做的主要任务就是通过分析用户的数据输用户的数据类型来选择正确的技术类型进行回应并处理[21]。
系统人脸和语音控制逻辑:当行人步行到电梯旁,电梯的红外检测摄像头先对人脸进行定位提取关键点信息并上传至BAIDU或本地数据库记录的人脸服务器进行比对分析,由主控制器 Raspberry计算后给出是否匹配的结果,若通过匹配将数据库记录的楼层信息反馈至驱动装置控制电梯轿厢完成运行到指定楼层。若检测到的人脸信息不在系统或 BAIDU的人脸数据库中,会立即启动语音检测提示用户语音给出口层信息,计算之后反馈至驱动装置。
NFC和HTML网页控制逻辑:可以部署在货运电梯或医院,实现使用手机触碰电梯内置的NFC 感应芯片或操作人员使用特定的APP对电梯进行监控或控制。
系统调试利用接近实际客观的环境条件,对系统的硬件和系统软件进行分步测试,然后对整个系统进行整体调试并收集记录测试数据。确保系统硬件和软件的整体可靠性。除去必要的软件开发、维护软件和操作系统、同时也是确定软件系统是否完整测试的重要依据。在软件正式应用前,提前测试各项指标去发现在使用过程中的错误和不合理之处,将发现的问题进行纠错并完善系统,其主要测试范围包括:响应速度、功能、软件的兼容性和性能指标。软件测试分类如表3所示。
1)所有系统设计其实都是针对时间延时进行的但是在整体系统的设计中,这个延时时间是无法精确到毫秒测量。最后的解决方法是,每次程序开始运行打印的当前时间,精确到毫秒,结束运行后打印当前时间。两者时间之差就是程序的运行时间。
2)在对文件上传速度的测量中,有一个是百度云服务器的时间,另一个是本地控制器的时间,两者的时间差值在8小时。所有百度云对图片的处理时间是无法确定的。对实验数据进行改进,确定本地上传数据后的时间相对于服务器结果返回的时间差,那么就可以得到数据处理时间和上传时间总和。
3)在语音处理的函数选择上,百度云服务和许多云服务厂商的数学模型完全是不同的。造成对比数据量大,成本高,没有办法逐个进行数据测试。最后为了保证系统的整体统一,就全部采用百度云的服务器并针对延时进行测试和数据收集。
表3 系统运行的软件架构见表
结合上述的测试数据,既要保证上传速度另外还要保证传输的准确性与识别的准确度。最终实验得出系统的总体设计延迟如表4所示。
表4 总体设计延迟
1)对整体的系统硬件设计方案进行周密的论证和实物测试。确定每一个模块的设计要求和方案,最终完成实物电梯模型一套。
2)对整体系统的电路系统重新设计新的PCB电路板和基础硬件布局、连接和焊接。
3)开发了完整的HTML网页、对应Android操作软件、整体的Python代码。
通过对设计整体的改进,本文“智慧电梯”主要有三点,可以在功能和易用性方面进行优化。
1)针对人脸检索技术,这一点仅做的是少量人脸比对,并没有考虑在密集人群中的识别度和准确度,这在产品升级中是非常关键的一点。后续通过算法升级和图像分割等技术等完成更多的功能。
2)在整体的控制系统上,因控制终端的算力限制,不能在本地完成数据计算和数据比对,如果增强算力会导致成本的上升,这一点要针对具体的用途完成相应的调整。
3)OLED的楼层显示上,不能快速实时地更新显示当前的楼层位置,在高层电梯和安全性上尤为重要。后续可以通过每个楼层设计传感器来实现。
4)针对无线终端的控制,后期应制作轻量化应用程序,在一个楼层内完成在多个电梯之间的交互通信,使用ESP8266模块来降低使用成本。
在全球智能化背景的今天,随着日益增长的社会基础设施要求的提高。本文针对基于树莓派的无接触智慧电梯设计系统进行分析研究,分析了现有的民用电梯的结构和优缺点,此设计的研究结果阐明了智慧电梯在日常生活的关键性作用和设计意义,解决了民生和疫情工作中的实际问题。基于Linux的发行版Raspberry-Pi操作软件的整套电梯控制系统其包含功能多达数10项可供选择,结合当下最普遍的手机操作、人脸监控、语音控制等4项功能对其在许多方面的应用,最后论述了其实际价值、意义和作用,对下一步的研究做了分析和展望。