零基础学会制作 基于STM32/51单片机的多功能垃圾桶控制系统/智能垃圾桶/垃圾桶/蓝牙/WIFI

项目介绍

本文研究了单片机智能控制的多功能垃圾桶。以STM32F103C8T6单片机为核心,利用语音模块对垃圾进行分类做出反馈,利用SG90舵机模块打开相应种类的垃圾桶盖。其次利用红外检测模块对垃圾桶内的垃圾满溢做出检测,并用通信模块进行通知。本次开发的垃圾桶系统能实现垃圾分类功能,根据用户的声音来识别垃圾的类型,告知用户垃圾类别,并开启相应垃圾箱盖。且具备垃圾桶放满提示功能,垃圾桶满后相应指示灯点亮,并给工作人员发送短信提示及时清理。还具备夜间照明功能,可判断白天、晚上,在晚上时段自动开启照明模式。

功能介绍

随着生活水平的提高,人们对生活品质更为关注,多功能垃圾桶应运而生。本设计要求基于单片机设计多功能垃圾桶,要求其具备太阳能供电、语音提示垃圾类型并分类、短信提示等功能。
1)具备垃圾分类功能,根据用户的声音来识别垃圾的类型,告知用户垃圾类别,并开启相应垃圾箱盖(可识别垃圾类型为4类,可回收垃圾,厨余垃圾,有害垃圾,其他垃圾);
2)具备夜间照明功能,可判断白天、晚上,在晚上时段自动开启照明模式;
3)具备垃圾桶放满提示功能,垃圾桶满后相应指示灯点亮,并给工作人员发送短信提示及时清理。

所用模块

本设计采用了舵机模块、红外检测模块、语音模块、GSM模块、光敏电阻模块、指示照明模块等关键技术。该系统可以通过语音指令自动识别垃圾种类,并将其分类投放到指定的垃圾桶内,实时监测垃圾桶的满载状态。
四个种类垃圾桶并排布置,垃圾桶内部桶壁高处布置红外检测模块。通过红外检测模块感知垃圾桶的填充程度,通过语音模块提醒用户进行垃圾分类,以及垃圾桶满载时的提示,利用GSM模块在垃圾桶满载时给工作人员发送短信提示及时清理垃圾桶,利用光敏电阻模块和指示照明模块在光线不足的情况下提供照明。单片机作为系统的核心控制单元,负责协调各模块的工作,处理数据。舵机模块用于驱动垃圾桶的分类门或盖,根据垃圾种类自动开闭不同的分区。红外检测模块用于垃圾桶满载状态的检测。语音模块播放预录的语音指导,如分类指示和满载警告。GSM模块实现垃圾桶状态的及时反馈。
在这里插入图片描述

系统原理图

在这里插入图片描述

实物图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码

#include “stm32f10x.h” //STM32头文件
#include “sys.h”
#include “delay.h”
#include “led.h”
#include “key.h”
#include “pwm.h”
#include “usart.h”
#include “tim.h”

u16 time_dj = 100;//舵机工作时间
u16 time_ys = 300;//关盖延时时间
u16 ds1 = 0;//延时计数器
u16 ds2 = 0;
u16 ds3 = 0;
u16 ds4 = 0;

u8 flag_open1 = 1;//开盖标志
u8 flag_open2 = 1;
u8 flag_open3 = 1;
u8 flag_open4 = 1;

u8 flag_sd1 = 0;//手动标志
u8 flag_sd2 = 0;
u8 flag_sd3 = 0;
u8 flag_sd4 = 0;

u8 flag_yk1 = 0;//遥控标志
u8 flag_yk2 = 0;
u8 flag_yk3 = 0;
u8 flag_yk4 = 0;

u8 command1 ;//通讯缓存
u8 command2 ;
u8 command3 ;
u8 bommand ;

u8 flag_ljm = 0;//垃圾满
u8 flag_fs1 = 0;
u8 flag_fs2 = 0;
u8 flag_fs3 = 0;
u8 flag_fs4 = 0;
u8 flag_gsm = 0;
u8 flag_light = 1;
u8 k ;

int main (void){//主程序

//初始化程序
delay_ms(100);
RCC_Configuration(); //时钟设置
LED_Init();//LED初始化
delay_ms(500);
led_1=1;//指示灯关
led_2=1;
led_3=1;
led_4=1;
led_5=1;
led_sys=1;
out_beep=1;

TIM3_PWM_Init(59999,23); //设置频率为50Hz,公式为:溢出时间Tout(单位秒)=(arr+1)(psc+1)/Tclk	 20MS = (59999+1)*(23+1)/72000000
//Tclk为通用定时器的时钟,如果APB1没有分频,则就为系统时钟,72MHZ
//PWM时钟频率=72000000/(59999+1)*(23+1) = 50HZ (20ms),设置自动装载值60000,预分频系数24
TIM_SetCompare1(TIM3,1500);
TIM_SetCompare2(TIM3,1500);
TIM_SetCompare3(TIM3,1500);
TIM_SetCompare4(TIM3,1500);
KEY_Init();//按键初始化
TIM4_Init(999,719);//定时器初始化,定时10ms(999,719)
USART1_Init(9600); //串口初始化(参数是波特率)
USART2_Init(115200); //串口初始化(参数是波特率)
USART3_Init(9600); //串口初始化(参数是波特率)
delay_ms(100);

led_5=0;
delay_ms(500);
Specify_Musi_Play(1);
USART2_printf(" USART2 OK!\r\n");
USART3_printf(" USART3 OK!\r\n");

for (k=30;k>1;k--)	{
	led_5=0;
	USART2_printf("AT\r\n");//设置SIM
	delay_ms(50);
	led_5=1;
	delay_ms(10*k);
}
led_5=0;
USART2_printf("ATE0\r");//设置SIM
delay_ms(500);

USART1_printf(" USART1 OK!\r\n");

//主循环
while (1){
	if (!GPIO_ReadInputDataBit(LJMPORT,LJM1)|!GPIO_ReadInputDataBit(LJMPORT,LJM2)|!GPIO_ReadInputDataBit(LJMPORT,LJM3)|!GPIO_ReadInputDataBit(LJMPORT,LJM4))
	{
		flag_ljm=1;    //垃圾满判断
	} else{
		flag_ljm=0;
		flag_gsm=0;
	}
	if (flag_ljm){
		if (ds2>100){
			ds2=0;    //垃圾满报警
			out_beep=~out_beep;
		}}else{
		out_beep=1;
	}

资料下载链接

「实物制作资料.rar」,来自夸克网盘分享。
夸克网盘无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
/9ac5346gXR😕
链接:https://pan.quark.cn/s/d2ad8fd8cd73
提取码:d1hQ

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值