基于STM32的智能加湿器设计

目录

1、设计要求

2、系统功能

3、演示视频和实物

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

8、总结


 🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的题目是:《7、基于STM32的智能加湿器设计》。

设计的详细功能见网盘中的文章《基于STM32的智能加湿器设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132

提取码:5132

随着经济技术的不断进步,人们对生活品质的追求也越来越高,在寒冷干燥的冬季,尤其是中国北部地区,人们频繁地使用暖气和空调,会导致皮肤干燥,从而引起感冒和其他一些疾病。在夏天,因为经常开空调,所以也会有这种现象,此时需要使用加湿器来改善人体的舒适度。

1、设计要求

设计采用了一种基于单片机的智能加湿器系统,其以STM32F103C8T6和温湿度传感器DHT11为核心,通过湿度传感器对湿度信号进行采集和转换,然后通过单片机对数据进行分析处理,实现智能切换加湿功能。另外,通过继电器对加湿器进行控制,可以达到对加湿器的准确控制。

2、系统功能

  1. 往蓄水容器中加入适量的水。
  2. 按下开关按钮后,设备开始工作。
  3. 由于单片机上自带电复位电路、手动复位电路 (复位按键) 、晶振电路(给单片机提供时钟周期)。在OLCD屏上可以显示当前时间
  4. 开始工作后,当传感器测出来的湿度小于设定的湿度下限值时,继电器工作控制加湿器工作加湿,当大于湿度上限值时继电器关闭加湿器停止加湿。LCD液晶,第一行显示环境湿度值,第二行,显示湿度的上下限值
  5. 同时当湿度小于设置的湿度下限值时蜂鸣器和指示灯产生声光报警提示,当大于下限值时会自动取消报警,当产生报警时可以手动取消报警,但不会影响加湿器的工作。
  6. 可通过单片机上按键设置湿度的上下限报警值并具有掉电保存功能,保存在单片机内部,上电无需重新设置参数。

3、演示视频和实物

D24-基于STM32的智能加湿器

D10-基于STM32的智能加湿系统

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

#include "stm32f10x.h"  // 有问题和需求的,可以联系VX:lwfw123456789
#include <stdio.h>
#include <string.h>
#include "sys.h"  
#include "delay.h"
#include "OLED.h"
#include "dht11.h"      //ÎÂʪ¶È´«¸ÐÆ÷
#include "Key.h"
#include "jidianqi.h"
#include "Serial.h"
#include "LED.h"
#include "Buzzer.h"
#include "Store.h"


uint8_t KeyNum;      //´æ´¢°´¼üÖµ
u8 state,state1,flag=1; 

int main(void)
{
		u8 t = 0;  
	  uint32_t bufe[3];
	  u8 temp,humi;
	
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
    delay_init();	   //ÑÓʱº¯Êý³õʼ»¯
	  SystemInit();
	  
	  Key_Init();    //°´¼ü³õʼ»¯
		LED_Init();
	  JIDIANQI_Init();	
		OLED_Init(); 
	  DHT11_Init();
	  Buzzer_Init();
	  Store_Init();

		OLED_ShowChinese(1,1,3);      //ʪ¶È
		OLED_ShowChinese(1,2,4);
	  OLED_ShowString(1,5,":");
    
		OLED_ShowChinese(2,1,0);      //ãÐÖµÉÏÏÞ
		OLED_ShowChinese(2,2,1);
		OLED_ShowChinese(2,3,14);     
		OLED_ShowChinese(2,4,16);
		OLED_ShowString(2,9,":");
		
		OLED_ShowChinese(3,1,0);      //ãÐÖµÏÂ
		OLED_ShowChinese(3,2,1);
		OLED_ShowChinese(3,3,15);      
		OLED_ShowChinese(3,4,16);
		OLED_ShowString(3,9,":");
		
		OLED_ShowChinese(4,1,17);      
		OLED_ShowChinese(4,2,18);
		OLED_ShowString(4,5,":");
		
	  
    while (1)
    {			
			if(t%10==0)
			{
			  DHT11_Read_Data(&temp,&humi);   //¶ÁÈ¡ÎÂʪ¶È²¢ÏÔʾÔÚOLEDÉÏ
			  bufe[0]=temp;	
			  bufe[1]=humi;
			  OLED_ShowNum(1,6,bufe[1],2);    //ʪ¶È
			  OLED_ShowString(1,8,"%");		
			}
				t++;	
      KeyNum = Key_GetNum();
		  if (KeyNum == 1)    
			{
				delay_ms(20);
				if (KeyNum == 1)
				{
				    state++;
					if(state>1)
					{
							state=0;
					}
				} 
			}
			if(state==0)
			{
			   OLED_ShowChinese(4,4,13);   // ¹Ø
			 	 LED1_OFF();
			}
			if(state==1)
			{
					OLED_ShowChinese(4,4,12);   // ¿ª
				LED1_ON();
									if (KeyNum == 2) Store_Data[1]++;     //6¸ö°´¼üÉèÖÃãÐÖµ
									if (KeyNum == 3) Store_Data[1]--;									
									if( Store_Data[1]>100) Store_Data[1]=0;	
                  
				
									OLED_ShowNum(2, 10, Store_Data[1], 2);
									OLED_ShowString(2, 12, "%");

									if (KeyNum == 4)Store_Data[2]++;     //6¸ö°´¼üÉèÖÃãÐÖµ
									if (KeyNum == 5)Store_Data[2]--;									
									if(Store_Data[2]>100)Store_Data[2]=0;
                  
				
									OLED_ShowNum(3, 10, Store_Data[2], 2);
									OLED_ShowString(3, 12, "%");
				          Store_Save();
									
				
									if (KeyNum == 6)    
									{
										delay_ms(20);
										if (KeyNum == 6)
										{
												state1++;
											if(state1>1)
											{
												state1=0;
											}
										} 
									}
										if(state1==0)
									{
										Buzzer_OFF();	
										 LED2_OFF();				
								 }
										if(state1==1)
									{
											Buzzer_ON();
											LED2_ON();
									}		
												
									if(bufe[1]<=Store_Data[1])         
									{
										 JIDIANQI2_OFF(); 
										if(flag==1)
										{
											 state1=1;	
												flag=0;					
										}			  			 
									}
									if(bufe[1]>Store_Data[1])  
									{
											state1=0;
											flag=1;
									}
									if(bufe[1]>=Store_Data[2]) 
									{
										 JIDIANQI2_ON();	
										 Buzzer_OFF();				
									}
				
			}
			
	}
}

8、总结

本系统电路结构简单,易于理解,检测精度高,工作稳定,具有一定的应用价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5132单片机设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值