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

前言

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

一、设计任务

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

二、系统硬件设计

1.元器件选用

  1. STM32f103ZET6单片机一块
  2. 0.96 7针OLED
  3. DHT11温湿度监测模块
  4. HC_SR501人体传感器
  5. 按键(核心板自带,可外接)
  6. LED(核心板自带,可外接)
  7. 杜邦线若干

2.系统模型设计

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

3.实物展示

4.硬件连接

三、系统程序设计

1.程序流程

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

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

软件流程图

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

按键逻辑图

2.程序代码

部分程序代码

#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "key.h"
#include "time.h"
#include "dht11.h"
#include "usart.h"
#include "oled.h"
#include "hc_sr501.h"
#include "picture.h"

u8 temp,humi;
int people=0,set_choose=0,set_temp=50,set_humi=50,waring=0;

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项目设计经常使用的点。

下载

下载地址:基于stm32的温湿度智慧感应监测系统 | 零度空间

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值