0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将DHT11温度和湿度传感器与STM32F103C8连接的方法

科技观察员 来源:circuitdigest 作者:Pramoth Thangavel 2022-08-31 15:59 次阅读

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

该传感器可以测量从 0°C 到 50°C 的温度,精度为 1°C。它通常用于受控环境中,例如热通风系统、恒温室等,以监测温度并采取纠正措施。湿度测量范围为 20% 至 90%,精度为 1%。湿度表示空气中存在的水蒸气量。在许多情况下,例如在制造和储存茶粉时,湿度值必须保持在受控范围内,必须在房间内保持正确的湿度,否则茶会失去味道和气味。客厅的湿度水平也应保持在舒适的范围内。获得最大舒适度的理想湿度值在 50% 到 65% 之间。

今天在本教程中,我们将学习如何将流行的 DHT11 温度和湿度传感器与 STM32 微控制器连接。

DHT11温湿度传感器

在继续界面程序之前,让我们了解一些有关 DHT11 传感器的信息。如前所述, DHT11 传感器用于测量 温度和湿度。 该传感器带有一个专用的内置 NTC来测量温度。它有一个板载 8 位微控制器,可通过单线协议将温度和湿度值作为串行数据输出。意思是,传感器只有一个数据引脚,通过它可以读取温度和湿度值,从而节省了微控制器端的引脚。该传感器还经过工厂校准,因此易于与其他微控制器连接。

DHT11 规格

工作电压:3.5V 至 5.5V

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

输出:串行数据

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

湿度范围:20% 至 90%

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

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

pYYBAGMPFH-ATPzGAAH28yCmA7g721.png

所需组件

STM32F103C8

DHT11温湿度传感器

16x2 液晶显示器

IIC/I2C 串行接口适配器模块

面包板

连接电线

电路原理

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

poYBAGMPFHqAOMCBAAGVMQda9CM327.png

如您所见,我们使用I2C 接口模块将 LCD 模块连接到 STM32。这使连接变得简单,并进一步减少了控制器端使用的引脚数量。但是,如果您没有此模块,您也可以通过以下链接直接连接 LCD STM32 。

如果您有接口模块,那么 I2C 串行接口模块(固定 16X2 LCD 显示器)和 STM32F103C8 之间的电路连接如下表所示:

pYYBAGMPFHeAdYVfAAALJRrJSx4757.png

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

pYYBAGMPFHOAAcbpAAAIjZQPwwA950.png

连接完成后,我的硬件如下所示。

pYYBAGMPFHCAHM7OAAUAObCGTxA865.png

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

为 STM32F103C8 准备 Arduino IDE

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

将 I2C 串行 LCD 接口适配器模块与 STM32F103C8 连接:

从电路图中我们可以注意到 STM32F103C8 I2C 引脚 PB6 和 PB7 与 I2C 串行接口模块的 SCL 和 SDA 引脚相连。要查找 I2C 串行接口模块的地址,我们必须扫描可用地址。

扫描 I2C 串行接口模块的地址:

按照以下步骤查找 LCD I2C 接口模块的 I2C 地址。

1.首先检查Arduino IDE的STM32包是否安装。

2. 通过上述链接使用 Arduino IDE 安装用于编程 STM32 的软件包时,默认安装了线库。

3. 示例中提供了用于扫描连接的 I2C 设备的程序(在 Arduino IDE 中:Files-》Examples-》Wire-》I2C 扫描仪线)。在此之前,在 Tools-》Board-》Generic STM32F103C8 Series 中选择板,如下所示。

poYBAGMPFGuANglCAAHbDdFSbew175.png

4. 然后将代码上传到 STM32F103C8 和打开的串行监视器。

poYBAGMPFGeAfULyAAAuOQAB9bI871.png

现在注意 I2C 16x2 LCD 显示器的 I2C 地址为 (0x27)。

为 I2C 16x2 显示模块和 DHT11 传感器安装库:

现在我们知道了 I2C 地址,我们需要下载一个库,以便通过 I2C 与 LCD 显示器进行通信。I2C LCD 显示库可从此链接下载。下载 zip 文件后,通过 sketch-》import library 在 Arduino IDE 中安装 I2C LCD 库。该库也可以与 Arduino 板一起使用,用于与 I2C LCD 显示模块进行通信。

同样,为了从 DHT11 传感器读取串行数据,我们将使用DHT11 库。使用提供的链接将库下载为 ZIP 文件,下载后,使用草图-》导入库在 Arduino IDE 中安装 DHT库。同样的库也可以与 Arduino 板一起使用。

编码说明

本文的完整代码可以在本页底部找到,相同的解释如下。最初包括所需的库。包括用于在 STM32F103C8中使用 I2C 的Wire.h库、用于使用 I2C 类型 LCD 显示器的LiquidCrystal_I2C.h和用于使用 DHT 传感器功能的DHT.h

#include        
#include    
#include                     

现在定义了与STM32F103C8的PA1相连的DHT11(OUT引脚)的引脚名称

#define DHTPIN PA1

而且,DHTTYPE 被定义为 DHT11。

#define DHTTYPE DHT11

接下来初始化 I2C 地址为 0x27 和 16x2 类型 LCD 显示器的LiquidCrystal_I2C类的对象 lcd 。

LiquidCrystal_I2C lcd(0x27, 16, 2);

此外, DHT 类的对象 dht与 STM32 和 DHT 类型为 DHT11 的 DHT 引脚被初始化

DHT dht(DHTPIN, DHTTYPE);    

接下来在void setup() 中:

首先使用以下方法初始化 LCD

液晶显示器开始();

然后使用以下语句开始接收来自 DHT11 传感器的温度和湿度值。

dht.begin();         

打开黑光灯并打印欢迎信息并在三秒钟后清除它们。

液晶背光();     
lcd.setCursor(0,0); 
lcd.print("电路文摘"); 
lcd.setCursor(0,1); 
lcd.print("DHT11 与 STM32"); 
延迟(3000);
lcd.clear();

接下来在void loop() 中:

从 DHT11 传感器连续接收该值。为了获得温度和湿度的单独值并将其存储在变量中,使用了以下语句。

仅获取湿度值

浮动 h = dht.readHumidity();      

仅获取温度值

浮动 t = dht.readTemperature();   

最后在 16X2 LCD 显示屏上打印

  lcd.setCursor(0,0); 
  lcd.print("温度:"); 
  lcd.print(t); 
  lcd.print("C"); 
  lcd.setCursor(0,1); 
  lcd.print("湿度:"); 
  lcd.print(h); 
  lcd.print("%");

基于STM32的温度计的工作

一旦您的硬件和代码准备就绪,只需将代码写入您的硬件,您应该会注意到您的 LCD 显示欢迎屏幕,然后是实时温度和湿度值,如下所示

pYYBAGMPFGKAIFlEAAXxRGw5laY477.png

如果您的显示器没有显示任何内容,您可以检查调整I2C 模块背面的对比度电位器。我尝试使用空调改变房间温度,发现传感器值也会相应变化。AC 还可以选择测量室温,如下图所示,我的遥控器显示室温为 27°C,我们的传感器还在 LCD 上显示 27.3°C,这非常接近。

poYBAGMPFF6AFxbDAAUS1pp17vc655.png

#include //使用 I2C 的库

#include //使用 I2C 类型 LCD 显示器的

库 #include //使用 DHT 传感器的库


#define DHTPIN PA1


#define DHTTYPE DHT11


LiquidCrystal_I2C lcd(0x27, 16, 2); //为LiquidCrystal_I2C类初始化对象lcd,I2C地址为0x27和16x2类型的LCD显示


DHT dht(DHTPIN, DHTTYPE); //使用STM32的DHT引脚和DHT类型为DHT11的DHT类初始化对象dht


void setup()

{

// 初始化 LCD

lcd.begin();

dht.begin(); //开始接收温度和湿度值。

液晶背光();// 打开黑灯并打印欢迎信息。

lcd.setCursor(0,0);

lcd.print("电路文摘");

lcd.setCursor(0,1);

lcd.print("DHT11 与 STM32");

延迟(3000);

lcd.clear();

}


无效循环()

{

浮动h = dht.readHumidity();//获取湿度值

float t = dht.readTemperature(); //获取温度值

lcd.setCursor(0,0);

lcd.print("温度:");

lcd.print(t);

lcd.print("C");

lcd.setCursor(0,1);

lcd.print("湿度:");

lcd.print(h);

lcd.print("%");

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • 湿度传感器
    +关注

    关注

    7

    文章

    288

    浏览量

    58320
  • DHT11
    +关注

    关注

    19

    文章

    264

    浏览量

    57175
  • STM32F103C8
    +关注

    关注

    1

    文章

    23

    浏览量

    8012
收藏 人收藏

    评论

    相关推荐

    【众拳】基于STM8DHT11湿度传感器实验 附代码

    DHT11湿度传感器简介传感器数据输出的是未编码的二进制数据。数据(湿度温度、整数、小数
    发表于 12-07 09:14

    「正点原子NANO STM32F103开发板资料连载」第二十七章 DHT11 数字温湿度传感器实验

    DHT11 有 4 条腿,需要把 U2 的 4 个接口都用上, DHT11 传感器插入到这个上面就可以通过 STM32F1 来读取温
    发表于 05-06 15:25

    Arduino开发板使用DHT11湿度传感器方法 精选资料分享

    在本篇文章中,我们DHT11湿度传感器与Arduino开发板和LCD显示屏连接,设计一种能够测量室温和环境
    发表于 07-13 09:35

    Arduino开发板使用DHT11湿度传感器方法 精选资料分享

    在本篇文章中,我们DHT11湿度传感器与Arduino开发板和LCD显示屏连接,设计一种能够测量室温和环境
    发表于 07-13 06:58

    DHT11湿度传感器介绍

    DHT11湿度传感器介绍,1.实物原理图2.模块说明2.1 DHT11产品概述DHT11数字温湿度
    发表于 07-21 09:04

    使用STM32来读取DHT11数字温湿度传感器

    原理DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相
    发表于 11-10 08:58

    如何对基于STM32F103 HAL库的DHT11温度传感器进行试验

    如何对基于STM32F103 HAL库的DHT11温度传感器进行试验?如何对DHT11温度
    发表于 12-08 07:45

    DHT11在主函数的应用方法

    只有一个口 HDQ。与PA7连接。三、DHT11初始化dht11.c#include "stm32f10x.h"#define delay_us(X)delayd(X*72/5)voi
    发表于 12-17 08:32

    STM32F103 HAL库 DHT11温度传感器相关资料分享

    STM32F103 HAL库 DHT11温度传感器实验写在前面绝对不坑人,保证有用,亲测有效。作为刚刚接触STM32的小白,我深知找不到非常
    发表于 01-05 07:01

    如何使用STM32F4来读取DHT11数字温湿度传感器

    数字温湿度传感器实验上一章,我们介绍了数字温度传感器 DS18B20 的使用,本章我们介绍数字温湿度
    发表于 02-09 07:50

    DHT11湿度传感器简介

    稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11
    发表于 02-16 06:55

    DHT11数字温湿度传感器的相关资料推荐

    STM32采集DHT11湿度关于DHT11相关参数代码篇接线和实验结果总结关于DHT11DHT11是一款数字温
    发表于 02-21 07:34

    使用DHT11STM32单片机进行湿度温度监控

    测量0°C至50°C温度,精度为1°C。 它可以测量20%至90%的湿度,精度为1%。我们将把DHT1
    发表于 03-01 06:24

    如何将DHT11湿度温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口

    值,并将其显示在16×2 LCD显示器上。我在这里也会做同样的事情,但是这次我将把DHT11湿度温度传感器连接
    的头像 发表于 05-14 10:47 1.1w次阅读

    使用Arduino IDE在NodeMCU上使用DHT11温度湿度传感器

    使用Arduino IDE在NodeMCU上使用DHT11温度湿度传感器
    发表于 12-03 18:21 10次下载
    使用Arduino IDE在NodeMCU上使用<b class='flag-5'>DHT11</b><b class='flag-5'>温度</b>和<b class='flag-5'>湿度</b><b class='flag-5'>传感器</b>