【单片机毕业设计3-基于stm32c8t6的智能家居系统】

news/2024/6/3 17:26:39 标签: 单片机, 课程设计, stm32

单片机毕业设计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();         //定时器初始 1ms
	Init_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())			//接入OneNET
	delay_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;          //再次重装初值
					}
				}
			}	
			
			//下面为温湿度数据更新 200ms
			if(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();//发送数据给onenet
				onenet_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届优秀本科毕业论文和毕业设计

在这里插入图片描述

实物+资料

在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/4936436.html

相关文章

API测试基础之http协议

http简介: http(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP(传输控制协议)之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出…

Docker技术入门教程

Docker技术入门教程 一、docker概念 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后&a…

[保研/考研机试] 杨辉三角形 西北工业大学复试上机题 C++实现

题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 输入n值,使用递归函数,求杨辉三角形中各个位置上的值。 输入描述: 一个大于等于2的整型数n 输出描述: 题目可能有多组不同的测试数据,对于每组输入数据, 按题目的要求输…

基于java药房销售管理系统设计与实现

摘 要 随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药销售行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,面对药品销售业日益严酷的竟争现实,加强管理、提高工作效率和改善服务质量成了急待解决的问题。…

C语言——将一串字符进行倒序

//将一串字符进行倒序 #include<stdio.h> #define N 6 int main() {int a[N]{0,1,2,3,4,5};int i,t;printf("原数组数值&#xff1a; ");for(i0;i<N;i)printf("%d",a[i]);for(i0;i<N/2;i){ta[i];a[i]a[N-1-i];a[N-1-i]t;}printf("\n排序…

2. VisionOS平台概述

Unity 对VisionOS的支持将 Unity 编辑器和运行时引擎的全部功能与RealityKit提供的渲染功能结合起来。Unity 的核心功能&#xff08;包括脚本、物理、动画混合、AI、场景管理等&#xff09;无需修改即可支持。这允许游戏和应用程序逻辑像任何其他 Unity 支持的平台一样在Vision…

excel 之 VBA

1、excel和VBA 高效办公&#xff0c;把重复性的工作写成VBA代码&#xff08;VB代码的衍生物&#xff0c;语法和VBA相同&#xff09;。 首先打开开发工具模式&#xff0c;如果没有选显卡&#xff0c;需要手动打开 打开程序编辑界面 快捷键 altF11一般操作 程序调试&#xf…

WebRTC音视频通话-实现iOS端调用ossrs视频通话服务

WebRTC音视频通话-实现iOS端调用ossrs视频通话服务 之前搭建ossrs服务&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 这里iOS端使用GoogleWebRTC联调ossrs实现视频通话功能。 一、iOS端调用ossrs视频通话效果图 iOS端端效果图…