基于Arduino 和语音识别的智能垃圾分类系统*

2021-08-29 07:00鹏,徐
电子技术应用 2021年8期
关键词:开发板下位舵机

黄 鹏,徐 燕

(北京物资学院 信息学院,北京 101149)

0 引言

垃圾分类对资源回收再利用和社会可持续发展具有重要意义[1]。2017 年3 月,中国国家住建部和国家发改委下发了 《生活垃圾分类制度实施方案》,2019 年7月1 日上海开始施行《上海市生活垃圾管理条例》,2020 年5 月1 日北京开始施行《北京市生活垃圾管理条例》[2-3]。

但近年来垃圾分类实施效果并不尽如人意[4],其中的一个主要原因是居民要做的事情太繁琐以及需要学习的垃圾分类相关知识较多,导致居民垃圾分类的积极性不高[5]。因此亟需科技手段更好协助居民进行垃圾分类,提高居民垃圾分类积极性,增强垃圾分类实施效果。

目前,智能化垃圾处理设备的研究集中在调动人们对于垃圾分类的积极性、传统垃圾桶的智能改造以及将深度学习技术应用在垃圾分类中。余汉生等提出以“制约”和“奖励”为理念、以设计为手段的城市生活垃圾分类回收系统[6];尤肖肖等利用半自动链接原理以及对内部结构的改进等方式解决了现有技术中垃圾桶功能单一、无法自动分类的缺陷[7];吕程熙比较了深度神经网络和卷积神经网络,认为深度神经网络在不同分类任务中具有更高的准确度[8];吴碧程等将卷积神经网络应用在自动识别和分类垃圾过程中[9]。

为了同时解决垃圾分类以及向居民有效宣导垃圾正确分类知识的双重问题,本文设计基于Arduino 和语音识别的智能垃圾分类系统。通过该系统,居民只需说出垃圾名称,就可实现自动将该垃圾对应分类的垃圾桶盖打开,从而减轻居民垃圾分类的难度,提高垃圾分类实施效果。

1 系统总体设计

系统由Android 移动端APP、HC-05 蓝牙模块、下位机控制模块组成。下位机控制模块又包括Arduino 开发板、舵机、供电电源和垃圾桶。系统总体结构如图1 所示。

图1 系统总体结构图

居民通过打开Android 移动端APP,说出垃圾名称,Android 移动端APP 会对输入的语音进行解析,得出该垃圾对应的分类,并通过HC-05 蓝牙模块将分类结果发送到Arduino 开发板,Arduino 开发板根据分类结果控制相应舵机动作,从而带动对应分类的垃圾桶盖打开,实现垃圾分类。

1.1 Android 移动端APP

移动端APP的开发环境为MIT APP Inventor 平台,只需要通过拖拽基于块的接口,就能快速构建Android程序[10]。首先通过MIT APP Inventor 中的语音识别器实现对用户语音输入的识别,将语音信息转换为文本信息;然后调用天行数据提供的垃圾分类接口,将文本信息转化为垃圾类别信息;最后通过手机蓝牙与HC-05 蓝牙模块进行蓝牙连接,将垃圾类别信息发送出去。

1.2 HC-05 蓝牙模块

HC-05 蓝牙模块与Android 移动端APP 进行配对连接,连接成功后,接收垃圾类别信息,并通过串口将该垃圾类别信息传送给Arduino 开发板。

1.3 下位机控制模块

下位机控制模块包括Arduino 开发板、舵机、供电电源和垃圾桶。舵机共有4 个,分别为舵机0、舵机1、舵机2、舵机3。这4 个舵机分别控制“可回收垃圾”垃圾桶、“有害垃圾”垃圾桶、“其他垃圾”垃圾桶和“厨余垃圾”垃圾桶的桶盖开闭。

Arduino 开发板通过串口接收从HC-05 蓝牙模块传来的垃圾类别信息,控制对应的舵机进行正转,顶起桶盖,并开始计时,在一定时间后对应舵机反转,桶盖闭合。从而解决了桶盖的开合问题,实现了垃圾的智能分类。

2 硬件电路设计

2.1 Arduino 开发板简介

Arduino 开发板型号为Arduino Uno R3。Arduino Uno是Arduino系列中一款基于ATmega328 微控制器板,具有32 KB Flash 内存、1 KB EEPRROM内存、14 路数字 输入/输出口(其中6 路可作为PWM 输出)、6 路模拟输入、1 个16 MHz 晶体振荡器、1 个USB 口、1 个电源插 座、1 个ICSP 标头和1 个重置按钮。Arduino Uno 预置了bootloader 程序,能够通过USB 直接下载程序,而不需经过其他外部烧写器[11]。

Arduino系统是基于单片机开发的,并且大量应用通用和标准的电子元器件,包括硬件和软件在内的整个设计,代码均采用开源方式发布,因此采购的成本较低,在各种电子制作竞赛、电子艺术品创意设计等场景越来越多地使用Arduino 作为开发平台[12]。

2.2 HC-05 蓝牙模块与Arduino 开发板通信电路设计

HC-05 蓝牙模块是基于Bluetooth Specification V2.0带EDR 蓝牙协议的数传模块。其工作电压为3.0~3.6 V,无线工作频段为2.4 GHz ISM,调制方式是GFSK。模块最大发射功率为4 dBm,接收灵敏度为-85 dBm,空中速率达2 Mb/s,板载PCB 天线,可实现10 m 距离通信。模块支持AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活[13-14]。

图2 为本系统HC-05 蓝牙模块与Arduino 开发板通信电路原理图。HC-05 蓝牙模块与Arduino 进行串口通信,HC-05的RXD 与Arduino的TXD 连接,HC-05的TXD与Arduino的RXD 连接。

图2 HC-05 蓝牙模块与Arduino 开发板通信电路原理图

2.3 舵机控制电路设计

舵机型号为SG90,舵机SG90 主要包括外壳、齿轮、无核心马达、电路板和位置检测器等部分,是一种使用脉宽调制信号(PWM)进行控制的驱动器,其内部的比较器将外加信号与基准电路产生的基准信号进行比较,判断出转动的方向和大小,以此驱动无核心马达转动,并由位置检测器回送信号以判断是否已经转动到位。舵机SG90 通常使用的控制信号周期为20 ms,宽度为0.5 ms~2.5 ms,舵盘的转动角度为0~180°[15]。

图3 为本系统舵机控制电路原理图。其中,Arduino开发板数字引脚11、9、6、4设为输出模式,分别控制舵机0、1、2、3。而舵机0、1、2、3的转动又分别控制“可回收垃圾”桶、“有害垃圾”桶、“其他垃圾”桶、“厨余垃圾”桶。

图3 舵机控制电路原理

3 系统软件设计

系统软件设计可分为上位机软件设计和下位机软件设计,上位机软件设计包括语音识别程序设计和界面设计,下位机软件设计即下位机主控板程序设计。

3.1 语音识别程序设计流程

语音识别程序设计流程如图4 所示。启动语音识别程序后,先检查蓝牙是否连接。若未连接,进行语音提示并结束语音识别程序;若已连接,语音识别组件开始语音识别,待用户语音输入后,将语音信息转换为文字信息,并向垃圾分类接口发送GET的HTTP 请求。若得到返回的垃圾类别信息,则调用蓝牙API 将垃圾类别信息下发,待下位机主控板进行下一阶段的程序;若未得到,则通过语音提示识别失败,语音识别程序结束。

图4 语音识别程序设计流程

3.2 界面设计

整个界面使用MIT APP Inventor 平台进行设计开发,无须学习较为晦涩的Java 语法,只通过拼图模式来组合程序,就可以完成Android 应用的程序,使得应用程序的开发简单便利。

3.3 下位机主控板程序设计流程

下位机主控板程序设计在Arduino的集成开发环境下开发完成,其流程如图5 所示。setup 函数在程序开始的时候会调用,用来初始化变量、定义引脚模式等,在Arduino 板每次上电或复位后仅运行一次。在执行完setup 函数后会执行loop()函数,该函数作为一个无限循环的过程连续执行。

图5 下位机主控板程序设计流程

本系统在setup 函数中完成舵机Servo的定义及初始化,loop 函数通过串口等待垃圾分类信息,一旦获取指定信息,控制指定舵机转动,使对应垃圾桶盖打开,并于15 s 后恢复,即垃圾桶盖闭合。

4 系统测试及分析

4.1 系统环境搭建

Arduino 通过USB 与电脑连接,4 个垃圾桶中有4 个舵机分别连接到Arduino的对应引脚上;蓝牙启动,等待操作;上位机软件安装,待语音输入。

4.2 系统测试

4.2.1 系统测试方法

根据《北京市社会单位生活垃圾分类投放指南》,分别对厨余垃圾、可回收垃圾、有害垃圾、其他垃圾类别中的各项垃圾进行语音测试。当识别失败时,移动端会进行语音提示,要求重新进行语音输入;当识别成功,会远程控制与该垃圾分类相对应的垃圾桶桶盖打开,15 s 后垃圾桶桶盖自动关闭。

4.2.2 系统测试步骤

系统测试步骤如下:

(1)打开Android 移动端APP;

(2)在主界面点击“连接蓝牙”按钮;

(3)选择要连接的蓝牙设备,建立连接;

(4)语音说出要识别的垃圾具体名称,如“胶带”;

(5)“胶带”对应的垃圾桶(即“其他垃圾”桶)的桶盖开启,15 s 后垃圾桶盖自动关闭;

(6)本次垃圾投放结束。

4.2.3 系统测试结果与分析

系统测试结果如表1 所示,对于厨余垃圾,未能识别豆类,其他均正确识别,识别率为88.89%;对于可回收垃圾,均正确识别,识别率为100%;对于有害垃圾,均正确识别,识别率为100%;对于其他垃圾,该系统未能识别饮料杯,其他均正确识别,识别率为92.31%。

表1 系统测试结果图

对于豆类、饮料杯,该系统未能识别的原因为天行数据提供的垃圾分类接口中并没有对于豆类、饮料杯这些垃圾类别的数据,因此识别失败。而后本系统再对具体的豆类信息(如黄豆、绿豆)、饮料瓶进行完善后发现均能正确识别。系统测试结果表明,该系统识别准确率高,具有较高的实用价值。

5 结论

本文设计了一种基于Arduino 和语音识别的智能垃圾分类系统。通过打开Android 移动端APP,语音输入垃圾名称,即可无线控制打开该垃圾对应分类的垃圾桶。实验结果表明,系统能够依据《北京市社会单位生活垃圾分类投放指南》,对厨余垃圾、可回收垃圾、有害垃圾、其他垃圾进行正确识别并控制对应分类的垃圾桶盖开闭,该系统能够帮助居民进行垃圾分类,提高居民垃圾分类效率,具有应用推广价值。

猜你喜欢
开发板下位舵机
含齿隙弹载舵机的全局反步模糊自适应控制
发射机房监控系统之下位机
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
浅析单片机开发板的设计与制作
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
CAN总线并发通信时下位机应用软件设计
基于云模型的舵机同步控制