基于STM32 的4 种类型语音控制垃圾桶设计
2023-09-27夏子结吴玛佳夏秀英夏纪新鲜建红
夏子结,吴玛佳,王 强,夏秀英,夏纪新,鲜建红,查 靓
(安顺学院电子与信息工程学院,贵州 安顺 561000)
如何将可回收垃圾进行充分回收一直是我国亟待解决的问题。面对此情此景,研究和发展语音识别垃圾箱控制系统是非常有必要的。为此,本团队对安顺学院的户外垃圾桶做了调查,根据调查结果显示安顺学院有374 个垃圾桶,需要手动翻盖的垃圾桶有143 个,无须手动开盖的垃圾桶有231 个。安顺学院使用手动开盖的户外塑料垃圾桶占38%,无须手动开盖不锈钢户外垃圾桶占到62%。
本项目抓住传统垃圾桶的痛点,并将其进行创新。本文设计了一个可以对易拉罐、玻璃瓶、塑料瓶和废纸这4 种可回收物进行分类收集的垃圾桶,这种非接触垃圾桶的好处是:智能化、节约时间、保护环境、密封性好、回收方便和减少病毒的接触性传染。基于STM32的4 种类型语音控制垃圾桶不仅对防控新冠感染疫情起到积极作用,同时还能够克服安顺学院目前户外垃圾桶使用存在的缺点。
1 需求分析
1.1 总体规划
本设计利用以STM32 单片机为核心的微控制器,采用语音识别模块对普通话语音进行识别。复位开关在通电之后可选择马上使用或等待一会儿再使用,使用起来更加自由,同时可防止短路;JQ8900 语音播报模块用于播报垃圾与垃圾桶的种类;设置了GSM 短信提醒模块;按键模块作为在普通话不标准或者不会说普通话的情况下方便使用;LED 提示灯是提醒使用者垃圾桶盖已开;4 个舵机用来控制垃圾桶盖的开关;4个红外传感器发射接收信息用于检测垃圾是否装满;蜂鸣器报警模块在传感器感应到垃圾桶溢满时进行报警。
1.2 设备选型
1.2.1 主控芯片
本设计选用STM32F103C8T6 为主控芯片,而不选择AT89C51 为主控芯片,是因为综合了成本、片上资源、flash 和RAM 存储器、改进功能的空间和内核等方面的对比。虽然AT89C51 芯片有成本低的优势,但是经过对比,其在除了成本以外的其他方面都存在劣势,所以此设计采用STM32F103C8T6 为主控芯片。
1.2.2 LD3320 语音识别模块
根据本设计的需要和引脚较多的需求故选择了LD3320 型号的语音识别模块,并且LD3320 型号的语音识别模块不需要花费太多钱,同时还低功耗。
1.2.3 电源
由于主控芯片需要协同带动的模块较多,灯光提示模块已连接3.3 V 电源,而LD3320 语音播报模块要用5 V,所以本设计选用5V 的电源,保证了本设计的稳定性。
1.2.4 舵机
电机控制板的功能是让电机运动并且接收电位器返回的信息[1]。经过对比SG90 伺服机、MG90 伺服机、MG990 伺服机这3 种常见的伺服机,得出在本设计中,因需要带动的是塑料的垃圾桶,所以SG90 舵机是完全够用的,同时也考虑到成本和体积的问题,于是SG90 舵机再合适不过。
1.2.5 GSM 短信提醒
GSM-A6 型号短信提醒模块是电路交换系统,只需要具备2 张电话卡就可实现连接,从而进行短信互发。GPRS-A6 是分组交换系统,但本设计不使用GPRS-A6 型号的数据传输技术,因为考虑到成本问题,同时本设计不需要视频通话和互联网接入,所以,本设计使用的是GSM-A6 短信提醒模块。
1.2.6 传感器模块
TCRT5000 传感器发射红外线会分为2 种情况:指示二极管被点亮和指示二极管处于熄灭状态。TCRT5000 传感器具有抗干扰性强、使用方便而且简单的优点。超声波传感器MB7139 的优点是敏感而且灵活,穿透的能力非常强,测量精度高,稳定性好,缺点是超声波传感器的测距速度较慢,容易造成资源浪费,存在最短探测距离。综合以上介绍,本设计选用了TCRT5000 传感器。
1.2.7 三极管
本设计的三极管需要的是放大电流,降低电压,缩小信号,起到保护电路的作用。常见的有S8050 和S8550 型号三极管,2 种三极管有非常大的区别,S8050是NPN 管,S8550 是PNP 管,这2 种三极管原理不同,辨别方法也不同。经比较得出,S8550 型号与S8050 型号三极管是有区别的,综合比较后本设计选用S8550型号的三极管最为合适。
2 硬件模块
2.1 STM32F103C8T6 最小系统
本设计采用的单片机是以STM32F103C8T6 为主控芯片,优点是快速的处理能力、强大的外设支持、可扩展性强和性能消耗低。
在本设计中,4 个舵机连接的是PB0~1,PA7~6 这4 个引脚,4 个传感器连接的是PB12~15 这4 个引脚,4 个按键连接的是PA15,PB3~5 这4 个引脚,电源连接正负引脚,语音播报模块连接PA9(TXD1)和电源正负极引脚,GSM 短信提醒模块连接PA3、PA2 引脚,语音识别模块连接PB11、PB10 引脚进行数据的传输。蜂鸣器模块连接PC14 引脚。如图1 所示。
图1 基于STM32 的4 种类型语音控制垃圾桶原理图
2.2 LD3320 非特定语音识别模块
语音识别模块使用时只需连接5 V 电源,然后模块的串口通信端口与单片的串口3 相连接就可以工作。在语音识别模块运行时需要说普通话,有时会存在识别不出来的情况,需要再次唤醒,这也是LD3320 的缺点,识别精度低。
2.3 舵机驱动模块
垃圾桶具有语音唤醒且开盖的功能[2],单片机控制4 个转向发动机的转动。SG90 舵机是一种位置伺服驱动器,适用于需要不断改变角度的控制系统,并且可以保持运行。项目采用STM32 核心板PB1/PB0/PA7/PA6端口输出PWM 信号来控制舵机的旋转角度,达到带动垃圾桶盖开关的目的。
2.4 语音播报模块
JQ8900 语音播报模块有3 种通信模式,即两线串口通信方式、一线串口通信方式和IO 口按键触发模式。本实验中之所以使用的是一线串口通信方式,是因为查阅资料后发现一线串口通信方式程序编写更加简便。JQ8900语音模块为RX接TXDI,GND接地,DC接5 V,SPK+和SPK-接小喇叭正负极。
2.5 蜂鸣器报警模块
本设计的溢满报警采用蜂鸣器进行提醒,在垃圾桶里面的可回收垃圾满了之后,系统将运行蜂鸣器发出警报信息,以达到一个声音的报警,这样可更加直观地获取垃圾桶已满的信息。
2.6 提示灯电路
指示灯电路的设置是为了让使用者能更加明显地看到垃圾桶已处于开盖的状态,4 个灯所对应的垃圾桶也不一样,指示灯亮了之后人们就可以投放垃圾了。这给予了人们更加直观的视觉冲击,可及时获取信息。电阻R1~R4 是限流电阻。
2.7 按键电路设计
设置按键模块的初衷是有些人不具备说话的能力或不会说普通话,就像言语障碍者等的人群。所以应该给这些人群提供更加便利的服务,按键模块就被安排上了,这是非常有意义的。
2.8 电源模块
电源模块可以说是基本的模块,有了电源才能够运行整个程序,所有的程序都要依靠电源才能够实现功能,在这个项目中使用的是直流供电。在电源连接后需要等待10 s 左右GSM 文本发送模块才能够启动,所以在10 s 后才能够唤醒垃圾桶。
2.9 垃圾溢满检测电路
这个设计使用的是TCRT5000 型号的红外距离模块,作为针对垃圾桶被投放满之后不能够继续投放垃圾的动作发生、触发蜂鸣器报警、文本信息的发送,传感器是很重要的,其能够将可回收垃圾积极清运,使工作人员的工作更加便利,避免了垃圾不及时处理造成的环境污染。
2.10 GSM 短信提醒模块
这个设计不需要联网和视频,所以选择了短信提醒,能够实现远距离的文本信息发送。这在原有的处理垃圾方式上有了很大的创新,能够节约成本和时间,使工作效率更高。
3 软件系统设计
3.1 程序流程设计
在这个项目进行软件设计时,需要把整个运行过程分成很多个部分,部分之间都是息息相关的。程序的主程序开始运行时,会将整个程序进行初始化,接着读取串口信息,判断是否读到数据,若读取到信息,判断可回收垃圾种类,随后执行开盖、关盖、报警等操作。如图2 所示。
图2 主程序流程图
3.2 舵机子程序设计
程序开始时,当使用者在普通话唤醒并说出相对应的可回收垃圾的垃圾桶,并识别到是哪一个垃圾桶时,那么就得运行开盖的程序,开盖的流程需要有PWM 波形的形成,舵机旋转到0°,输出占空比为1.5的脉冲即可。
程序开始时,当使用者在普通话唤醒并说出相对应的可回收垃圾的垃圾桶,并识别到是哪一个垃圾桶时,那么就得运行开盖的程序,开完盖并投放垃圾后就需要关闭垃圾桶的盖,关闭垃圾桶盖的流程需要有PWM 波形的发生,舵机转动角度为-90°[3],输出占空比为0.5 的脉冲就可实现关盖的功能。
3.3 语音识别子程序设计
语音识别模块的程序开始时,将程序进行初始化,接着读取串口数据,判断是否接收到数据,没接收到数据时会进行暂缓清零,若接收到数据则将读取指令,数据为C4,则判断为废纸,那么废纸垃圾桶就会开盖;数据为C5,则判断为易拉罐,易拉罐垃圾桶就会开盖;接若数据为C6,则判断为玻璃瓶,玻璃瓶垃圾桶就会开盖;数据为C7,则判断为塑料瓶,塑料瓶垃圾桶就会开盖[4]。若指令数据不是C4、C5、C6 或C7,则程序会重新读取串口数据。如图3 所示。
4 项目的组装测试
垃圾桶项目系统的软硬件调试是完成软硬件项目的最后一步。需要多次调试才能发现系统中的软件编译错误,并纠正硬件生产中的潜在隐患。任何系统都必须经过调试和完善。实践是检验真理的标准,不能急于取得结果而忽视细节。有必要在项目的调试上下功夫,只有经过仔细的调试,项目才能够完成好。
4.1 软件调试
在Keil 环境下进行编程时,编写的程序容易报错;编写代码时容易把相似的数字英文写错,导致找错误的时候难以发现。
4.2 硬件调试
硬件调试最重要的方面是电路板会不会有电线松动、泄漏、连接不正确、短路,以及电源的正负极是否正确连接;还需要确保电路中的模块组件是否正常使用,焊接前可以使用万用表和电流表进行测试。提前整理整个程序接线线路,这样就可以减少许多不必要的错误。
4.3 整体调试
在软件和硬件测试完成并清晰之后,应该一起进行调试。尽管Keil 的软件可以模拟,但却不是一个肉眼可见的环境。最后一步现实的测试和调试是将软件程序刻录到微控制器中去,接上电源,然后测试相对应的功能,看看是否实现按设计目标功能工作。因为一些硬件测试需要软件配合才能更好地识别问题,所以软件测试也需要硬件合作才能更好地改进。
每个功能模块的电路都可以独立工作。当在进行集成和调试时,并不意味着可以实现整体功能。有必要改进调试以解决随时可能会出现的问题。需要步步为营,一步一步地按照测试要求来做。随时核对原理图与电路板之间的连线,不放松警惕,保证实物能够按照预期的想法完全实现,在本设计的调试中不得不承认花费了很多的时间,但在调试成功的时候是非常有成就感的。因为毕业设计是非常重要的,所以调试成功是必须要实现的。
在整体调试过程中,由于SIM 卡没有正确安装在卡槽中,垃圾桶装满时只有报警声,没有短信提醒。经过反复检查和调整,最终收到了短信提醒。调试时每一步都不能马虎,必须小心,才能确保这个设计成功完成并达到标准。
在调试时,唤醒语音识别模块需要多次呼叫,因为识别精度不够,容易受周围环境影响,而且需要标准的普通话,对人的资质要求较高,所以需要耐心地使用。后期可以更新语音识别模块的型号,使语音识别模块的精度提高,使用起来更加轻松,避免人们在唤醒的时候垃圾桶无回应。整体调试如图4 所示。
图4 整体调试
5 结果及总结
5.1 结果
必须验收硬件和软件互动调试的结果,最终的结果是对全部实物的展示。第一,电源连接至关重要。第二,要能成功唤醒垃圾桶。如果唤醒成功,操作可以继续。如果唤醒失败,则需要再次唤醒。唤醒的词是“垃圾桶”。如果垃圾桶回复“欢迎使用垃圾桶”,麦克风可以继续传输语音并说出可回收垃圾的名称,相应的垃圾桶盖就会打开,扔进可回收垃圾后,关闭垃圾桶盖进行处理;如果有人扔垃圾时垃圾桶已满,蜂鸣器会发出警报,同时短信提醒模块会向指定的电话号码发送文本信息。只要将该电话号码的SIM 卡插入电话卡插槽,就可以接收到文本信息,达到及时清除和处理垃圾的目的。根据以上2 点来判断是否达到了目标功能:垃圾满的时候语音提醒,蜂鸣器发出鸣叫,手机收到报警短信,手动开/关盖功能正常,4 个按键一个对应一个控制垃圾桶开/关盖。
5.2 设计总结
自动检测和打开垃圾桶盖是该项目创建语音识别垃圾桶控制系统的主要目标。语音识别垃圾桶控制系统是在当前环境保护的背景下创建的,目的是让人们远离垃圾,降低感染的风险。但是语音识别垃圾桶对中国人来说是陌生的,可以拥有也可以丢掉。中国的语音识别垃圾桶行业要获得良好的技术和资金支持是很有挑战性的,因此,它一直无法迅速发展。平常的一些人家和一些工厂对采购和利用它们的积极性不高。但笔者还是一开始就确定了该系统的设计方案,还对系统的整体设计和各个部分进行了深入的分析和设计。研究结果表明,语音识别电路、伺服驱动模块、语音报警模块构成了本项目所开发的语音识别垃圾桶控制系统的大部分。
事实上,此时创建的语音识别可控系统仍有很多缺陷。这种设计直接使用的主电源为电能,而不是使用太阳能等可再生能源。
基于STM32 的4 种类型语音控制垃圾桶的设计只是一个非常粗略的草案,在此基础上还可以增加许多其他功能。如自动捡起掉在地上的垃圾,实现自动包装垃圾,选择识别精度高的语音识别模块识别语言,开发夜间街道照明的功能,以及开发一个手机应用程序来控制盖子的打开和关闭,这些都是可以添加的一些功能,所有这些都将在未来被付诸实践。