单片机课程设计:基于stm32的温湿度智慧感应监测报警系统

基于stm32的温湿度智慧感应监测报警系统


前言

  随着物联网技术的不断发展,智慧感应监测报警系统在各个领域得到了广泛的应用。本文基于stm32开发板,设计了一款温湿度智慧感应监测报警系统。该系统可以实现对环境温湿度参数检测并显示的功能。

(文末附完整程序下载链接)

一、设计任务

  1.可以通过温度传感器对环境温湿度进行采集,并用实时显示在OLED屏幕上;
  2.可以设定固定的报警温湿度值显示在OLED 屏幕上;
  3.环境温湿度超过报警温度后报警,报警形式包括:蜂鸣器声音响,OLED屏幕给出温度超出的提示;
  4.能够通过按键动态修改报警温湿度阈值;

二、系统硬件设计

1.元器件选用

  1、STM32f103ZET6单片机一块
  2、0.96 七针OLED
  3、DHT11温湿度监测模块
  4、HC_SR501人体传感器
  5、杜邦线若干

2.系统模型设计

  温湿度传感器检测环境温湿度参数并发送给单片机,单片机处理温湿度数据并根据情况显示在OLED 屏幕显示。人体传感器检测是否有人靠近,若有则OLED显示数据,若无则保持息屏状态。此外,可以使用按键编辑温湿度阈值,若检测到的数据超过或低于阈值设置则发出对应的警报。

在这里插入图片描述

在这里插入图片描述

3.硬件连接

  1、7针OLED 屏幕:
GND接电源地,VCC接5V或3.3v电源,D0接PD6(SCL),D1接PD7(SDA),RES接PD4,DC接PD5,CS接PD3
  2、DHT11温湿度传感器:
VCC接3.3v电源,GND接电源地,DATA接PG11
  3、SR501人体检测模块:
VCC接5v电源,GND接电源地,DATA接PA0
在这里插入图片描述

二、系统程序设计

1.程序流程

  本系统实现了温湿度的实时监测,并可根据预设值报警(默认是50/50),当处于非报警期间当人离开屏幕自动熄灭,人靠近时显示当前的温湿度以及预设值等信息;当按下KEY_UP按键可以却换模式(控制温度预设/湿度预设值),按下KEY0/KEY1调整数值,详情请看按键逻辑;当温度或湿度超过预设值会报警,报警会在oled右上角显示“W”(waring),并且led会亮!当人靠近时显示当前的温湿度,当人离开屏幕自动熄灭。
在这里插入图片描述
按键逻辑图

2.主程序

main.c

int main()
{
	u8 i;
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	LED_Init();
	KEY_Init();
	OLED_Init(); //OLED初始化
	DHT11_Init();
	
	USART1_Init(115200);
	
	OLED_DrawBMP(0,0,128,8,(u8 *)pic1);	  //如果要正着显示,需要将取模方式修改重新取模
	

	OLED_Clear();
	TIM4_Init(2000,36000-1);  
	
	
	while(1)
	{
		
		i++;
		if(i%20==0)
		{
			DHT11_Read_Data(&temp,&humi);
		}
		
		if(HC_SR501_KEY()==1)
		{
			people=1;
		}
		else
		{
			people=0;
		}
		
		switch(KEY_Scan(0))
		{
			case KEY_UP_PRESS: 
				set_choose++;
				if(set_choose == 2) set_choose = 0;
				break;      
			case KEY1_PRESS: 
				if(set_choose == 0)
				{
					if(set_temp == 100)
					{
						set_temp = 0;
					}
					set_temp +=5;
				}
				if(set_choose == 1)
				{
					if(set_humi == 100)
					{
						set_humi = 0;
					}
					set_humi +=5;
				}
				break;   
			case KEY0_PRESS: 
				if(set_choose == 0)
				{
					if(set_temp == 0)
					{
						set_temp = 100;
					}
					set_temp -=5;
				}
				if(set_choose == 1)
				{
					if(set_humi == 0)
					{
						set_humi = 100;
					}
					set_humi -=5;
				}
				break;   
		}
		
		if(temp > set_temp || humi > set_humi)
		{
			waring=1;
			LED1 = 0;
		}
		else
		{
			waring=0;
			LED1 = 1;
		}

		delay_ms(100);	
	}
}

总结

  基于stm32的温湿度智慧感应监测报警系统是一个基础的stm32设计小项目,非常适合初学者在学习理论知识后进行实践。本系统在硬件上使用了OLED屏幕,人体传感器和按键,按键阈值设置逻辑也是stm32项目设计经常使用的点。

下载

链接: http://cloud.taospace.top/基于stm32的温湿度智慧感应监测报警系统/

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯无雎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值