項(xiàng)目成品圖片:

01
—
項(xiàng)目簡(jiǎn)介
1.功能詳解
功能如下:
1. STM32F103C8T6單片機(jī)系統(tǒng)板作為主控單元
2. 按鍵切換模式,支持智能/按鍵/遠(yuǎn)程/語(yǔ)音四種模式
3. 光敏電阻采集光照強(qiáng)度,超聲波傳感器采集坐姿距離,所有參數(shù)顯示在OLED上
4. 智能模式:自動(dòng)識(shí)別有人開(kāi)燈,并根據(jù)環(huán)境光強(qiáng)度控制燈的亮度
5. 按鍵模式:按鍵手動(dòng)調(diào)節(jié)燈亮度(三檔),可以按鍵控制計(jì)時(shí)
6. 遠(yuǎn)程模式:通過(guò)手機(jī)藍(lán)牙APP遠(yuǎn)程控制臺(tái)燈開(kāi)關(guān)與計(jì)時(shí)操作
7. 語(yǔ)音模式:通過(guò)語(yǔ)音識(shí)別控制臺(tái)燈調(diào)光與計(jì)時(shí)功能
8. 坐姿報(bào)警:超聲波距離報(bào)警,距離小于10cm提醒坐姿
2.材料清單
STM32F103C8T6單片機(jī)
OLED 屏幕
光敏電阻傳感器
超聲波傳感器
SNR016語(yǔ)音識(shí)別模塊
HC-SR04超聲波模塊
大功率LED模塊
有源蜂鳴器
02
—
原理圖設(shè)計(jì)
03
—
PCB硬件設(shè)計(jì)
PCB圖
04
—
程序設(shè)計(jì)
#include"led.h"#include"delay.h"#include"key.h"#include"sys.h"#include"oled.h"#include"usart.h"#include"exti.h"#include"timer.h"#include"HC_SR04.h"#include"kalman.h"#include"lsens.h"#include"adc.h"#include"hongwai.h"#include"BEEP.h"#include"usart2.h"#include"usart3.h"
externu8 Res1, Res3;externinttimer1;u16 sonic_dis =0;intmain(void){ intkey =0, flag1 =0, flag2 =0, flag3 =0, flag4 =0, guangmi =0, flag5 =0; delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(115200); usart3_Init(9600); LED_Init(); BEEP_Init(); OLED_Init(); KEY_Init(); Lsens_Init(); hongwai(); //人體
TIM3_Int_Init(9,71); //10us EXTIX_Init(); hc_sr04_init(); //HC_SR04初始化
TIM4_Int_Init(9999,7199); //計(jì)時(shí) TIM2_PWM_Init(899,0); //調(diào)節(jié)亮度
TIM_SetCompare2(TIM2,899);
BEEP =0; OLED_ShowCHinese(35,0,0); OLED_ShowCHinese(50,0,1); OLED_ShowCHinese(65,0,2); OLED_ShowCHinese(80,0,3); //標(biāo)題
OLED_ShowCHinese(0,2,6); OLED_ShowCHinese(15,2,7); OLED_ShowString(30,2,":",16);//模式
OLED_ShowCHinese(0,4,16); OLED_ShowCHinese(15,4,17); OLED_ShowString(30,4,":",16);//狀態(tài)
OLED_ShowCHinese(70,4,22); //無(wú)人 OLED_ShowCHinese(85,4,23); OLED_ShowString(100,4,":",16);//狀態(tài)
OLED_ShowCHinese(0,6,24); //時(shí)間 OLED_ShowCHinese(15,6,25); OLED_ShowString(30,6,":",16); OLED_ShowString(65,6,"s",16);
while(1) { usart2_init(9600); //藍(lán)牙通信
sonic_Trig(); //超聲波 sonic_dis = sonic_distance /10; OLED_ShowNum(75,6, sonic_distance /10,4,16); OLED_ShowString(110,6,"cm",16);
if(sonic_distance /10>10) { BEEP =0; } elseif(sonic_distance /10<=?10)? ? ? ? {? ? ? ? ? ? BEEP =?1;? ? ? ? }
guangmi =Lsens_Get_Val(); //亮度 OLED_ShowNum(110,4, guangmi,2,16);
key =KEY_Scan(0); if(key ==1) { flag1 +=1; if(flag1 >3) flag1 =0; } if(flag1 ==0) //智能模式 { OLED_ShowCHinese(45,2,4); OLED_ShowCHinese(60,2,5); OLED_ShowCHinese(75,2,6); OLED_ShowCHinese(90,2,7); if(renti ==0) { OLED_ShowCHinese(40,4,18);//有人 OLED_ShowCHinese(55,4,19); flag2 =1; } elseif(renti ==1)
{ OLED_ShowCHinese(40,4,20);//無(wú)人 OLED_ShowCHinese(55,4,21); flag2 =0; } if(flag2 ==1) {
if(guangmi >20&& guangmi <=?40)? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? TIM_SetCompare2(TIM2,?200);? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? if?(guangmi >40&& guangmi <=?60)? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? TIM_SetCompare2(TIM2,?400);? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? if?(guangmi >60) { TIM_SetCompare2(TIM2,800); } } elseif(flag2 ==0) {
TIM_SetCompare2(TIM2,899);//關(guān)燈 }
} if(flag1 ==1) { OLED_ShowCHinese(45,2,8); OLED_ShowCHinese(60,2,9); OLED_ShowCHinese(75,2,10); OLED_ShowCHinese(90,2,11);//按鍵模式
if(key ==2) { flag3 +=1;if(flag3>3){flag3=0;} } if(flag3 ==0) { TIM_SetCompare2(TIM2,899); } elseif(flag3 ==1) { TIM_SetCompare2(TIM2,800); }elseif(flag3 ==2) { TIM_SetCompare2(TIM2,600); }elseif(flag3 ==3) { TIM_SetCompare2(TIM2,400); }
if(key ==3) { flag4 = !flag4;//計(jì)時(shí) } if(flag4 ==1) { TIM_Cmd(TIM4, ENABLE); //使能TIMx OLED_ShowNum(40,6, timer1,3,16); } if(flag4 ==0) { TIM_Cmd(TIM4, DISABLE); //使能TIMx OLED_ShowNum(40,6, timer1,3,16); } }
if(flag1 ==2) { OLED_ShowCHinese(45,2,12); OLED_ShowCHinese(60,2,13); OLED_ShowCHinese(75,2,14); OLED_ShowCHinese(90,2,15);//遠(yuǎn)程模式
switch(Res1) { case1: TIM_SetCompare2(TIM2,400); break;//開(kāi)燈 case2: TIM_SetCompare2(TIM2,899); break;//關(guān)燈
case3: TIM_Cmd(TIM4, ENABLE); OLED_ShowNum(40,6, timer1,3,16); break;//開(kāi)啟計(jì)時(shí) case4: TIM_Cmd(TIM4, DISABLE); OLED_ShowNum(40,6, timer1,3,16); break;//關(guān)閉計(jì)時(shí) case5: TIM_SetCompare2(TIM2,200); break;//三檔燈光 case6: TIM_SetCompare2(TIM2,500); break;//二檔燈光
case7: TIM_SetCompare2(TIM2,800); break;//一檔燈光 case8: TIM_Cmd(TIM4, DISABLE); timer1 =0; OLED_ShowNum(40,6, timer1,3,16); break;//清零 }
}
if(flag1 ==3) { OLED_ShowCHinese(45,2,26); OLED_ShowCHinese(60,2,27); OLED_ShowCHinese(75,2,28); OLED_ShowCHinese(90,2,29);//語(yǔ)音模式 Uart3_SendCMD2(0x01, guangmi); Uart3_SendCMD2(0x02, sonic_distance /10); switch(Res3) { case1: TIM_SetCompare2(TIM2,400); break;//開(kāi)燈 case2: TIM_SetCompare2(TIM2,899); break;//關(guān)燈 case3: TIM_SetCompare2(TIM2,800);
break;//一檔燈光 case4: TIM_SetCompare2(TIM2,500); break;//二檔燈光 case5:TIM_SetCompare2(TIM2,200); break;//三檔燈光 case6: TIM_Cmd(TIM4, ENABLE); OLED_ShowNum(40,6, timer1,3,16); break;//開(kāi)啟計(jì)時(shí) case7: TIM_Cmd(TIM4, DISABLE); OLED_ShowNum(40,6, timer1,3,16); break;//關(guān)閉計(jì)時(shí) case8: TIM_Cmd(TIM4, DISABLE); timer1 =0;//清零 OLED_ShowNum(40,6, timer1,3,16); break; }
} if(key ==4) { timer1 =0; }
}}
05
—
實(shí)驗(yàn)效果
-
臺(tái)燈
+關(guān)注
關(guān)注
1文章
138瀏覽量
30207 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365174 -
智能語(yǔ)音
+關(guān)注
關(guān)注
11文章
804瀏覽量
49531
發(fā)布評(píng)論請(qǐng)先 登錄
stm32項(xiàng)目搭建基礎(chǔ)
如何在IAR for ARM中創(chuàng)建STM32項(xiàng)目?
基于HAL庫(kù)的STM32項(xiàng)目問(wèn)題描述
STM32項(xiàng)目設(shè)計(jì):基于STM32F4的mp3、wav音樂(lè)播放器 (UCOSIII操作系統(tǒng)、GUI控件)

STM32項(xiàng)目實(shí)戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的火災(zāi)報(bào)警系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的智能大棚溫控系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

STM32項(xiàng)目分享:智能臺(tái)燈系統(tǒng)

STM32項(xiàng)目分享:智能臺(tái)燈(機(jī)智云)系統(tǒng)

STM32項(xiàng)目分享:STM32智能語(yǔ)音分類(lèi)垃圾桶

STM32項(xiàng)目分享:智能鞋柜

評(píng)論