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模块:实时显示垃圾桶负载,也可以搞个智能识别的进行垃圾分类等等