资料下载:
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单片机的硬件设计、电路原理图、无线通信模块、传感器模块的连接等。
第四章系统软件程序设计:介绍系统的软件设计过程,主要包括系统控制程序、数据采集与处理、信息传输及远程控制等内容,详细说明各功能模块的软件架构与流程控制。
第五章系统调试及实物功能测试:介绍系统硬件和软件的集成过程,阐述系统各部分如何协同工作。详细描述系统测试与调试过程,分析测试结果并提出系统优化方案。
第六章总结与展望:总结系统设计与实现的主要内容,分析智能语音垃圾桶系统的实际应用价值与创新性,展望系统未来可能的发展方向,并提出后续研究的重点。