基于Arduino语音控制室内垃圾分类的系统设计
来源:用户上传
作者:王志 雷达 周仔明 任艳 胥薇
摘要:介紹了一种基于Arduino语音控制实现室内垃圾分类的装置,以Arduino为主控制系统,结合了传感器技术,语音识别技术,语音控制技术实现了对室内有限空间内垃圾的自主分类。该系统具有无线控制功能,低成本,操作方便等特点。适宜对中等家庭大力推广使用,无使用限制。
关键词:Arduino;非特定人声语音识别;智能控制
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)05-0081-02
开放科学(资源服务)标识码(OSID):
目前,人们的生活正朝着便捷化、智能化方向发展。而垃圾分类方面的问题一直没有好的办法解决。据资料显示,国内人均每日产生的垃圾在1.2公斤左右,且垃圾总量在持续增长,同时垃圾的多样性和国民普遍存在垃圾分类意识的浅薄导致了垃圾分类政策的难以推广。这就直接引起了因分类不明确而产生的环境污染、资源浪费等一系列问题。按目前趋势,国家大力推行垃圾分类政策,例如上海更是率先响应国家垃圾分类政策的号召,这一行为引起了社会上的广泛热议。实行垃圾分类后,既可将有害垃圾及时处理,防止再次生污染,也可变废为宝、节省资源,对改善环境大有裨益。当今世界上在一些公民文明程度较高的地区,公民对于垃圾分类这一措施更是已经变成了习惯。这不是一场对于广大公民发出的一场“运动”,而是对公民生活方式的改变,更是如今在经济,科技,文化等高质量发展阶段走向更高的现代文明社会的标志。然而基于Ardu-mo语音控制实现室内垃圾分类系统的设计可以帮助居民更好地实现垃圾自动分类,从而显著提高资源的有效利用率,避免环境污染。
1 语音识别技术
语音识别技术就是非特定人的语音通过机器的识别,理解转换成相应的字符串或者指令。具体的实现步骤包括:采取语音样本,确定语音输入的起始点,计算语音频谱,分解输入信号,关键词识别,对输入信号做出反应。目前语音识别的主流算法有隐马尔可夫法(HMM):HMM是对语音信号的时间序列结构建立统计模型,将之看作一个数学上的双重随机随机过程,而人语言的本身也就是一个双重随机过程。另一个为动态时间规整(DTW):利用语音识别的端点监测,把接收到的语音信号进行升长或缩短直到与参考模型一致。在这一过程中,未知指令的时间轴要不均匀地扭曲或弯折,以达到其特征与模型特征对正。
2 硬件系统的设计及搭建
基于Arduino语音控制实现室内垃圾分类系统设计,其工作原理是:非特定的人发出语音经过LD3320语音识别模块转化成特定字符串再通过串口发送到Arduino开发板。Arduino开发板接收到语音识别的模块传来的预先设置好的指令后发送到指定舵机开发板,实现舵机的转动。舵机根据传来的指令的不同来实现室内垃圾的自主分类。图1为系统结构框图。
2.1 Arduino开发板
Arduino存储空间也就是主控芯片所集成的存储空间。其中使用32KB Flash.
2KB的SRAM,IKB EEPROM电可擦除可编程只读存储器。
USB接口:用与电脑连接,与电脑中的ArduinoIDE衔接用于上传代码,同时给该板卡供电。Arduino电源:采取DC电源供电一般为7-12V或通过5V或VIN端口供电。但是5V必须是5v供电而VIN可用7-12V供电。ArduinoUNO拥有14个数字输入/输出管脚,6个模拟输入。
当然也可以由程序自己定义为输入或者输出;其中2,3端口可以输入外部中断信号,3,5,6,9,10,11六个管脚可提供8位(0-255)的PWM输出;Reset复位端口:当其按下后可以使可以使此时连接的端口接到低电平,从而使Arduino复位。
2.2 语音识别模块
本产品采取LD3320语音识别模块。该模块是ICRoute公司生产的一款非特定语音识别芯片,它内置有非特定语音识别的DSP(Digital Signal Processing)算法。GND端用于接电源负极,vcc端接电源正极,ICR是识别模块状态显示。当收到语音是该处有绿灯闪烁,TXD用于串口的数据发送,RXD用于数据的接收。MIP,MIN是MIC的电源正负极,不同的接法MIC的识别率不同。同时与电脑上的LP—COMM串口调试工具配合可动态添加50条指令。LD3320识别模块无须外接其他设备,单一设备可完成语音识别。
2.3 舵机驱动板及其工作原理
常见的舵机一般有三根引线:黑色或棕色为地线,红色为电源线,黄色为信号线。由MCU输出PWM精度(0.5us)。常见的舵机由外壳,内部驱动马达,电路板,减速器等组成。其丁作原理:Arduino系统发送信号给舵机,由舵机内部的电路板芯片驱动马达开始转动,透过减速马达将动力传至摆臂,同时由位置检测器传送讯号,判断是否已经到达指定位置。
3 系统的程序设计
该系统软件的设计是基于Arduino IDE开发环境。该环境底层使用C/C++语言开发。当程序员需要某一个模块驱动程序时,直接在IDE库函数中调用该模块的头文件加载到已有的文件中。在本系统设计采用头文件,专门驱动舵机的转动。图2为系统的主流程图。当电源接通以后,机械臂要复位操作,如果语音识别模块识别到语音,该模块上面的绿灯闪烁,再判断内容是不是原先设定的指令,再执行相应操作,否则要下一次识别。
部分程序如下:
#include //力Ⅱ载舵机库函数
Servo myservol;//设置舵机1号
int powerl=30;//舵它机的角度变化量
int a=105;//舵机的初始位置
void setup0{
,/put your setup code here, to run once: Serial.begin(9600);//初始化波特率9600
myservol.attach(9);//将9号端口为舵机信号输出
myservol.write(90);
void loop0(
,/put your main code here, to run repeatedly:
if (Serial.availableOV/串口的有效数据
(
int val= Serial.read0;//读取串口的有效数据10进制数
Serial.println(vaD;
delay(10);
switch (valy/选择舵机的号位
{
case 0:
a=a - powerl;//舵机转动的角度的变化
if(a>30)
{
myservol.write(a);//实现打开垃圾桶盖
)
else
myservol.write(a=a+powerl);
break;
)
4 測试与结论
硬件设备连接成功,将USB转TTL接口与LD3320语音识别模块连接在PC端。通过LP-COMM串口调试将准备好的语音转换成相应的指令。再将语音识别模块与Arduino板卡连接,当语音喊出对应垃圾名称时,该种类的垃圾桶盖将会打开。通过设定的一定的时间后,桶盖再自动关闭。例如当使用者喊出“香蕉皮”时,相对应的湿垃圾桶盖白动打开。使用者喊出“电池”时相对应的有害垃圾的桶盖自动打开。通过这样的识别做到了自主的垃圾分类。减少了人们对垃圾分类概念的含混。其相对应也有一定的缺点:LD3320语音识别模块的语音识别最佳距离是30CM-50CM之间。在串口传输数据的过程中由于外界的噪声十扰,接收到的数据可能不是指定的指令。但这不影响垃圾桶对垃圾的自主分类。
经过测试,垃圾桶反应正常,一切按预期进行。该产品具有灵敏度高,价格相对低廉,操作较简单等优点,在以后的社会发展中具有广泛的应用前景。
参考文献:
[1]何湘智.语音识别的研究与发展[J].计算机与现代化,2002(3):3-6.
[2]薛世君.垃圾分类仍需“三大加强”[N].河南日报,2019-11-26(5).
[3]王伟.基于Arduino平台语音控制仿人类机械头设计[J].电子技术与软件工程,2018(12):28-29.
[4]赵璐,吴蒙.基于Arduino的语音识别与控制系统实现[J].微型机与应用,2015,34(21):55-57,60.
[5]李娅菲.基于Arduino的家用语音机器人控制系统设计[J].办公自动化,2017,22(19):33-35.
[6]李永华,王思野.Arduino案例实战.卷Ⅱ[M].北京:清华大学出版社,2017: 226-236.
【通联编辑:光文玲】
收稿日期:2019 -11-10
作者简介:胥薇,通讯作者。
转载注明来源:https://www.xzbu.com/8/view-15180504.htm