【單片機畢業設計3-基于stm32c8t6的智能家居系統】
- 前言
- 一、功能介紹
- 二、硬件部分
- 三、軟件部分
- 總結
前言
🔥這里是小殷學長,單片機畢業設計篇3 基于stm32的智能家居控制系統
🧿創作不易,拒絕白嫖(有需可點擊最后鏈接)可私
企鵝號:2836235214
一、功能介紹
------------------------------------------智能家居系統-----------------------------------------
a. 通過DHT11溫濕度傳感器模塊與顯示屏結合將實時采集的環境溫濕度的數據進行顯示監控,當溫度低于或高于我們所設閾值時則會觸發蜂鳴器發出相應的警報;
b. 紅外傳感器模塊,通過紅外感應進行燈光的控制。
c. MQ2煙霧傳感器進行可燃氣體的檢測;
d. 雨滴傳感器檢測是否有下雨,通過發出警報提醒居家者;
e. 火焰傳感器實時檢測當前環境是否有火災,并發出警報警示居家者及時處理;
f. 震動傳感器,類似聲控燈,檢測到震動后就會打開燈光;
g. 8組繼電器實現電器的模擬控制(空凋、冰箱、電視、風扇、燈等);
h. 語音模塊(SU-03T)通過智能公元AI平臺進行相應命令配置從而與單片機進行串口通信控制;
i. 藍牙模塊(HC-05)通過手機端藍牙APP實現控制;
j. WIFI (ESP826601s)模塊,通過OneNet云端平臺進行數據上傳監測和指令下發控制。
功能可定制
🔥 實物展示
二、硬件部分
下面為該畢設中所用到的相關硬件說明,具體參數不做細節描述
硬件材料
PCB和原理圖
三、軟件部分
部分流程圖
程序
main.c部分代碼
int main(void){ unsigned char *dataPtr = NULL;unsigned short timeCount = 0; //發送間隔變量delay_init(); //延時函數初始化 NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級Led_Init(); //LED初始化Init_MQ2(); //MQ2初始化Beep_Init(); //蜂鳴器初始化InitRelay(); //繼電器初始化Fire_Init(); //火焰初始化Rain_Init(); //雨滴初始化Shake_Init(); //震動初始化Infrared_Init(); //紅外初始化TIMER3_Init(); //定時器初始 1msInit_Usart(); //串口初始化LCD_Init(); //液晶屏初始化//溫度初始化if(!DHT11_Init()){printf(" Error! T DHT11 HAS NO RESPOND...\n");}else{printf("\r\n THE DHT11 HAS RESPOND");}Init_Inteface(); //界面初始化ESP8266_Init(); //初始化ESP8266 //printf("8266_INIT_END\n");while(OneNet_DevLink()) //接入OneNETdelay_ms(500);printf("接入onenet成功");delay_ms(500);Show_Str(180,280,RED,BLUE,(unsigned char *)"WIFI加載成功...",16,0); LCD_Clear(WHITE);delay_ms(500); onenet_flag = 1; //WIFI接入成功后將其標志位置1 在定時器中進行相關OneNet數據上報處理while(1) { if(temp > set_temp || humi > set_humi){Buzzer_Action(5);}Param_Interface(); //參數界面實時刷新Sensor_Task(); //傳感器任務Usart_Task(); //串口任務if(++timeCount >= 150) //時間間隔1s{//傳感器檢測if(DHT11_Read_Data(&temp,&humi) == 1){delay_ms(100);//printf("temp:%02d humi:%02d \r\n",temp,humi);}OneNet_SendData();//發送數據給onenet//printf("send_data_end\n");timeCount = 0;ESP8266_Clear();} dataPtr = ESP8266_GetIPD(0);//獲取平臺返回的數據if(dataPtr != NULL)//如果返回數據不為空OneNet_RevPro(dataPtr);//平臺返回數據檢測 delay_ms(10); }
}//1 藍牙 RX- PA9 TX-PA10
void USART1_IRQHandler(void)
{if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷{Usart_cmd = USART_ReceiveData(USART1);USART_ClearFlag(USART1, USART_FLAG_RXNE);}
}//2 語音 RX- PA2 TX-PA3
void USART2_IRQHandler(void)
{if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET){Usart_cmd = USART_ReceiveData(USART2); USART_ClearFlag(USART2, USART_FLAG_RXNE);}
}void TIM3_IRQHandler()
{static unsigned int t = 0,set_t = 0,set_t1 = 0,temp_t,onenet_t,t2 = 0,t3 = 0; if(TIM_GetITStatus(TIM3, TIM_IT_Update)){t++; //時間變量temp_t++; //溫度刷新變量if(t == 1000) //1s{t = 0;sec++;if(sec == 60) //1hour{sec = 0;hour++;if(hour == 24){hour = 0;}}sprintf(strtime,"%4d-%02d-%02d %02d:%02d:%02d\r\n",year,month,day,hour,min,sec); //更新時間//printf("%02d:%02d:%02d\r\n",hour,min,sec); //調試打印信息 不用的時候屏蔽}//========================定時功能==============================if(light_flag == 1) //開啟燈光定時模式{corridor_light(1);set_t++; if(set_t == 1000) //1s{set_t = 0;set_light_timer--;if(set_light_timer == 0) //時間到{corridor_light(0);light_flag = 0; //關閉定時標志set_light_timer = 10; //再次重裝初值}}}if(fan_flag == 1) //開啟定時模式{//打開風扇Relay3_ON();set_t1++; if(set_t1 == 1000) //1s{set_t1 = 0;set_fan_timer--;if(set_fan_timer == 0) //時間到{//關閉風扇Relay3_OFF();fan_flag = 0; //關閉定時標志set_fan_timer = 10; //再次重裝初值}}} //下面為溫濕度數據更新 200msif(temp_t == 200){temp_t = 0;DHT11_Read_Data(&temp,&humi); }//下面為OneNet云平臺數據上報 2S更新一次/*if(onenet_flag == 1){onenet_t++;}if(onenet_t == 2000){OneNet_SendData();//發送數據給onenetonenet_t = 0;}*///下面為紅外檢測后的功能處理 走廊燈亮5s后自動關閉if(people_flag == 1){corridor_light(1);status[15] = 1;t2++;if(t2 == 5000) //5s時間到 關閉走廊燈標志位清零 燈光狀態置0 {t2 = 0;corridor_light(0);status[15] = 0;people_flag = 0;}}//下面為震動傳感器檢測后的功能處理 臥室燈亮5s后熄滅if(shake_flag == 1){Relay8_ON();status[7] = 1; t3++;if(t3 == 5000) //5s時間到 關閉臥室燈標志位清零 燈光狀態置0 {t3 = 0;Relay8_OFF();status[7] = 0; shake_flag = 0;}}TIM_ClearITPendingBit(TIM3, TIM_IT_Update);}
}
總結
上面為基于stm32f103c8t6的智能家居控制系統相關的大致介紹,源碼,pcb和原理圖以及相關文檔說明做了詳細說明,有需可私
🧿創作不易,拒絕白嫖
很有幸獲得2023屆優秀本科畢業論文和畢業設計
實物+資料