Bootstrap

【单片机毕业设计1-基于stm32c8t6的智能加湿系统】

【单片机毕业设计1-基于stm32c8t6的智能加湿系统】


前言

🔥这里是小殷学长,单片机毕业设计篇1 基于stm32的智能加湿系统
🧿创作不易,拒绝白嫖 可私

在这里插入图片描述


一、功能介绍

------------------------------------------智能加湿系统-----------------------------------------
1.按键进行界面模式切换和参数阈值调节(定时时间、温湿度值)
2.蓝牙进行界面模式切换和参数阈值调节(定时时间、温湿度值)
3.语音进行界面模式切换和参数阈值调节(定时时间、温湿度值)
4.通过Oled和Onenet数据上传云端两种形式实时显示
5.蜂鸣器进行阈值报警提示,以及红绿led进行不同状态显示
6.实时采集环境温湿度值
功能可定制


🔥 实物展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、硬件部分

下面为该毕设中所用到的相关硬件说明,具体参数不做细节描述

硬件材料

在这里插入图片描述

PCB和原理图

在这里插入图片描述
在这里插入图片描述

三、软件部分

在这里插入图片描述

main.c部分代码

int main(void)
{		
	 unsigned char *dataPtr = NULL,flag = 0;
	 unsigned short timeCount = 0;	//发送间隔变量
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4	  
	 delay_init();            //延时初始化
	 LED_Init();              // led初始化
	 Buzzer_Relay_Init();     //蜂鸣器和继电器初始化
	 KEY_Exit_Init();         //按键初始化
	 Init_Usart();            //串口初始化
	 DHT11_Init();            //温湿度初始化
	 TIM3_PWM_Init();         //定时器初始化
	 OLED_Init();			        //初始化OLED  
	 delay_ms(500);
	 OLED_Clear(0);	          //清屏
	 Oled_WIFI();             //显示wifi连接
	 printf("wait wifi connect...\r\n");
	 ESP8266_Init();					//初始化ESP8266 
	//printf("8266_INIT_END\n");
	 while(OneNet_DevLink())			//接入OneNET
	 delay_ms(500);
	 printf("接入onenet成功");
	 delay_ms(500);
	 OLED_Clear(0);	          //清屏
	 Interface_Init();        //主界面
	 Buzzer_Voice();          //开机蜂鸣器提示
	 Buzzer_Voice();
	flag = 1;
	while(flag)
	{
		DHT11_Read_Data(&temp,&humi);          //温湿度获取
		Interface_Task(work_mode);             //界面显示任务
		Data_Task();                           //数据处理任务
		Logical_Task();                        //逻辑处理任务
		Usart_Task();                          //串口处理任务
		
		if(++timeCount >= 150)		//时间间隔1s
		{
				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接收  PA9 PA10   蓝牙模块
void USART1_IRQHandler(void)
{
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
	{
		usart_cmd = USART_ReceiveData(USART1);
		//USART_SendData(USART1,Usart1_cmd);    //打开可通过串口观察接收的数据
		USART_ClearFlag(USART1, USART_FLAG_RXNE);
	}
}

//语音 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(void)   //TIM3中断
{
	static unsigned char temp_t = 0,t = 0,send_t = 0,time = 0;
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
		{
			//时间
			time++;
			if(time == 100) //1s
			{
				time = 0;
				sec++;
				if(sec == 60)
				{
					sec = 0;
					min++;
					if(min == 60)
					{
						min = 0;
						hour++;
						if(hour == 24)
						{
							hour = 0;
						}
					}
				}
			}
			send_t++;
			if(send_t == 200)  //2s将数据发送到手机一次
			{
				send_flag = 1;
				send_t = 0;
			}
			if(time_flag)
			{
				t++;
				if(t == 100) //1s
				{
					t = 0;
					if(set_time-- == 0)  //定时时间到
					{
						time_flag = 0;     //重置标志位
						set_time = 5;      //重置默认值
					}
				}
			}
			//下面为温度刷新周期控制
			if(temp_t++ == 10)  //100ms更新一次温度数据
			{
				temp_t = 0; 
				
				//下面写更新温度功能函数
				if(DHT11_Read_Data(&temp,&humi) == 1)
				{
					//delay_ms(200);
					//printf("temp:%02d  humi:%02d \r\n",temp,humi);
				}
				
			}
			TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志  //10ms	
		}
}

总结

上面为基于stm32f103c8t6的智能加湿系统功能相关的大致介绍,源码,pcb和原理图以及相关文档说明做了详细说明,有需可私

在这里插入图片描述
🧿创作不易,拒绝白嫖

;