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