STM32智能台灯项目详解:从硬件设计到云端控制
创作时间:
作者:
@小白创作中心
STM32智能台灯项目详解:从硬件设计到云端控制
引用
1
来源
1.
https://m.elecfans.com/article/6481788.html
本文将介绍一个基于STM32的智能台灯项目,该台灯集成了温湿度检测、光照强度检测、人体感应等多种功能,并可通过手机APP进行远程控制。项目使用STM32F103C8T6作为主控芯片,通过ESP8266模块接入机智云平台,实现了数据的云端存储和远程控制。
项目简介
功能详解
STM32智能台灯(机智云)系统具有以下功能:
- 检测功能:系统可以检测周围环境的温湿度数据、距离、人体信号、光照强度(Lux)。
- 显示功能:将检测到的数据在OLED屏幕上显示。
- 控制功能:系统可以通过PWM对台灯进行无极调光。
- 手动模式:通过按键控制台灯的亮度。
- 自动模式:当环境亮度低于阈值,并且有人时,会自动调节台灯亮度。
- 护眼功能:当系统检测到人距离台灯过近时,蜂鸣器会发出报警。
- 阈值调节:系统传感器阈值大小可以通过按键或者APP自行设置调节。
- 接入云平台:系统通过ESP8266 WIFI模块连接网络,接入机智云服务器。
- 远程控制:可以通过APP查看传感器数据,以及远程控制台灯、远程调节阈值。
材料清单
- STM32F103C8T6核心板
- DHT11 温湿度传感器
- OLED屏幕
- 蜂鸣器模块
- 超声波模块
- 热释电人体检测模块
- LED灯
- 电池座
- 独立按键
- ESP8266-01S wifi模块
- 云平台机智云
原理图设计
PCB硬件设计
PCB图:
程序设计
int main(void)
{
ADCX_Init();
PWM_Init(100 - 1, 720 - 1);
Timer2_Init(9,14398);
Uart2_Init(9600);
Uart1_Init(115200);
IWDG_Init(); //初始化看门狗
LDR_Init();
OLED_Init();
DHT11_Init();
LED_Init();
Key_Init();
HC_SR501_Init();
HC_SR04_Init();
Buzzer_Init();
MyRTC_Init();
Sensorthreshold.Illumination_threshold = FLASH_R(FLASH_START_ADDR); //从指定页的地址读FLASH
Sensorthreshold.Distance_threshold = FLASH_R(FLASH_START_ADDR+2); //从指定页的地址读FLASH
GENERAL_TIM_Init();
userInit(); //完成机智云初始赋值
gizwitsInit(); //开辟一个环形缓冲区
//GPIO_SetBits(Buzzer_PROT, Buzzer);
//Delay_ms(1200);
while (1)
{
IWDG_ReloadCounter(); //重新加载计数值 喂狗
sensorScan(); //获取传感器数据
switch (menu)
{
case display_page:
MyRTC_ReadTime(); //调用此函数后,RTC硬件电路里时间值将刷新到全局数组
OLED_Menu_SensorData(); //显示主页面传感器数据、系统模式等内容
OLED_Menu(); //显示主页面的固定内容
if (!systemModel)
{
LED_PWM_KEY(); //按键控制LED的PWM
}
//切换系统模式
if (KeyNum == KEY_1)
{
KeyNum = 0;
systemModel = ~systemModel;
if (systemModel)
{
currentDataPoint.valueModel = 1;
}
else
{
currentDataPoint.valueModel = 0;
}
}
//判断是否进入阈值设置界面
if (KeyNum == KEY_Long1)
{
KeyNum = 0;
OLED_Clear(); //清屏
menu = settingsPage; //跳转到阈值设置界面
}
break;
case settingsPage:
OLED_SetInterfacevoid(); //显示阈值设置界面的固定内容
OLED_Option(SetSelection()); //实现阈值设置页面的选择功能
ThresholdModification(SetSelection()); //实现阈值调节功能
//判断是否退出阈值设置界面
if (KeyNum == KEY_2)
{
KeyNum = 0;
OLED_Clear(); //清屏
menu = display_page; //跳转到主界面
//存储修改的传感器阈值至flash内
FLASH_W(FLASH_START_ADDR, Sensorthreshold.Illumination_threshold, Sensorthreshold.Distance_threshold);
currentDataPoint.valueIllumination_threshold = Sensorthreshold.Illumination_threshold;
currentDataPoint.valueDistance_threshold = Sensorthreshold.Distance_threshold;
}
break;
case timeSettingsPage:
OLED_ThresholdTime(); //显示时间设置界面的内容
OLED_Time_Option(SetSelection()); //实现间设置界面的选择功能
TimeModification(SetSelection()); //实现时间调节功能
//判断是否退出时间设置界面
if (KeyNum == KEY_2)
{
KeyNum = 0;
//将更改的数据赋值回RTC数组中
MyRTC_Time[3] = hour;
MyRTC_Time[4] = minute;
MyRTC_Time[5] = second;
MyRTC_SetTime(); //调用此函数后,全局数组里时间值将刷新到RTC硬件电路
OLED_Clear(); //清屏
menu = settingsPage; //回到阈值设置界面
}
break;
}
//判断上位机是否更改阈值,如更改则保存至flash中
if (valueFlashflag)
{
valueFlashflag = 0;
//存储修改的传感器阈值至flash内
FLASH_W(FLASH_START_ADDR, Sensorthreshold.Illumination_threshold, Sensorthreshold.Distance_threshold);
}
userHandle(); //更新机智云数据点变量存储的值
gizwitsHandle((dataPoint_t *)¤tDataPoint); //数据上传至机智云
}
}
实验效果
通过上述设计和实现,智能台灯可以实现预期的功能。用户可以通过手机APP实时查看环境数据,并对台灯进行远程控制。同时,台灯的本地控制功能也十分完善,可以满足不同场景下的使用需求。
热门推荐
毛泽东的四渡赤水战役,你了解多少?
毛泽东的得意之作:四渡赤水有多神?
突遭ST,上市公司要“退市走人”!普通股民怎么办?
深入推进黄河流域生态环境治理
黄河源头揭秘:碗口大小的泉眼如何孕育出母亲河
AI技术如何改变医学诊断?
银杏叶提取物对脑缺血缺氧、水肿的保护作用
银杏叶片药理作用与药理机制
红网论坛邀你记录春节温馨瞬间!
西安年货市场:传统与创新交织的春节新气象
方正春晚如意体:传统与现代的完美交融
葱爆羊肉片
阳台雨棚材料介绍 用哪种比较好
少林寺与壶口瀑布:双省8日游攻略
大明寺:扬州千年古刹的历史与文化
农历新年送礼全国习俗大不同 各省和大湾区各市礼物指南
双子座的守护神兽图片:墨丘利与十二星座守护神兽全解析
古希腊十大神话故事背后:文化底蕴如何为移民添魅力
双子座是怎样的人?深入解析双子座性格特征与生活方式
儿童拔牙后的科学护理指南
宝宝小牙医游戏:让拔牙不再可怕!
儿童拔牙恐惧症,家长必读攻略!
2025年春节假期安排出炉,你准备怎么过?
Jane Goodall:COP29上的紧急呼吁,第六次生物大灭绝已迫在眉睫
第六次生物大灭绝:物种消失速度比正常快100倍,人类活动是罪魁祸首
马尾松与寄生蜂:自然界的生态智慧
高清展示:马尾松松针的绝美瞬间
武夷山国家公园揭秘:马尾松的神奇世界
镇江历史古迹有哪些
露台设计:实用性与美观性的完美结合