当前位置: 首页 > news >正文

【STM32项目开源】基于STM32的智能语音分类垃圾桶

目录

一、设计背景和意义

1.1设计背景

1.2设计意义

二、实物效果展示

2.1实物图片

2.2实物演示视频

三、硬件功能简介

3.1项目功能详解

3.2元器件清单

四、主框图与软件流程图

五、硬件PCB展示

六、软件程序设计

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”


一、设计背景和意义

1.1设计背景

        近年来,随着社会对生态文明建设的不断重视和国家垃圾分类政策的强力推进,城市垃圾处理逐渐向智能化、精细化发展。传统垃圾桶功能单一,依赖用户主观判断垃圾类别,不仅导致分类准确率低,还增加了环卫人员的二次分拣负担。此外,用户在垃圾投放过程中面临“分类知识不清楚”“分类过程麻烦”等现实问题,使得垃圾分类推广效果不尽理想。为了解决这些痛点,急需一种便捷、高效且具备人机交互功能的智能垃圾分类系统,辅助居民完成正确的分类投放操作。

1.2设计意义

        本课题“智能语音分类垃圾桶”正是针对上述问题,结合当下嵌入式控制技术与物联网通信手段,提出以STM32单片机为核心控制平台,集成语音识别模块、光电红外传感器、舵机执行机构和蓝牙通信模块,构建一个能听懂人类指令、能够根据垃圾类型自动分类并进行实时反馈的智能系统。该系统不仅能实现用户语音输入垃圾名称并自动开启相应桶盖的功能,还能通过传感器对垃圾桶溢满情况进行监控,并通过手机APP实现远程查看和控制,极大地增强了系统的智能性与实用性。

二、实物效果展示

2.1实物图片

2.2实物演示视频

【开源】基于STM32的智能语音分类垃圾桶

三、硬件功能简介

3.1项目功能详解

1.语音识别:识别语音指令打开特定的垃圾桶。

2.识别分类:根据说出的垃圾名自动识别分类并且打开对应的垃圾桶。

3.按键控制:按键控制打开对应类型的垃圾桶。

4.溢满检测:通过红外光电传感器识别四个垃圾桶是否溢满

5.舵机驱动:四个舵机驱动控制垃圾桶的开关。

6.OLED显示:显示垃圾桶的开关状态和溢满状态

7.蓝牙App:蓝牙App可远程监控四个垃圾桶的溢满信息,并且控制四个垃圾桶的开关。

3.2元器件清单

  1. 主控STM32F103C8T6最小统板
  2. OLED显示屏幕
  3. JDY31-APP蓝牙模块
  4. 红外对管
  5. SU03T语音模块
  6. 舵机
  7. 按键
  8. LED指示灯

四、主框图与软件流程图

主框图

流程图

五、硬件PCB展示

六、软件程序设计

/**********************************
包含头文件
**********************************/
#include "sys.h"
#include "stdio.h"
#include "string.h"
#include "delay.h"
#include "gpio.h"
#include "key.h"
#include "usart.h"
#include "motor_duoji.h"/**********************************
变量定义
**********************************/
uint8_t key_num = 0;									//按键扫描标志位	
uint32_t time_num = 0;								//10ms计时
uint8_t flag_waste_1 = 0;							//可回收垃圾桶标志位
uint8_t flag_waste_2 = 0;							//厨余垃圾桶标志位
uint8_t flag_waste_3 = 0;							//有害垃圾桶标志位
uint8_t flag_waste_4 = 0;							//其他垃圾桶标志位
extern uint8_t usart2_buf[64];				//串口2接收数组/**********************************
函数声明
**********************************/
void Key_function(void);							//按键函数
void Monitor_function(void);					//监测函数
void Manage_function(void);						//处理函数/****
*******	主函数 
*****/
int main()
{Delay_Init();	    	 								//延时初始化	  Gpio_Init();		  									//IO初始化Key_Init();		  										//按键初始化Motor_Duoji_Init();    							//舵机初始化Motor_Duoji2_Init();   							//舵机初始化Usart1_Init(9600);									//串口1初始化Usart2_Init(9600);									//串口2初始化TIM_SetCompare1(TIM1,1850); 				//PWM输出Delay_ms(100);											//延时100msTIM_SetCompare4(TIM1,1850); 				//PWM输出Delay_ms(100);											//延时100msTIM_SetCompare1(TIM2,1850); 				//PWM输出Delay_ms(100);											//延时100msTIM_SetCompare2(TIM2,1850); 				//PWM输出Delay_ms(100);											//延时100mswhile(1){Key_function();										//按键函数Monitor_function();								//监测函数Manage_function();								//处理函数Delay_ms(10);											//延时10mstime_num++;												//计时变量+1if(time_num >= 5000){time_num = 0;}}
}/****
*******按键函数
*****/
void Key_function(void)
{key_num = Chiclet_Keyboard_Scan(0);		//按键扫描if(key_num != 0)											//有按键按下{switch(key_num){case 1:														//按键1:控制可回收垃圾桶打开TIM_SetCompare1(TIM2,1900); 		//打开Delay_ms(1000);									//延时2sDelay_ms(1000);TIM_SetCompare1(TIM2,1850); 		//关闭break;case 2:														//按键2:控制厨余垃圾桶打开TIM_SetCompare2(TIM2,1900); 		//打开Delay_ms(1000);									//延时2sDelay_ms(1000);TIM_SetCompare2(TIM2,1850); 		//关闭break;case 3:														//按键3:控制有害垃圾桶打开TIM_SetCompare1(TIM1,1900); 		//打开Delay_ms(1000);									//延时2sDelay_ms(1000);TIM_SetCompare1(TIM1,1850); 		//关闭break;case 4:														//按键4:控制其他垃圾桶打开TIM_SetCompare4(TIM1,1900); 		//打开Delay_ms(1000);									//延时2sDelay_ms(1000);TIM_SetCompare4(TIM1,1850); 		//关闭break;default:break;}}
}/****
*******监测函数
*****/
void Monitor_function(void)
{if(USART2_WaitRecive() == 0)					//如果收到数据{if(usart2_buf[0] == 0x01)						//收到语音指令是“废纸|塑料瓶|可回收垃圾”,控制可回收垃圾桶打开{TIM_SetCompare1(TIM2,1900); 			//打开Delay_ms(1000);										//延时2sDelay_ms(1000);TIM_SetCompare1(TIM2,1850); 			//关闭USART2_Clear();										//清空缓存}else if(usart2_buf[0] == 0x02)			//收到语音指令是“剩饭|骨头|厨余垃圾”,控制厨余垃圾桶打开{TIM_SetCompare2(TIM2,1900); 			//打开Delay_ms(1000);										//延时2sDelay_ms(1000);TIM_SetCompare2(TIM2,1850); 			//关闭USART2_Clear();										//清空缓存}else if(usart2_buf[0] == 0x03)			//收到语音指令是“灯泡|有害收垃圾”,控制有害收垃圾桶打开{TIM_SetCompare1(TIM1,1900); 			//打开Delay_ms(1000);										//延时2sDelay_ms(1000);TIM_SetCompare1(TIM1,1850); 			//关闭USART2_Clear();										//清空缓存}else if(usart2_buf[0] == 0x04)			//收到语音指令是“木头|其他垃圾”,控制其他垃圾桶打开{TIM_SetCompare4(TIM1,1900); 			//打开Delay_ms(1000);										//延时2sDelay_ms(1000);TIM_SetCompare4(TIM1,1850); 			//关闭USART2_Clear();										//清空缓存}}
}
/****
*******处理函数
*****/
void Manage_function(void)
{if(IR_1 == 1)													//可回收垃圾桶装满,红灯亮,并通过蓝牙发送"可回收垃圾桶已满"{Delay_ms(1000);if(IR_1 == 1){LED1_G = 1;LED1_R = 0;if(flag_waste_1){UsartPrintf(USART1,"可回收垃圾桶已满\r\n");flag_waste_1 = 0;}}}else																	//未装满,绿灯亮{LED1_G = 0;LED1_R = 1;flag_waste_1 = 1;}if(IR_2 == 1)													//厨余垃圾桶装满,红灯亮,并通过蓝牙发送"厨余垃圾桶已满"{Delay_ms(1000);if(IR_2 == 1){LED2_G = 1;LED2_R = 0;if(flag_waste_2){UsartPrintf(USART1,"厨余垃圾桶已满\r\n");flag_waste_2 = 0;}}}else																	//未装满,绿灯亮{LED2_G = 0;LED2_R = 1;flag_waste_2 = 1;}if(IR_3 == 1)													//有害垃圾桶装满,红灯亮,并通过蓝牙发送"有害垃圾桶已满"{Delay_ms(1000);if(IR_3 == 1){LED3_G = 1;LED3_R = 0;if(flag_waste_3){UsartPrintf(USART1,"有害垃圾桶已满\r\n");flag_waste_3 = 0;}}}else																	//未装满,绿灯亮{LED3_G = 0;LED3_R = 1;flag_waste_3 = 1;}if(IR_4 == 1)													//其他垃圾桶装满,红灯亮,并通过蓝牙发送"其他垃圾桶已满"{Delay_ms(1000);if(IR_4 == 1){LED4_G = 1;LED4_R = 0;if(flag_waste_4){UsartPrintf(USART1,"其他垃圾桶已满\r\n");flag_waste_4 = 0;}}}else																	//未装满,绿灯亮{LED4_G = 0;LED4_R = 1;flag_waste_4 = 1;}
}

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”

http://www.dtcms.com/a/419775.html

相关文章:

  • wordpress建站详细教程网页打不开视频怎么办
  • 【开题答辩全过程】以 基于Java的物流管理系统为例,包含答辩的问题和答案
  • BCEWithLogitsLoss
  • 在线设计网站大全网站建设方案推销
  • CUDA框架
  • 辽阳专业建设网站公司wordpress rss 爬取
  • TypeScript 简介与项目中配置
  • 南宁seo建站seo网站优化排名
  • 【每日一问】老化测试有什么作用?
  • 广州信科做网站dede 门户网站
  • 【JDBC】系列文章第一章,怎么在idea中连接数据库,并操作插入数据?
  • 企业的网站建设朔州网站建设收费
  • 外贸上哪个网站开发客户网站建设费可分摊几年
  • 8. mutable 的用法
  • 做网站 php j2ee做网站投注员挣钱吗
  • 试玩平台网站开发录入客户信息的软件
  • 网站建设谈单情景对话wordpress外网访问错误
  • 怎么学网站开发海阳网站制作
  • 肥东建设局网站家具设计师常去的网站
  • 查网站开通时间网站设计 职业
  • 重庆网站优化搜索引擎优化包括( )方面的优化
  • 助力工业转型升级 金士顿工博会大放异彩
  • 智慧校园智能一卡通管理系统的完整架构与功能模块设计,结合技术实现与应用场景,分为核心平台、功能子系统及扩展应用三部分
  • @[TOC](【笔试强训】Day02) # 1. ⽜⽜的快递(模拟) [题⽬链接: BC64 ⽜⽜的快递]
  • 广州魔站建站3d演示中国空间站建造历程
  • MySQL数据库——13.2.2 JDBC编程-鑫哥演示使用过程
  • AWS实战:轻松创建弹性IP,实现固定公网IP地址
  • 网站制作谁家好vps可以做wordpress和ssr
  • 全能企业网站管理系统Wordpress百万访问优化
  • 东南亚日本股票数据API对接文档