【单片机毕业设计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届优秀本科毕业论文和毕业设计
实物+资料