STM32项目分享:智能台灯(机智云)系统

描述

项目成品图片:


 

机智云


 


 

01

项目简介


 

1.功能详解


 

STM32智能台灯(机智云)系统

功能如下:


 

1. 检测功能:系统检测周围 温湿度数据、距离、人体信号、光照强度Lux。

2. 显示功能:将检测到的数据显示在oled屏幕上。

3. 控制功能:系统可以通过PWM对台灯进行无极调光。

4. 手动模式:通过按键控制台灯的亮度。

5. 自动模式:当环境亮度低于阈值,并且有人时,会自动调节台灯亮度;

6. 护眼功能:当系统检测到人距离台灯过近时蜂鸣器报警。

7. 阈值调节:系统传感器阈值大小可以通过按键或者APP自行设置调节。

8. 接入云平台:系统通过ESP8266 WIFI模块连接网络,接入机智云服务器。

9. 远程控制:可以通过APP查看传感器数据,以及远程控制台灯、远程调节阈值。


 


 


 

2.材料清单

STM32F103C8T6核心板

DHT11 温湿度传感器

OLED屏幕

蜂鸣器模块

超声波模块

热释电人体检测模块

LED灯

电池座

独立按键

ESP8266-01S wifi模块

云平台机智云


 


 

02


 

原理图设计


 

机智云


 

03


 

PCB硬件设计


 

   PCB图

机智云机智云


 


 

04

程序设计

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);//从指定页的地址读FLASHSensorthreshold.Distance_threshold = FLASH_R(FLASH_START_ADDR+2);//从指定页的地址读FLASHGENERAL_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);//数据上传至机智云}}


 

05

实验效果


 

机智云机智云

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分