項目成品圖片:
01
—
項目簡介
1.功能詳解
功能如下:
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
—
程序設計
intmain(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){casedisplay_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;casesettingsPage: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;casetimeSettingsPage: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
—
實驗效果
-
STM32
+關注
關注
2289文章
11011瀏覽量
362329 -
智能臺燈
+關注
關注
9文章
86瀏覽量
21501 -
機智云
+關注
關注
3文章
609瀏覽量
26738
發布評論請先 登錄
基于機智云物聯網遠程控制臺燈
機智云2016~2017優秀項目盤點
基于STM32芯片和機智云平臺的一款智能臺燈
stm32項目搭建基礎
STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼

評論