当前位置:   article > 正文

基于STM32的智能语音垃圾桶_智能垃圾桶 csdn

智能垃圾桶 csdn

摘要

一、项目方案

二、主要模块

三、代码展示

四、不足与展望

五、邮箱(2745192983@qq.com)

摘要:近年来,随着社会经济的不断发展、城市规模的不断扩大以及人们消费水平的不断提高,城市生活产生的垃圾总量也在不断增加,由此导致的环境污染问题日益严峻,虽待解决。垃圾桶作为收纳废弃物的一种工具,正在城市生活垃圾管理系统中被应用,不仅分类垃圾桶得到大面积普及,而且智能垃圾桶也得到飞速发展,它们的出现极大地方便了环卫工人的清洁以及有效降低了废弃物对环境的影响。智能垃圾桶地应势而生,也蕴含着高新技术的突破和发展,对于任何高新技术产品都应当具有一定的实用性,而怎样以最低的成本去开发出一款高性能低功耗以及长使用寿命的实用产品才是本设计研究的重点。

        基于STM32的智能语音垃圾识别系统采用STM32F103C8T6为智能控制中心,结合分离式红外测距模块(垃圾量检测),红外避障管模块(检测是否有人),蓝牙模块(传输数据),舵机模块(控制垃圾桶盖开关)、报警模块,OLED智能显示模块,LED灯光提示,语音识别播报模块,以及外围辅助电路,去构成一个基于语音识别的多功能智能垃圾管理系统。

关键词:垃圾桶;智能控制;智能环卫;语音识别;节能环保

一、 项目方案

  1. 系统功能设计

        本设计以STM32F103C8T6单片机为核心控制器,加上其他的模块一起组智能垃圾桶的整个系统,其中包含主控部分、输入部分和输出部分。主控部分采用了STM32F103C8T6单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。

        输入由五部分组成,第一部分是红外对射管模块,通过该模块分别监测可回收垃圾桶、厨余垃圾桶、有害垃圾桶、其他垃圾桶是否装满;第二部分是语音识别模块,通过该模块可接收语音指令控制垃圾桶打开,进行垃圾分类;第三部分是蓝牙模块,通过该模块给手机发送垃圾桶已满的提示;第四部分是独立按键,通过四个独立按键控制可回收垃圾桶、厨余垃圾桶、有害垃圾桶、其他垃圾桶的盖子打开;第五部分是供电电路,给整个系统进行供电。 输出由三部分组成,第一部分是舵机模块,通过该模块可以打开对应垃圾桶的盖子;第二部分是LED指示灯模块,当红灯亮起是代表对应垃圾桶已满,当绿色指示灯亮起时,代表未满;第三部分是OLED显示模块,OLED模块可以显示当前垃圾同的溢出状态。

图1.1.1系统框图

2.系统原理设计

原理图如图1.2.1所示,电路设计主要包括STM32主控电路、LED指示灯电路、按键电路、电源供电电路以及其他模块电路。

图1.2.1 原理图设计

3.软件设计

①主程序流程设计

        系统的主流程图如图1.3.1所示;在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数进行获取按键键值,第二部分通过键值进行相应的处理操作,比如控制可回收垃圾桶打开、厨余垃圾桶打开、有害垃圾桶打开、其他垃圾桶打开等;紧接着进入第二个函数监测函数,该函数主要通过语音指令分别控制对应垃圾桶打开,比如收到语音指令是“书|易拉罐|可回收垃圾”,控制可回收垃圾桶打开,收到语音指令是“香蕉皮|骨头|厨余垃圾”,控制厨余垃圾桶打开,收到语音指令是“电池|有害收垃圾”,控制有害收垃圾桶打开,收到语音指令是“木头|其他垃圾”,控制其他垃圾桶打开;紧接着进入第三个函数处理函数,该函数主要通过红外对射管检测可回收垃圾桶是否装满,如果装满,红灯亮,并通过蓝牙发送"可回收垃圾桶已满",未装满,绿灯亮。如果厨余垃圾桶装满,红灯亮,并通过蓝牙发送"厨余垃圾桶已满",未装满,绿灯亮。如果有害垃圾桶装满,红灯亮,并通过蓝牙发送"有害垃圾桶已满",未装满,绿灯亮。如果其他垃圾桶装满,红灯亮,并通过蓝牙发送"其他垃圾桶已满",未装满,绿灯亮。

图1.3.1 程序总体流程图

②按键函数流程设计

        按键函数子流程图如图1.3.2所示;按键设置函数首先通过按键扫描函数,获取按键按下的键值,通过不同的键值,进行相应变量的改变。如果获取的键值为1,控制可回收垃圾桶打开,延时2s,关闭。如果获取的键值为2,控制厨余垃圾桶打开,延时2s,关闭。如果获取的键值为3,控制有害垃圾桶打开,延时2s,关闭。如果获取的键值为4,控制其他垃圾桶打开,延时2s,关闭。

图1.3.2 按键函数子流程图图                       图1.3.3处理函数子流程图                       

③处理函数流程设计

        按键函数子流程图如图1.3.2所示;按键设置函数首先通过按键扫描函数,获取按键按下的键值,通过不同的键值,进行相应变量的改变。如果获取的键值为1,控制可回收垃圾桶打开,延时2s,关闭。如果获取的键值为2,控制厨余垃圾桶打开,延时2s,关闭。如果获取的键值为3,控制有害垃圾桶打开,延时2s,关闭。如果获取的键值为4,控制其他垃圾桶打开,延时2s,关闭。

2、 主要模块简介

(1)STM32F103C8T6简介

本设计主控部分采用了STM32F103C8T6单片机,最小系统如图2.1.1。

STM32F103C8T6是一种基于ARM Cortex-M3内核的单片机芯片,主要特点包括:

1.快速的处理能力:Cortex-M3内核的主频高达72MHz,能够快速处理复杂的控制任务。

2.强大的外设支持:STM32F103C8T6提供了包括ADC、DAC、I2C、SPI、USART等多种常用外设,能够满足各种应用需求。

3.可扩展性强:STM32F103C8T6提供了扩展接口,可以扩展更多的外设或者接入外部存储器。

4.低功耗:STM32F103C8T6提供了多种低功耗模式,可以在保证性能的同时降低功耗。

图2.1.1 STM32C8T6原理图

(2)SNR8016VR语音模块简介

本设计语音识别部分采用了SNR8016VR,原理图如图2.2.1;上位机采用智能公元平台,操作界面如图2.2.2。

串口输出设置步骤:

1、Pin 脚配置。(以 GPIO_B6 GPIO_B7 为例)

默认波特率:9600,用户可自行设置

2、离线命令词与应答语自定义 >>控制详情>>添加控制>>串口输出 16 进制参数自定义

设置是否需要回复语:

图2.2.1 SNR8016VR原理图

图2.2.2 智能公元平台操作界面

3、代码展示

  1. (1)SNR8016VR通过串口与STM32通信
  2. /********************************************************************/
  3. void Monitor_function(void)
  4. {
  5. if(USART2_WaitRecive() == 0) //如果收到数据
  6. {
  7. if(usart2_buf[0] == 0x00) //收到语音指令是“垃圾桶打开”,收垃圾桶打开
  8. {
  9. TIM_SetCompare1(TIM2,1900); //打开
  10. TIM_SetCompare2(TIM2,1900); //打开
  11. TIM_SetCompare4(TIM1,1900); //打开
  12. TIM_SetCompare1(TIM1,1900); //打开
  13. USART2_Clear(); //清空缓存
  14. }
  15. else if(usart2_buf[0] == 0x01) //收到语音指令是“垃圾桶关闭”,垃圾桶关闭
  16. {
  17. TIM_SetCompare1(TIM2,1850); //打开
  18. TIM_SetCompare2(TIM2,1850); //打开
  19. TIM_SetCompare4(TIM1,1850); //打开
  20. TIM_SetCompare1(TIM1,1850); //打开
  21. USART2_Clear(); //清空缓存
  22. }
  23. else if(usart2_buf[0] == 0x02) //收到语音指令是“书|瓶子|可回收垃圾”,控制可回收垃圾桶打开
  24. {
  25. TIM_SetCompare1(TIM2,1900); //打开
  26. Delay_ms(1000); //延时
  27. TIM_SetCompare1(TIM2,1850); //关闭
  28. USART2_Clear(); //清空缓存
  29. }
  30. else if(usart2_buf[0] == 0x03) //收到语音指令是“香蕉皮|苹果|厨余垃圾”,控制厨余垃圾桶打开
  31. {
  32. TIM_SetCompare2(TIM2,1900); //打开
  33. Delay_ms(1000); //延时
  34. TIM_SetCompare2(TIM2,1850); //关闭
  35. USART2_Clear(); //清空缓存
  36. }
  37. else if(usart2_buf[0] == 0x04) //收到语音指令是“电池|口罩|有害垃圾”,控制有害收垃圾桶打开
  38. {
  39. TIM_SetCompare1(TIM1,1900); //打开
  40. Delay_ms(1000); //延时
  41. TIM_SetCompare1(TIM1,1850); //关闭
  42. USART2_Clear(); //清空缓存
  43. }
  44. else if(usart2_buf[0] == 0x05) //收到语音指令是“卫生纸|花生壳|其他垃圾”,控制其他垃圾桶打开
  45. {
  46. TIM_SetCompare4(TIM1,1900); //打开
  47. Delay_ms(1000); //延时
  48. TIM_SetCompare4(TIM1,1850); //关闭
  49. USART2_Clear(); //清空缓存
  50. }
  51. }
  52. }
  53. /********************************************************************/
  54. (2)红外监测模块控制函数
  55. void Manage_function(void)
  56. {
  57. if(IR_1 == 1) //可回收垃圾桶装满,红灯亮,并通过蓝牙发送"可回收垃圾桶已满"
  58. {
  59. Delay_ms(1000);
  60. if(IR_1 == 1)
  61. {
  62. LED1_G = 1;
  63. LED1_R = 0;
  64. if(flag_waste_1)
  65. {
  66. UsartPrintf(USART1,"可回收垃圾桶已满\r\n");
  67. flag_waste_1 = 0;
  68. Oled_ShowCHinese(1,0,"可回收垃圾:溢出");
  69. }
  70. }
  71. }
  72. else //未装满,绿灯亮
  73. {
  74. LED1_G = 0;
  75. LED1_R = 1;
  76. flag_waste_1 = 1;
  77. }
  78. if(IR_2 == 1) //厨余垃圾桶装满,红灯亮,并通过蓝牙发送"厨余垃圾桶已满"
  79. {
  80. Delay_ms(1000);
  81. if(IR_2 == 1)
  82. {
  83. LED2_G = 1;
  84. LED2_R = 0;
  85. if(flag_waste_2)
  86. {
  87. UsartPrintf(USART1,"厨余垃圾桶已满\r\n");
  88. flag_waste_2 = 0;
  89. Oled_ShowCHinese(2,0,"厨余垃圾:溢出");
  90. }
  91. }
  92. }
  93. else //未装满,绿灯亮
  94. {
  95. LED2_G = 0;
  96. LED2_R = 1;
  97. flag_waste_2 = 1;
  98. }
  99. if(IR_3 == 1) //有害垃圾桶装满,红灯亮,并通过蓝牙发送"有害垃圾桶已满"
  100. {
  101. Delay_ms(1000);
  102. if(IR_3 == 1)
  103. {
  104. LED3_G = 1;
  105. LED3_R = 0;
  106. if(flag_waste_3)
  107. {
  108. UsartPrintf(USART1,"有害垃圾桶已满\r\n");
  109. flag_waste_3 = 0;
  110. Oled_ShowCHinese(3,0,"有害垃圾:溢出");
  111. }
  112. }
  113. }
  114. else //未装满,绿灯亮
  115. {
  116. LED3_G = 0;
  117. LED3_R = 1;
  118. flag_waste_3 = 1;
  119. }
  120. if(IR_4 == 1) //其他垃圾桶装满,红灯亮,并通过蓝牙发送"其他垃圾桶已满"
  121. {
  122. Delay_ms(1000);
  123. if(IR_4 == 1)
  124. {
  125. LED4_G = 1;
  126. LED4_R = 0;
  127. if(flag_waste_4)
  128. {
  129. UsartPrintf(USART1,"其他垃圾桶已满\r\n");
  130. flag_waste_4 = 0;
  131. Oled_ShowCHinese(4,0,"其他垃圾:溢出");
  132. }
  133. }
  134. }
  135. else //未装满,绿灯亮
  136. {
  137. LED4_G = 0;
  138. LED4_R = 1;
  139. flag_waste_4 = 1;
  140. }
  141. }
  142. /********************************************************************/

4 、不足与挑战:

(1)不足:

1. 精准度:目前智能语音垃圾识别系统的精准度还有待提高,特别是在嘈杂环境下和方言识别方面,需要进一步优化算法和模型。

2. 低功耗:一些智能语音垃圾识别系统需要改进以实现更低的功耗,特别是对于移动设备和电池供电的应用而言。

3. 实时性:一些系统可能在实时处理和识别方面存在一定的延迟,需要提高系统的实时性和响应速度。

(2)展望:

1. 精准度提升:利用更先进的深度学习算法和大量数据进行训练,以提高系统的识别精准度和准确性。

2. 低功耗设计:优化系统架构和算法,实现更低的功耗,以适应移动设备和环保要求。

3. 实时性和响应速度:通过优化系统的处理流程、提高算法效率以及硬件性能的提升,实现更快的实时响应能力。

4. 多语种支持:除了普通话和英语等主流语言外,系统还应该具备更广泛的语言支持,以适应全球范围的应用。  

5. 结合其他传感器和设备:将智能语音垃圾识别系统与其他传感器和设备结合,例如摄像头、红外传感器等,进一步提升环境识别能力和用户体验。

综上所述,随着人工智能和嵌入式系统技术的不断发展,基于STM32的智能语音垃圾识别系统有望在精准度、功耗、实时性等方面取得更大的突破和进步,为智能语音识别技术在垃圾分类、环境保护和资源回收等领域的应用提供更广阔的发展空间。

参考文献:

[1] 胡乾斌,李光斌等.《单片机微型计算机原理与应用》第三版. 武汉:华中科技大学出版社,2014.12 

Hu Ganbin, Li Guangbin, et al. Principle and Application of Single-Chip Microcomputer, 3rd edition. Wuhan: Huazhong University of Science and Technology Press, 2014.12

  1. 【野火®】零死角玩转STM32—F103指南者
  2. 【正点原子】STM32F103开发板

视频如下

蓝牙控制测试-CSDN直播

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/560104
推荐阅读
相关标签
  

闽ICP备14008679号