搜索代码

如何使用HTU21DF湿度和温度传感器与Arduino(基础代码)

如何使用HTU21DF湿度和温度传感器与Arduino(基础代码)

在本教程中,我们将学习如何将HTU21DF温度和相对湿度传感器与Arduino一起使用。该传感器以其准确性和低功耗而闻名,适用于各种应用。到本教程结束时,您将能够读取温度和湿度值,并在Arduino串行监视器上显示它们。为获得额外的说明,请务必查看视频(视频在:00)。

硬件解析

HTU21DF传感器是一种数字湿度和温度传感器,通过I2C协议进行通信。它可以测量温度范围从-40°C到+125°C,湿度范围从0%到100%。该传感器以3.3V的供电电压工作,非常适合电池供电的应用。

两个引脚对于通信至关重要:SDA(数据线)和SCL(时钟线)。传感器还有低功耗模式,闲置时仅消耗0.04微安,测量时约为400微安。这个功能使其在对能量敏感的项目中特别有用。

数据表详细信息

制造商TE Connectivity(前称MEAS)
部件号HTU21DF
逻辑/IO电压3.3 伏
电源电压1.5 - 3.6 伏
待机电流消耗0.04 微安培
测量电流消耗400 微安
温度范围-40到+125摄氏度
湿度范围0到100%
分辨率0.04 %(湿度),0.01 °C(温度)
包裹6针LGA

  • 确保正确连接以避免损坏。
  • 将电源保持在规定的电压范围内(1.5至3.6 V)。
  • 如有必要,请在SDA和SCL线使用上拉电阻。
  • 连接电源时要小心极性反向。
  • 在开机后,请给传感器一些时间来稳定。

接线说明

将HTU21DF传感器连接到Arduino,请按照以下步骤操作:

首先,将传感器的左脚连接到Arduino的3.3V电源。第二个针脚通常标记为红色,应连接到接地(GND)。接下来,将传感器的SDA脚连接到针脚。A4在Arduino上,将SCL引脚连接到引脚A5这个设置将允许Arduino使用I2C协议与传感器通信。

确保所有连接都牢固,以防止任何通信问题。如果您使用的是面包板,请再次检查接线以保持正确的连接。在视频中,替代接线方法在(视频中的 01:30)处讨论。

代码示例与操作指南

下面是与HTU21DF传感器接口的代码简要概述。首先,包含必要的库:

#include 
#include "Adafruit_HTU21DF.h"

此代码初始化I2C通信并创建HTU21DF传感器的实例。htu.

接下来,我们设置串行通信。setup()功能:

void setup() {
  Serial.begin(9600);
  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

这里,传感器被初始化,如果连接失败,将打印一条消息,程序将暂停。

loop()功能,我们读取温度和湿度值:

void loop() {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
    Serial.print("Temp: "); Serial.print(temp); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
    delay(500);
}

温度存储在变量中temp,相对湿度存储在rel_hum这些值每500毫秒打印到串口监视器上,让您可以实时观察变化。

完整代码请参考文章下方加载的完整程序。

演示 / 预期内容

一旦所有连接完成并上传代码,打开串口监视器以查看温度和湿度读数。您应该看到每半秒更新一次值。如果您使用热风枪对传感器加热,您会注意到温度读数增加,而湿度读数减少(视频中在05:00)。

请注意,如果温度超过最大限制125°C,读数可能会变得不准确或重置。保持传感器在其指定的操作范围内对确保准确测量至关重要。

视频时间戳

  • 00:00- 介绍
  • 01:30- 接线说明
  • 05:00- 演示

图像

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
210-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic-2)
语言: C++
/***************************************************
  This is an example for the HTU21D-F Humidity & Temperature Sensor

  Designed specifically to work with the HTU21D-F sensor from Adafruit
  ----> https://www.adafruit.com/products/1899

  This module uses I2C to communicate; 2 pins are required to
  interface
 ****************************************************/

#include <Wire.h>
#include "Adafruit_HTU21DF.h"

// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)

Adafruit_HTU21DF htu = Adafruit_HTU21DF();

void setup() {
  Serial.begin(9600);
  Serial.println("HTU21D-F test");

  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

void loop() {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
    Serial.print("Temp: "); Serial.print(temp); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
    delay(500);
}

|||您可能需要的东西

资源与参考

文件📁

数据手册 (pdf)