ESP8266-Arduino编程实例-HDC2080温湿度传感器驱动

HDC2080温湿度传感器驱动

1、HDC2080介绍

HDC2080 器件是一款集成式湿度和温度传感器,可在小型 DFN 封装中以极低的功耗提供高精度测量。基于电容的传感器包括新的集成数字功能和用于消散冷凝和湿气的加热元件。 HDC2080 数字功能包括可编程中断阈值,可提供警报和系统唤醒,而无需微控制器持续监控系统。 HDC2080 结合可编程采样间隔、低功耗和对 1.8V 电源电压的支持,专为电池供电系统而设计。

HDC2080 为各种环境监测和物联网 (IoT) 应用(例如智能恒温器和智能家居助手)提供高精度测量能力。对于印刷电路板 (PCB) 面积至关重要的设计,可通过 HDC2010 获得更小的 CSP 封装选项,并与 HDC2080 完全软件兼容。

在这里插入图片描述

对于具有严格功率预算限制的应用,自动测量模式使 HDC2080 能够自动启动温度和湿度测量。 此功能允许用户将微控制器配置为深度睡眠模式,因为 HDC2080 不再依赖微控制器来启动测量。

HDC2080 中的可编程温度和湿度阈值允许设备在必要时发送硬件中断以唤醒微控制器。 此外,HDC2080 的功耗显着降低,有助于最大限度地减少自发热并提高测量精度。

HDC2080 经过工厂校准,温度精度为 0.2°C,相对湿度精度为 2%。

HDC2080具有如下特性:

  • 相对湿度范围:0% 至 100%
  • 湿度精度:±2%(典型)、±3%(最大值)
  • 温度精度:±0.2°C(典型值)、±0.4°C(最大值)
  • 睡眠模式电流:50 nA(典型值)、100 nA(最大值)
  • 平均电源电流(1 次测量/秒)
    • 300 nA:仅 RH%(11 位)
    • 550 nA:RH%(11 位)+ 温度(11 位)
  • 温度范围:
    • 工作温度:–40°C 至 85°C
    • 功能性:–40°C 至 125°C
    • 电源电压范围:1.62 V 至 3.6 V

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • HDC2080传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次使用的驱动库如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <HDC2080.h>

#define ADDR 0x40
HDC2080 sensor(ADDR);

float temperature = 0, humidity = 0;

void setup() {

Serial.begin(9600);
Serial.println("TinkeringTech HDC2080 Test");

// Initialize I2C communication
sensor.begin();

// Begin with a device reset
sensor.reset();

// Set up the comfort zone
sensor.setHighTemp(48); // High temperature of 28C
sensor.setLowTemp(2); // Low temperature of 22C
sensor.setHighHumidity(95); // High humidity of 55%
sensor.setLowHumidity(10); // Low humidity of 40%

// Configure Measurements
sensor.setMeasurementMode(TEMP_AND_HUMID); // Set measurements to temperature and humidity
sensor.setRate(ONE_HZ); // Set measurement frequency to 1 Hz
sensor.setTempRes(FOURTEEN_BIT);
sensor.setHumidRes(FOURTEEN_BIT);

//begin measuring
sensor.triggerMeasurement();
}

void loop() {

Serial.print("Temperature (C): ");
Serial.print(sensor.readTemp());
Serial.print("\t\tHumidity (%): ");
Serial.println(sensor.readHumidity());

// Wait 1 second for the next reading
delay(2000);

}

文章来源: https://iotsmart.blog.csdn.net/article/details/126845406