基于STM32的智能垃圾桶

1、项目背景

        随着城市化进程的加快和人们环保意识的增强,城市垃圾管理成为了城市管理的重要一环。传统的垃圾桶由于需要人们手动打开盖子,不仅不便于使用,而且在某些情况下(如手上拿着垃圾或双手不空时)甚至可能导致垃圾散落,对环境造成污染。因此,开发一种能够自动检测并打开盖子的智能垃圾桶,对于提高城市垃圾管理效率、减少环境污染具有重要意义。

2、电路设计

实现效果

        当一个物体和智能垃圾桶的距离小于10cm(可调)时,智能垃圾桶在舵机的作用下的自动打开盖子,LED随之点亮。智能垃圾桶也可以通过按键作用来打开盖子,并点亮LED。在红外传感器检测到垃圾桶满了之后,蜂鸣器开始自动报警,提醒我们垃圾桶满了。

硬件组成

        STM32F103C8T6最小系统板、超声波模块hcsr04、舵机SG90、红外传感器、按键、蜂鸣器、LED灯。

3、部分代码

//main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Servo.h"
#include "Key.h"
#include "LED.h"
#include "HCSR04.h"
#include "Infrared.h"
#include "Buzzer.h"

uint8_t KeyNum;
float Angle;

int main(void)
{ 
//--------------------------外设初始化
	Servo_Init();
	Buzzer_Init();
	Infrared_Init();
	Key_Init();
	LED_Init();
	HCSR04_Init();

//---------------------------	
	Servo_SetAngle(90);  //给舵机一个初始角度


	while (1)
	{
	
		KeyNum = Key_GetNum(); 

		if (KeyNum == 1) //设置按键按下舵机转动
		{
		Servo_SetAngle(0);
		Delay_ms(2000);//延迟两秒
		Servo_SetAngle(90);
		}
		

		if(HCSR04_GetValue()<10) //红外传感器检测到距离小于10cm,打开LED,舵机转动
		{
		LED1_ON();
		Servo_SetAngle(0);
		Delay_ms(2000);//延迟
			if(HCSR04_GetValue()>10)//大于10cm,复位
			{
				Servo_SetAngle(90);
				LED1_OFF();
				
			}
		}
		
		if(Infrared_Get()==0)//红外传感器检测到 打开蜂鸣器
		{
			Buzzer_ON();
		}
		else
		{
		Buzzer_OFF();
		}

	}
}

完整代码

链接:https://pan.baidu.com/s/17x6YwX-RmtydmLEjcWfrzQ?pwd=0hne 
提取码:0hne

改进方向

可以加更多的模块,比如蓝牙模块:遥控开关垃圾桶、语音模块:语音控制垃圾桶的开关、OLED模块:实时显示垃圾桶负载,也可以搞个智能识别的进行垃圾分类等等

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值