前言
随着物联网技术的不断发展,智慧感应监测系统在各个领域得到了广泛的应用。本文基于stm32开发板,设计了一款温湿度智慧感应监测系统。该系统可以实现对环境温湿度参数检测并显示,以及有人时亮屏无人时息屏的功能
一、设计任务
- 可以通过温度传感器对环境温湿度进行采集,并用实时显示在OLED屏幕上
- 可以在无人观看时完成息屏操作
- 可以设定固定的报警温湿度值显示在OLED 屏幕上
- 环境温湿度超过报警温度后报警,报警形式包括:蜂鸣器声音响,OLED屏幕给出温度超出的提示
- 能够通过按键动态修改报警温湿度阈值
二、系统硬件设计
1.元器件选用
- STM32f103ZET6单片机一块
- 0.96 7针OLED
- DHT11温湿度监测模块
- HC_SR501人体传感器
- 按键(核心板自带,可外接)
- LED(核心板自带,可外接)
- 杜邦线若干
2.系统模型设计
温湿度传感器检测环境温湿度参数并发送给单片机,单片机处理温湿度数据并根据情况显示在OLED 屏幕显示。人体传感器检测是否有人靠近,若有则OLED显示数据,若无则保持息屏状态(未报警状态)。此外,可以使用按键编辑温湿度阈值,若检测到的数据超过阈值设置则发出对应的警报。
3.实物展示
4.硬件连接
三、系统程序设计
1.程序流程
本系统实现了温湿度的实时监测,并可根据预设值报警(默认是50/50),当处于非报警期间当人离开屏幕自动熄灭,人靠近时显示当前的温湿度以及预设值等信息(OLED第一行是状态栏,用于显示温湿度传感器的在线状态以及报警信息;第二行显示实时的温湿度信息;第三行显示预设值信息);当按下KEY_UP按键可以却换模式(控制温度预设/湿度预设值),按下KEY0/KEY1调整数值,详情请看按键逻辑;当温度或湿度超过预设值会报警,报警会在oled右上角显示“W”(waring),并且led会亮!
软件流程图
按键逻辑图
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项目设计经常使用的点。