【STM32项目开源】STM32单片机智能台灯系统

目录

一、设计背景和意义

1.1设计背景:

1.2设计意义:

二、实物展示

三、硬件功能介绍

[2.1 硬件清单:](#2.1 硬件清单:)

[2.2 功能介绍:](#2.2 功能介绍:)

四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示

七、单片机实物资料

[资料获取 查看主页介绍:兆龙电子单片机设计](#资料获取 查看主页介绍:兆龙电子单片机设计)


一、设计背景和意义

1.1设计背景:

在现代家庭、办公场所及学习空间的日常照明管理中,台灯的舒适性、节能性与智能化控制是核心需求。传统台灯存在明显局限:一方面,高端智能台灯(如品牌定制化护眼灯、商用级智能照明系统)功能虽全但成本高昂,安装调试复杂,依赖特定品牌售后支持,难以普及到普通家庭、学生宿舍等场景,且设备兼容性差,更换或升级成本高,无法灵活满足不同人群的照明习惯需求;另一方面,普通简易台灯(如基础按键式、旋钮调光型)虽操作简单,但功能单一,仅能实现基础的开关与亮度调节,缺乏光照强度自适应、色温精准控制、人体感应开关及用眼健康提醒等功能,无法满足现代化生活场景下对用眼健康、便捷管理的需求。

现有台灯控制方案还存在功能割裂与集成度低的问题:部分高端照明设备虽具备多模式控制与健康监测功能,但依赖复杂的电路设计与专业维护,后期使用成本高,难以覆盖预算有限的家庭或学生群体;而低成本台灯又在功能完整性与智能化上存在欠缺,无法实现照明数据与移动端 APP、健康提醒的联动,导致照明能耗浪费严重、用眼健康无法保障,无法为用户照明习惯分析及设备优化管理提供数据支撑。基于此,本设计以 STM32 单片机为核心,融合高精度参数采集模块(如光照传感器、人体红外传感器、温湿度传感器、亮度检测模块)、OLED 显示模块、数据存储模块及 PWM 调光与报警模块,构建低成本、高集成度的 STM32 单片机多功能智能台灯系统,以解决传统台灯设备功能单一、智能化程度低、能耗高及健康保护不足的问题。

1.2设计意义:

本设计通过整合 STM32 单片机的高效数据处理能力与多模块协同工作机制,在智能照明管理领域具有多重实用价值,具体体现在以下三方面:

从使用体验与管理效率角度,该系统突破了传统台灯的局限:一是实现了多参数同步监测与多功能联动(如支持环境光照、人体存在状态、环境温湿度、灯光亮度等核心指标,联动 PWM 调光模块、色温调节模块、自动开关、定时提醒等功能),无需人工频繁操作或查看状态,减少操作繁琐性;二是配备 OLED 实时显示模块,直观呈现当前光照强度、色温、运行模式及用眼时长,同时支持数据自动存储(可通过 SD 卡或 WiFi 传输至手机 APP / 云端平台),方便用户长期追溯照明数据与设备运行规律,为用眼健康分析与设备管理优化提供完整数据支撑;三是新增异常预警与自动调控功能,当监测到某项参数超出舒适范围(如光照过强 / 过弱、连续用眼超时、环境湿度过高)时,系统自动触发声光报警,同时联动调光模块调节亮度、切换护眼模式、启动休息提醒等,无需人工干预即可及时处理异常,大幅提升了照明管理的便捷性与健康性。

从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度参数传感器(如 BH1750 光照传感器、HC-SR501 人体红外传感器、DHT11 温湿度传感器、光敏电阻检测模块)与通用外围模块,在保证数据精度(光照测量误差可控制在 ±5lux 以内,亮度调节响应时间可控制在 1 秒以内)的前提下,有效降低了系统整体成本,相比同功能的高端智能台灯成本降低 40%-60%,更易普及到普通家庭、学生宿舍及小型办公等场景。同时,系统支持模块化扩展(如后续可新增语音控制模块、远程预约功能),为后续功能升级预留了空间,具备良好的灵活性与可扩展性。

从应用场景与行业价值角度,该系统可广泛适配多类照明场景:在普通家庭生活中,可作为家庭学习的智能照明中心,实时调控亮度色温、监测用眼时长,保障用眼健康;在高校电子信息与自动化相关专业教学中,可作为单片机应用与智能设备控制的实践案例,帮助学生理解嵌入式系统与多种传感器协同工作原理;在学生宿舍或小型办公室场景中,可为用户提供低成本的智能照明方案,减少能耗浪费与设备维护成本,提升照明体验。此外,本设计探索了 STM32 单片机在低成本智能照明设备领域的应用方案,推动传统台灯从 "单一开关、手动调光" 向 "多参数监测、智能控制、健康响应" 升级,为低成本智能化照明设备的开发提供了可参考的集成思路,具有较好的实践应用与行业推广价值。

**二、**实物展示

下方为实物演示视频

点击下方链接跳转演示视频https://www.bilibili.com/video/BV15haJz1EfS/?spm_id_from=333.1387.upload.video_card.click&vd_source=2a672ca4e8794dca68cbe6d047b42ca5

下方为实物展示图片

三、硬件功能介绍

2.1 硬件清单:

  • STM32F103C8T6
  • OLED液晶显示
  • 超声波传感器
  • SR501人体感应传感器
  • 大功率LED
  • 光照采集电路
  • 声光报警电路
  • 蓝牙模块

2.2 功能介绍:

(1)智能感应:根据人体感应是否有人进行控制LED灯条亮灭
(2)智能调光:根据外界光线变化,LED灯条自动调节亮度
(3)启动控制:通过按键控制开/关灯
(4)亮度控制:按键控制灯条的亮度(三档亮度)
(5)计时功能:按键启动计时 累计台灯运行时间(作息时间)
(6)OLED显示屏:当前模式、环境光线、当前亮度、超声波距离
(7)手机APP远程端控制:采用蓝牙通讯,用户可以在手机APP 端进行控制启动、亮度、计时、模式选取

四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示

复制代码
#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "beep.h"
#include "OLED_I2C.h"
#include "csb.h "
#include "adc.h"
#include "time.h"
#include "button.h"

extern uint16_t Serial_RxData;
extern uint8_t Serial_RxFlag;
float temp;   
extern u8 Res;
extern int miao,fen,shi;
int a=0;//按键的值
int flag=1;//自动手动
u16 adcx;
int miao=0,fen=0,shi=0;
u16 distance_set=15;
u8 SendString[20];		//向蓝牙发送的显示信息
 int main(void)
 {	
	 uint16_t distance;
	 vu8 key=0;  
	 int time_flag=0,level=3;  //time_flag代表开关定时器,计时,level代表灯的亮度等级
	int miao_flag=0,fen_flag=1,shi_flag=0; //代表计时时间,时间到,报警提示久座
	delay_init();	    //延时函数初始化	 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	BEEP_Init();		  	//初始化与LED连接的硬件接口
	KEY_Init();         //按键初始化
	I2C_Configuration();  //i2c初始化,oled屏采用的i2c
	Adc_Init();		  		//ADC初始化	
	uart_init(9600);               //串口初始化
	Hcsr04Init();        //超声波初始化
	OLED_Init();
	OLED_Fill(0xFF);//全屏点亮
	delay_ms(2);
	OLED_Fill(0x00); 
	delay_ms(2);
	delay_ms(100);
	OLED_CLS(); //清屏
	alarm();
  OLED_SHOW_A();
	miao=0;fen=0;shi=0;
	EXTIx_Init();
	while(1)
	{

		//光照强度采集
		adcx=Get_Adc_Average(ADC_Channel_1,5);
		adcx=(float)adcx/40.95;
		OLED_ShowNums(40,2,adcx,3,1);
		delay_ms(50);	//延时300ms
		//超声波数据采集
		distance = Hcsr04GetLength();
		OLED_ShowNums(40,4,distance,3,1);
		if(distance>400)
			distance=400;
		if(KEY5==1)
		{
			if(distance<distance_set) //距离小于15
			 beep=~beep;							//		蜂鸣器报警
			else
				beep=0;
		}
		else
			beep=0;

		//hcsr501人体检测
		if(KEY5==1)
			OLED_ShowCN(96,2,8);  //有
		else
			OLED_ShowCN(96,2,9);  //无

		switch(a)
		{
			case 1:
				time_flag+=1;
				time_flag%=2;

				miao=0;
				fen =0;
				shi=0;
				a=0;
				break;
			case 2:
				if(flag%2==0)
					level--;
				if(level==0)
					level=1;
				a=0;
				break;
			case 3:
				if(flag%2==0)
					level++;
				if(level==6)
					level=5;
				a=0;
				break;
			case 4:
				flag+=1;  			 
				a=0;
				break;
		}


			TIM_SetCompare1(TIM1,0);  //关台灯
			OLED_ShowChar(98,6,' ');
			OLED_ShowChar(106,6,' ');
			OLED_ShowChar(114,6,' ');

		//显示时间 
		OLED_ShowNums(40,6,fen,2,1);
		OLED_ShowChar(60,6,':');
		OLED_ShowNums(70,6,miao,2,1);


	}
 }
void EXTI15_10_IRQHandler(void)  //按键中断处理函数
{                                                           
	if(EXTI_GetITStatus(EXTI_Line12) == SET) //计时
	{
		a=4;
		EXTI_ClearITPendingBit(EXTI_Line12);//清除中断挂起标志位	
	}
	if(EXTI_GetITStatus(EXTI_Line13) == SET) //控制灯亮度减弱 
	{
		a=3;
		EXTI_ClearITPendingBit(EXTI_Line13);//清除中断挂起标志位	
	}                                        //控制灯亮度增加
	if(EXTI_GetITStatus(EXTI_Line14) == SET)
	{
		a=2;
		EXTI_ClearITPendingBit(EXTI_Line14);//清除中断挂起标志位	
	}
	if(EXTI_GetITStatus(EXTI_Line15) == SET)  //切换模式
	{
			if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0)  //切换模式
			{
				a=1;
			}
		EXTI_ClearITPendingBit(EXTI_Line15);//清除中断挂起标志位
	}			
}

七、单片机实物资料

资料获取 查看主页介绍:兆龙电子单片机设计

相关推荐
_xaboy3 小时前
开源设计器 FcDesigner 限制组件是否可以拖入的教程
前端·vue.js·低代码·开源·表单设计器
xiaoqian99973 小时前
Gatekeeper:开源API访问控制框架全解析
其他·开源
Leinwin3 小时前
微软重磅发布开源引擎Microsoft Agent Framework
microsoft·开源
sheepwjl3 小时前
《嵌入式硬件(十七):基于IMX6ULL的温度传感器LM75a操作》
单片机·嵌入式硬件·imx6ull·lm75a
liujing102329293 小时前
stm32_基于 STM32U575 的飞行器姿态实时监控系统
stm32
ITZHIHONH3 小时前
DeerFlow多智能体项目分析-通过LangGraph实现工作流的源码解析
ai·开源·agent·ai编程
塔能物联运维4 小时前
物联网设备固件版本智能管理与自动化更新策略
运维·物联网·自动化
DisonTangor7 小时前
MiniMax 开源一个为极致编码与智能体工作流打造的迷你模型——MiniMax-M2
人工智能·语言模型·开源·aigc
jmlinux9 小时前
stm32与串口屏双向通讯官方例程
c语言·stm32·单片机·嵌入式硬件·物联网