基于STM32单片机的智能视力保护台灯设计

硬件方案

智能台灯以专门感应人体红外信号的红外传感器为基础,这意味着仅当有人的时候,红外传感器才输出一个信号,经放大处理后达到单片机的输入门限电压,单片机开始运行,台灯自动点亮。当人离开的时候,单片机控制台灯自动关闭,以达到节约用电的目的。此外,通过功能按键可以设置台灯的工作模式分为自动和手动,在此之前如果检测到人坐姿不正确可以通过红外光电进行检查,台灯上的蜂鸣器将会响起,提醒使用者应该注意坐姿,这个功能可以帮助保护使用者的视力。
整体电路主要由stm32单片机最小系统,光敏电阻检测电路,红外人体检测电路,OLED显示电路,DS1302时钟电路,LED台灯模块,蜂鸣器报警电路;原理图如图:
在这里插入图片描述
PCB图如下:
在这里插入图片描述

设计功能

1.通过光敏采集当前光线强度,通过单片机内部AD进行模数转换,通过人体红外检测当前是否有人。
2.采用OLED液晶显示屏来显示,用于显示当前的时间、光强度、控制模式、姿势提醒等。
3.通过单片机的PWM引脚,根据不同光线情况下来调整PWM的占空比,以达到调节当前灯光亮度。
4.通过DS1302时钟芯片显示当前的时间,并可以通过按键设置提示时间。
5.通过光电传感器检测坐姿,当坐姿不正导致红外光电开关被遮挡时被判断坐姿不正确。如果坐姿不正或者是定时时间到后蜂鸣器会进行提醒。

主程序源码

int main(void)
{
	char i=0;
	
	DelayInit();
	I2C_Configuration(); //IIC初始化
	OLED_Init(); //OLED初始化
	KEY_Init(); //按键初始化
	BEEP_AND_GD_RTHW_GPIO_Config();
    OLED_CLS();//清屏
	DS1302_Init(&SysDate);
	DelayMs(100); 
	DS1302_DateRead(&SysDate);//读时间 
	OLED_CLS();//清屏
	for(i=0;i<4;i++)OLED_ShowCN(i*16,2,i+8,0);//测试显示中文:亮度等级
	OLED_ShowStr(62,2,": ",2);//显示冒号
	for(i=0;i<4;i++)OLED_ShowCN(i*16,4,i,0);//测试显示中文:提醒时间
	DisplayMode();
	Adc_Init();
    TIM2_Init(49,71);     //定时器初始化,定时50us
	TIM3_Init(499,7199);  //定时器初始化,定时50ms
	//Tout = ((arr+1)*(psc+1))/Tclk ;  
	//Tclk:定时器输入频率(单位MHZ)
	//Tout:定时器溢出时间(单位us)
	while(1)
	{
		  KeySettings();
	    DisplayTime();
		  DisplayTiXingTime();
		  AutoHandle();
		  LedGearHandle(GearTemp);
		  if(GD == 0)//检测坐姿不正确
			{
					if(PostureFlag==0)
					{
							PostureFlag=1;
						  BEEP=1;//蜂鸣器提醒
						  OLED_CLS();//清屏
						  for(i=0;i<6;i++)OLED_ShowCN(i*16+16,2,i+16,0);//测试显示中文:请注意坐姿!
						  DelayMs(1000); 
						  OLED_CLS();//清屏
						  for(i=0;i<4;i++)OLED_ShowCN(i*16,2,i+8,0);//测试显示中文:亮度等级
							OLED_ShowStr(62,2,": ",2);//显示冒号
							for(i=0;i<4;i++)OLED_ShowCN(i*16,4,i,0);//测试显示中文:提醒时间
						  DisplayMode();
					}
			}
			else
			{
					PostureFlag=0;
			}
	}
}

资料链接:https://pan.baidu.com/s/1h609T4krQL4XSxzR2Nubpw?pwd=39pq

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值