基于STM32环境温湿度监测系统设计

基于STM32环境温湿度监测系统设计

1. 实验目的

(1) 掌握使用 KEIL MDK5 进行软件开发的具体流程;

(2) 掌握硬件电路的设计方法;

(3) 掌握 STM32 微控制器的程序设计及代码编写方法。

2. 任务和要求

(1)在 STM32F103 平台下,通过温度传感器 DS18B20 和湿度传感器 DHT11 实现环境温湿度信息的采集;

(2)将温度传感器和湿度传感器所采集的数据在 LCD 液晶屏幕上显示出来,超过范围实现声光报警,声音报警为启动无源蜂鸣器播放音乐,光源报警采用 LED灯闪烁的方式(每个同学采用不同的声光报警方式。例如:播放不同的音乐,LED灯闪烁的次数不一样等);

(3)手动设置报警温度和湿度上下限。

(4)加分项:自行增加其他功能。

3. proteus仿真图

在这里插入图片描述

4. 实验代码

#include "stm32f4xx.h"
#include <stdio.h>
#include "systick.h"
#include "led.h"
#include "lcd.h"
#include "dht11.h"
#include "usart.h"
#include "sr04.h"
#include "key.h"

int main()
{
	 u16 i,key;//定义距离和按键值的变量
	 u16 t1=25;//温度下限初始化
	 u16 t2=35;//温度上限初始化
	 u16 h1=65;//湿度下限初始化
	 u16 h2=75;//湿度下限初始化
	 u8 data_buf[5] = {0};//为了存储温湿度数据
   Led_Init();//led初始化
 	 systick_init();//系统时钟的初始化函数
	 sr04_init();//sr04初始化
	 dht_init();//Dht初始化
	 lcd_init();//LCD初始化
	 key_init();//key初始化
	 
	while(1)
	{ 
		i=get_distance();//得到的距离给i
		key=KEY_Scan(1);	//得到的键值给key
		dht_read_data(data_buf); //得到的温湿度数据给data_buf
		
		//如果距离大于5,并且小于等于10cm 灯0,1,2,3亮
		if (i>5 && i<=10) 
		{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 );//点亮4盏灯
		}
		
		//如果距离大于10,并且小于等于15cm 灯0,1,2亮
		if(i>10 && i<=15)
		{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);//点亮3盏灯
		GPIO_SetBits(GPIOA,GPIO_Pin_3);
		}
		
		//如果距离大于15,并且小于等于20cm 灯0,1亮
		if(i>15 && i<=20)
		{
			GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1);//点亮2盏灯
		  GPIO_SetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_3 );
		}
		
		//如果距离小于等于5,或者大于20cm 灯全灭
		  if(i>20 || i<=5)
		{ 
			GPIO_SetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);//全灭
		}
     
		//设置上下限
	   	if(key)
		{						   
			switch(key)
			{			 
				case KEY0_PRES:	
					t1--;//如果KEY0按下 温度下限减1
					break;
				case KEY1_PRES:	
					t2--;//如果KEY1按下 温度上限减1
					break;
				case KEY2_PRES:	 
					h1--;//如果KEY2按下 湿度下限减1
					break;
				case KEY3_PRES:	
					h2--;//如果KEY3按下 湿度上限减1
					break;
				case KEY4_PRES:	
					t1++;//如果KEY4按下 温度下限加1
					break;
				case KEY5_PRES:	
					t2++;//如果KEY5按下 温度上限加1
					break;
				case KEY6_PRES:	 
					h1++;//如果KEY6按下 湿度下限加1
					break;
				case KEY7_PRES:	
					h2++;//如果KEY7按下 湿度上限加1
					break;
			}
		} 
		
		if(data_buf[2]>t1 && data_buf[2]<t2) 
		GPIO_SetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5);//温度是否在范围内,是的话灯不亮
		else if (data_buf[2]<t1) GPIO_ResetBits(GPIOA,GPIO_Pin_4);//小于下限,灯4亮
		else if (data_buf[2]>t2) GPIO_ResetBits(GPIOA,GPIO_Pin_5);//大于于下限,灯5亮

		
		if(data_buf[0]>h1 && data_buf[0]<h2) GPIO_SetBits(GPIOA,GPIO_Pin_6 | GPIO_Pin_7);//湿度是否在范围内,是的话灯不亮
		else if (data_buf[0]<h1)GPIO_ResetBits(GPIOA,GPIO_Pin_6);//小于下限,灯6亮
		else if (data_buf[0]>h2)GPIO_ResetBits(GPIOA,GPIO_Pin_7);//大于于下限,灯7亮
		

		
		lcd_show_string(0,1,"distance=  cm");//显示字符串
    lcd_num(9,1,i);//显示超声波测得距离
		lcd_show_string(0,2,"Temp:  C");
		lcd_num(5,2,data_buf[2]);//显示温度数值
		lcd_show_string(0,3,"Hum:  %");
		lcd_num(4,3,data_buf[0]);//显示湿度数值

		lcd_num(9,2,t1);//显示温度下限数值
		lcd_show_string(11,2,"-");
		lcd_num(12,2,t2);//显示温度上限数值
		lcd_num(9,3,h1);//显示湿度下限数值
		lcd_show_string(11,3,"-");
		lcd_num(12,3,h2);//显示湿度上限数值
	}
}

下载地址:成品下载

  • 29
    点赞
  • 504
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: 基于STM32环境温湿度监测系统设计,可以采用STM32控制器作为核心控制器,通过温湿度传感器采集环境温湿度数据,并通过LCD显示屏或者串口通信方式将数据实时显示出来。同时,可以通过网络通信模块将数据上传到云端,实现远程监测控制。此外,还可以加入报警功能,当环境温湿度超出设定范围时,系统会自动发出警报,提醒用户及时采取措施。整个系统设计简单、实用,可以广泛应用于家庭、办公室、实验室等场所。 ### 回答2: 基于STM32环境温湿度监测系统设计,是一种应用于室内环境监测系统。主要是通过此系统实时监测温湿度数据,然后通过传感器采集这些数据,再用STM32传输到相关接口进行数据处理和显示。 首先,需要选购相关温湿度传感器。一般这种系统中,多选用数字温湿度传感器,如SHT11、SHT15、DHT11、DHT22等。这些传感器都具有较高的精确度、抗干扰能力和以数字方式输出等特点,适合于室内环境温湿度监测。 其次,需要选择STM32作为核心控制芯片。因为STM32具有功耗低、性能稳定、易于开发等特点,同时其工作电压和数字传感器相对一致,可以更有效地传输数据。 然后,需要将温湿度传感器与STM32进行连接。一般传感器使用IIC或DHT11/22数字式进行传输,需要先了解其通讯协议。根据传感器触发信号时序进行编程,同时使用ADC采样电压来得到温湿度数据。 最后,通过串口或者LCD显示器来输出温湿度数据,以便于用户查看。同时,在这个基础上还可以进行温湿度数据的处理、存储等功能。 综上所述,基于STM32环境温湿度监测系统设计,既可以实时监测室内环境数据,还可以联动其他电器进行环境调节,达到舒适度和节能的目的。其可广泛应用于家居、办公等场所。 ### 回答3: 随着物联网技术的不断发展,温湿度监测系统已经成为了现代家居、办公和工厂等领域必不可少的设备之一。基于stm32环境温湿度监测系统是一种基于嵌入式技术的实时监测设备,具有体积小、功耗低、易移植、可靠性高等优点,广泛应用于各个领域。 该系统由传感器模块、stm32控制器、数字转换模块和通信模块等几个部分组成。传感器模块采用高精度数字式温湿度传感器,可以监测环境中的温度和湿度,并将数据传输给stm32控制器。stm32控制器是系统的核心部分,通过对传感器模块采集的数据进行处理,并通过数字转换模块将模拟信号转换为数字信号,最终将处理后的数据通过通信模块发送到上位机进行显示。 在该系统中,stm32控制器采用了ARM Cortex-M3内核,具有高性能、低功耗和低成本等优点,可以实现高效的数据处理和通信功能。数字转换模块采用了高精度的ADC芯片,可以将模拟信号转换为数字信号。通信模块采用了WiFi或蓝牙模块,可以实现与上位机的无线通信。 在系统设计中,需要考虑各种因素,如环境的温度、湿度、灵敏度、噪声、稳定性等。为了保证系统的稳定性和精度,需要采用高质量的传感器,并对数据进行滤波和校准处理。此外,系统还需要具备高可靠性和不易受干扰的特点,以保证数据的准确性和实时性。 综上所述,基于stm32环境温湿度监测系统是一种高效、实用、稳定的设备,可以广泛应用于家居、办公、工厂等各个领域,具有重要的实际意义和应用前景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拾亿-唯一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值