STM32F103C8 监控室内湿度温度

STM32F103C8 监控室内湿度温度DHT11是一种温度和湿度传感器,顾名思义,用于测量特定环境或密闭空间中的大气温度和湿度。该传感器通常用于监测农业、食品工业、医院、汽车、气象站

欢迎大家来到IT世界,在知识的湖畔探索吧!

STM32F103C8 监控室内湿度温度

DHT11是一种温度和湿度传感器,顾名思义,用于测量特定环境或密闭空间中的大气温度和湿度。该传感器通常用于监测农业、食品工业、医院、汽车、气象站等许多应用中的环境参数。

该传感器可以测量0°C到50°C的温度,精度为1°C。它通常用于控制环境,如热通风系统、恒温室等,监测温度以采取纠正措施。

湿度测量范围为20%至90%,精度为1%。湿度表示空气中存在的水蒸气含量。在许多情况下,湿度值必须保持在受控范围内,例如在茶粉的制造和储存过程中,室内必须保持作业要求的湿度,否则会影响茶的味道和气味。客厅的湿度水平也应保持在舒适的范围内,理想的舒适的湿度值在50%到65%之间。

今天,我们学习如何将流行的 DHT11传感器与 STM32配合检测环境温度和湿度。前面我们已经学习了STM32 板的基础知识以及如何使用 Arduino IDE 对它编程。

DHT11温湿度传感器

如前所述,DHT11传感器用于测量温度和湿度。该传感器配有专用的内置NTC来测量温度。它有一个8位微控制器,通过单线协议将温度和湿度值作为串行数据输出。也就是说,传感器只有一个数据管脚,通过它可以读取温度和湿度值,从而节省微控制器端的管脚。传感器也经过工厂校准,因此易于与其他微控制器对接。

STM32F103C8 监控室内湿度温度

DHT11 参数规格:

§ 工作电压:3.5V 至 5.5V

§ 工作电流:0.3mA(测量)60uA(待机)

§ 输出:串行数据

§ 温度范围:0°C 至 50°C

§ 湿度范围:20% 至 90%

§ 分辨率:温度和湿度均为 16 位

§ 准确度:±1°C 和 ±1%

STM32F103C8 监控室内湿度温度

电路连接

将DHT11 与 STM32连接的电路图如下所示。电路是使用 Fritzing 软件绘制的。

STM32F103C8 监控室内湿度温度

如您所见,我们使用I2C 接口模块将 LCD 模块连接到 STM32。这使连接变得简单,并进一步减少了控制器端使用的引脚数量。如下图

STM32F103C8 监控室内湿度温度

同样,STM32F103C8 和 DHT11 传感器之间的电路连接如下表所示。

STM32F103C8 监控室内湿度温度

整个电路由电脑的 USB 端口供电。现在我们的硬件已经准备好了,让我们进入编码部分。

配置Arduino IDE

我们要编写程序,从 DHT11 传感器中读取温度和湿度值并将其显示在 LCD 模块上。这里LCD显示器是通过I2C适配器连接的,因此我们首先要找到这个适配器的I2C地址来与LCD通信。

查找 I2C 串行接口模块的地址

1.在Arduino IDE安装STM32开发包

2. 示例中提供了用于扫描连接的 I2C 设备的程序(在 Arduino IDE 中:文件->示例->Wire->I2C scanner_wire)。如下所示。

STM32F103C8 监控室内湿度温度

3. 将代码上传到 STM32F103C8,打开串行监视器。STM32F103C8上电开机。

STM32F103C8 监控室内湿度温度

STM32F103C8 监控室内湿度温度

我们可以看到,在串口监视器中,I2C的地址为“0x27”。

安装相关库文件

导入I2C LCD库,以便STM32F103C8通过 I2C 与 LCD 显示器进行通信

STM32F103C8 监控室内湿度温度

接着安装DHT库

STM32F103C8 监控室内湿度温度

安装好DHT包后,就可以开始编写程序了。

程序

#include <Wire.h> // I2C 库
#include <LiquidCrystal_I2C.h> // I2C LCD 库
#include <DHT.h> //DHT库
#define DHTPIN PA1 //定义与STM32F103C8的PA1相连的DHT11(OUT引脚)的引脚名称
#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2); //初始化lcd,I2C地址0x27,16*2 类型LCD
DHT dht(DHTPIN, DHTTYPE); // 初始化dht,stm连接DHT的引脚,类型为DHT11
void setup()
{
  lcd.begin();
  dht.begin(); //开始接收温度和湿度值。
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello World");
  lcd.setCursor(0,1);
  lcd.print("DHT11 with STM32");
  delay(3000);
  lcd.clear();
}

void loop()
{
  float h = dht.readHumidity(); //获取湿度值
  float t = dht.readTemperature(); //获取温度值
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humid: ");
  lcd.print(h);
  lcd.print(" %");
}

欢迎大家来到IT世界,在知识的湖畔探索吧!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22618.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信