【STM32设计】基于STM32的智能语音垃圾桶设计(实物+资料+论文)


  资料下载:


1、实现功能

(1)多种控制方式支持:按键控制、远程无线控制以及语音识别控制
(2)智能感应与自动开合:能够根据垃圾桶周围人员的接近情况自动开合
(3)消毒功能:系通过紫外线消毒设备,保障垃圾桶在使用过程中的卫生,减少细菌滋生。
(4)安全监控与报警机制:检测到烟雾等潜在危险时,通过报警机制及时提醒用户,确保使用安全。
(5)远程数据通信与监控:用户可以远程监控垃圾桶状态、进行控制操作,并接收相关的报警信息。

可增加的功能:

图像识别垃圾进行分类,垃圾桶内垃圾是否丢满检测

主要元器件:

  STM32F103C8T6最小系统板、SU-03T语音识别模块、红外传感器、SG90舵机、MQ气体传感器、ESP8266 WIFI模块


2、硬件

硬件框图
系统以STM32单片机为核心,结合多种传感器和控制模块,实现智能语音垃圾桶的自动化管理。系统通过三组红外传感器检测垃圾桶周围人员靠近情况,并控制舵机自动开合对应垃圾桶,提高用户投放垃圾的便利性。系统支持按键控制、无线控制和语音识别三种方式,用户可通过语音识别模块识别垃圾类别并打开相应垃圾桶,也可通过WiFi模块在手机APP端远程控制垃圾桶的开关,实现智能化管理。为保障卫生,系统集成紫外线消毒功能,用户可通过语音命令开启紫外线灯,对垃圾桶内部进行消毒杀菌,减少细菌滋生,确保环境安全。系统具备安全监测功能,采用MQ-2传感器实时检测烟雾浓度,若检测到烟雾异常,蜂鸣器将自动报警,提醒用户及时处理,提升垃圾桶的安全性和智能化水平。如图2-1所示为系统设计框图。
在这里插入图片描述

实物

在这里插入图片描述

3、代码

   STM32代码采用C语言,标准库编写,软件是keil5,关键代码有中文注释,看不懂可以VX问我

#include "stm32f10x.h"
#include <stdio.h>
#include <string.h>	
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "pwm.h"
#include "IO_Init.h"
u8 laji_sta;  //1厨余垃圾  2有害 3可回收垃圾

u8 ZL1[5]={0xaa,0x55,0x01,0x55,0xaa};
u8 ZL2[5]={0xaa,0x55,0x02,0x55,0xaa};
u8 ZL3[5]={0xaa,0x55,0x03,0x55,0xaa};
void IO_Init(void) //IO初始化
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA,PORTB时钟

//	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4;        //IO口配置
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //速度为50MHz
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //设置成上拉
// 	GPIO_Init(GPIOA, &GPIO_InitStructure);             //初始化GPIOB4,3
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;        //IO口配置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //速度为50MHz
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //设置成上拉
 	GPIO_Init(GPIOB, &GPIO_InitStructure);             //初始化GPIOB4,3
}
u8 app_uart_recv() //手机APP
{
	u8 app_key;
	app_key=0;
	if(USART1_RX_STA>5)
	{
		delay_ms(50);
		if(strstr((const char *)USART1_RX_BUF,"GPIO0=0"))
		{
			app_key= 1;
		}
		if(strstr((const char *)USART1_RX_BUF,"GPIO0=1"))
		{
			app_key= 2;
		}
		if(strstr((const char *)USART1_RX_BUF,"GPIO0=2"))
		{
			app_key= 3;
		}
		if(strstr((const char *)USART1_RX_BUF,"GPIO0=3"))
		{
//			app_key= 4;
			Led = 1;
		}
		if(strstr((const char *)USART1_RX_BUF,"GPIO0=4"))
		{
			Led = 0;
//			app_key= 5;
		}
		USART1_RX_STA=0;
		memset(USART1_RX_BUF,0,sizeof(USART1_RX_BUF));
	}
	return app_key;
}
u8 yuyin_uart_recv()//语音
{
	u8 yuyin_key;
	yuyin_key = 0;
	if(USART2_RX_BUF[0]==0x01) 
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 1;
	}
	if(USART2_RX_BUF[0]==0x02)
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 2;
	}
	if(USART2_RX_BUF[0]==0x03)
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 3;
	}
	
	if(USART2_RX_BUF[0]==0x04)
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 1;
	}
	if(USART2_RX_BUF[0]==0x05)
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 2;
	}
	if(USART2_RX_BUF[0]==0x06)
	{
		USART2_RX_BUF[0]=0;
		yuyin_key = 3;
	}
	
	if(USART2_RX_BUF[0]==0x07)
	{
		USART2_RX_BUF[0]=0;
		Led = 1;
	}
	if(USART2_RX_BUF[0]==0x08)
	{
		USART2_RX_BUF[0]=0;
		Led = 0;
	}
	return yuyin_key;
}


u8 full1,full2,full3;

int main(void)
{
	u8 time,Flag,i,str[50];
	SystemInit();
	delay_init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //   2组中断分组
//	usart3_Init(115200);
	usart2_Init(115200);
	usart1_Init(115200);
	IO_Init();
	Key_Init();
	Led_Init(); //LED灯
	Esp8266_AP_Init();
	TIM4_PWM_Init(19999,71);
	TIM_SetCompare4(TIM4,500); //50-250
	delay_ms(500);
	TIM_SetCompare3(TIM4,500); //50-250
	delay_ms(500);
	TIM_SetCompare2(TIM4,500); //50-250
	delay_ms(500);
	Beep_Init();		
  while(1)
	{
		delay_ms(10);
		if(PBin(13)==0)
		{
			laji_sta = 1;
		}
		if(PBin(14)==0)
		{
			laji_sta = 2;
		}
		if(PBin(15)==0)
		{
			laji_sta = 3;
		}
		if(time++==50)
		{
			time = 0;
			
			if(PBin(12)==0)
			{
				Beep = !Beep;
			}
			else
				Beep = 1;
		}
//		if(laji_sta==0) 
		if(laji_sta==0) laji_sta=app_uart_recv();
		if(laji_sta==0) laji_sta=yuyin_uart_recv();
		if(laji_sta==0) laji_sta=Key_Scan();
		switch(laji_sta)
		{
			case 1:   //厨余垃圾

				laji_sta = 0;
				TIM_SetCompare4(TIM4,1500); //50-250
				delay_ms(1000);delay_ms(1000);delay_ms(1000);
				TIM_SetCompare4(TIM4,500); //50-250
				delay_ms(500);

				break;
			case 2:  //有害垃圾

				laji_sta = 0;
				TIM_SetCompare3(TIM4,1500); //50-250
				delay_ms(1000);delay_ms(1000);delay_ms(1000);
				TIM_SetCompare3(TIM4,500); //50-250
				delay_ms(500);

				break;
			case 3:  //可回收垃圾
				laji_sta = 0;
				TIM_SetCompare2(TIM4,1500); //50-250
				delay_ms(1000);delay_ms(1000);delay_ms(1000);
				TIM_SetCompare2(TIM4,500); //50-250
				delay_ms(500);

				break;
		}
		
	}
}


4、原理图/PCB

  原理图和PCB都使用立创EDA绘制,对新手较为友好。可以导出为AD格式的文件
在这里插入图片描述
在这里插入图片描述

5、论文

  基于STM32的智能语音垃圾桶设计旨在利用单片机技术、无线通信技术、语音识别技术实现垃圾分类的智能化、自动化和高效管理。系统通过传感器实时监测垃圾桶的状态,并结合智能识别技术引导用户正确投放垃圾,从而提高垃圾分类的准确性和管理效率。系统设计的章节结构具体安排如下:
  第一章绪论:主要介绍研究背景,分析智能语音垃圾桶的研究现状与发展趋势,阐明本设计的研究动机和目标。通过分析国内外相关研究的现状,表明系统设计的可行性。
  第二章系统总体设计:根据系统需求分析,明确系统功能模块及总体设计方案,对传感器检测、语音识别、无线通信等各个模块进行详细功能设计,确定各模块的硬件和软件需求,提出系统实现的基本框架。
  第三章系统硬件电路设计:详细描述系统各硬件部分的设计,包括STM32单片机的硬件设计、电路原理图、无线通信模块、传感器模块的连接等。
  第四章系统软件程序设计:介绍系统的软件设计过程,主要包括系统控制程序、数据采集与处理、信息传输及远程控制等内容,详细说明各功能模块的软件架构与流程控制。
  第五章系统调试及实物功能测试:介绍系统硬件和软件的集成过程,阐述系统各部分如何协同工作。详细描述系统测试与调试过程,分析测试结果并提出系统优化方案。
  第六章总结与展望:总结系统设计与实现的主要内容,分析智能语音垃圾桶系统的实际应用价值与创新性,展望系统未来可能的发展方向,并提出后续研究的重点。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值