1.简介
本次主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔完垃圾后再自动关闭。
主要内容包括:
(1)红外对管传感器检测是否有人扔垃圾
(2)垃圾桶满报警
(3)步进电机驱动电路的设计

2.硬件设计
(1)总体硬件设计
硬件主要以单片机为核心,通过软件和硬件的结合实现检测到人自动打开垃圾桶盖的效果,并且垃圾桶满了之后有声光提醒。主要通过三大块来设计,包括步进电机驱动电路、检测电路和蜂鸣器报警电路等。
在这里插入图片描述
(2)步进电机驱动电路
步进电机驱动电路采用了ULN2003晶体管阵列芯片,它是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。
在这里插入图片描述
(3)红外检测传感器电路
本次设计采用了两个反射式红外传感器。一个作为周围人体检测,另一个作为检测垃圾是否装满传感器。当红外传感器无检测到目标对象时,传感器为低电平;当传感器检测到目标对象时,传感器为高电平。
在这里插入图片描述
(4)硬件电路图
在这里插入图片描述
3.软件设计
(1)软件流程图
智能垃圾桶系统的软件需要同时是否有人、垃圾桶是否装满、步进电机驱动等任务。在本设计中,当红外检测到有人时,垃圾桶自动打开,从最后一次检测到无人开始计时,5秒后自动垃圾桶关闭。垃圾桶满了之后会声光报警提醒。
在这里插入图片描述
(2)主程序源码

void proc()		//正反转函数
{
	if(open_flag==1&&!open_flag1)	  //关
	{	
		P2=zz[loop];
		loop=(loop+1)%8;
		Delay800us();
		m_i++;
		if(m_i==1080)
		{
			m_i=0;
			open_flag=0;
			open_flag1=1; 
		}
	}
	else if(open_flag==2&&open_flag1)	 //开
	{
		P2=fz[loop];
		loop=(loop+1)%8;
		Delay800us();
		m_i++;
		if(m_i==1080)
		{
			m_i=0;
			open_flag1=0;
			open_flag=0;
		}
	}
} 
void dis_pose()
{
	if(!HW1) 
	{
		led1=0;	
		if(!key1)
		{
			if(key1_flag)
			{
				key1_flag=0;
				if(open_flag1) 
				{
					hand_flag=1;
					open_flag=2;
				}
				else 
				{
					hand_flag=0;
					open_flag=1;
				} 
			}
		}
		else key1_flag=1;
	}
	else 
	{
		led1=1;
		if(!HW2)
		{
			if(HW2_flag)
			{
				HW2_flag=0;
				if(open_flag1) open_flag=2;
			}
		}
		else 
		{
			HW2_flag=1;
		}
	}
}
			
void main()	  
{
	TMOD=0x10;    //定时器0,定时器1,16位工作方式
	EA=1;         //打开总中断0	
	TH1=0x4c;
	TL1=0x00;
	TR1=1;
	ET1=1;
	while(1)
	{	
		if(open_flag==0)
		{
			P2=P2&0xf0;
			m_i=0;
		}
		else 
		{		
			proc();
		}
	} 
}

void time_1() interrupt 3
{
	TH1=0x4c;
	TL1=0x00;
	ms++;
	dis_pose();
	if(!HW1) 
	{
		p_ms++;
		if(p_ms>=200)
		{
			p_ms=0;
			beep_num=8;
		}
	}
	else 
	{
		p_ms=199;
	}
	if(!open_flag1)
	{
		if(hand_flag==0)
		{
			if(HW2)
			{
				c_ms++;
				if(c_ms>=100)
				{
					c_ms=0;
					open_flag=1;
				}
			}
			else 
			{
				c_ms=0;
				open_time++;
				if(open_time>=200)
				{
					open_time=0;
					beep_num=6;
				}
			}
		}
		else
		{
			if(HW2&&HW1)
			{
				c_ms++;
				if(c_ms>=100)
				{
					c_ms=0;
					open_flag=1;
					hand_flag=0;
				}
			}
			else
			{
				c_ms=0;
			}
		}	
	}
	else
	{
		c_ms=0;
		open_time=0;
	}
	if(ms>=2)
	{
		ms=0;
		if(beep_num!=0)
		{
			beep_num--;
			beep=~beep;
		}
		else
		{
			beep=1;
		}
	}
}

源码+PCB+电路图 下载:关注公众号,首页回复“智能垃圾桶”获取资料
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐