Skip to content

Commit 74aa016

Browse files
authored
Merge pull request #497 from tyeth/add-HTU21DF-HTU31D
Add HTU21D/DF + HTU31D
2 parents 709f339 + db59efb commit 74aa016

File tree

6 files changed

+208
-1
lines changed

6 files changed

+208
-1
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ paragraph=Arduino client for Adafruit.io WipperSnapper
77
category=Communication
88
url=https://github.com/adafruit/Adafruit_IO_Arduino
99
architectures=*
10-
depends=Adafruit NeoPixel, Adafruit SPIFlash, ArduinoJson, Adafruit DotStar, Adafruit INA219, Adafruit LTR390 Library, Adafruit SleepyDog Library, Adafruit TMP117, Adafruit TinyUSB Library, Adafruit AHTX0, Adafruit BME280 Library, Adafruit BMP280 Library, Adafruit BMP3XX Library, Adafruit DPS310, Adafruit SCD30, Adafruit SGP30 Sensor, Adafruit SGP40 Sensor, Sensirion I2C SCD4x, Sensirion I2C SEN5X, arduino-sht, Adafruit Si7021 Library, Adafruit MQTT Library, Adafruit MS8607, Adafruit MCP9808 Library, Adafruit MCP9600 Library, Adafruit MPL115A2, Adafruit MPRLS Library, Adafruit TSL2591 Library, Adafruit_VL53L0X, Adafruit PM25 AQI Sensor, Adafruit VEML7700 Library, Adafruit LC709203F, Adafruit LPS2X, Adafruit LPS35HW, Adafruit seesaw Library, Adafruit BME680 Library, Adafruit MAX1704X, Adafruit ADT7410 Library, Adafruit HTS221, Adafruit PCT2075, hp_BH1750, ENS160 - Adafruit Fork
10+
depends=Adafruit NeoPixel, Adafruit SPIFlash, ArduinoJson, Adafruit DotStar, Adafruit INA219, Adafruit LTR390 Library, Adafruit SleepyDog Library, Adafruit TMP117, Adafruit TinyUSB Library, Adafruit AHTX0, Adafruit BME280 Library, Adafruit BMP280 Library, Adafruit BMP3XX Library, Adafruit DPS310, Adafruit SCD30, Adafruit SGP30 Sensor, Adafruit SGP40 Sensor, Sensirion I2C SCD4x, Sensirion I2C SEN5X, arduino-sht, Adafruit Si7021 Library, Adafruit MQTT Library, Adafruit MS8607, Adafruit MCP9808 Library, Adafruit MCP9600 Library, Adafruit MPL115A2, Adafruit MPRLS Library, Adafruit TSL2591 Library, Adafruit_VL53L0X, Adafruit PM25 AQI Sensor, Adafruit VEML7700 Library, Adafruit LC709203F, Adafruit LPS2X, Adafruit LPS35HW, Adafruit seesaw Library, Adafruit BME680 Library, Adafruit MAX1704X, Adafruit ADT7410 Library, Adafruit HTS221, Adafruit HTU21DF Library, Adafruit HTU31D Library, Adafruit PCT2075, hp_BH1750, ENS160 - Adafruit Fork

platformio.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ lib_deps =
3030
adafruit/Adafruit DPS310
3131
adafruit/Adafruit INA219
3232
adafruit/Adafruit HTS221
33+
adafruit/Adafruit HTU21DF Library
34+
adafruit/Adafruit HTU31D Library
3335
adafruit/Adafruit LTR390 Library
3436
adafruit/Adafruit PCT2075
3537
adafruit/Adafruit SCD30
@@ -89,13 +91,16 @@ lib_ldf_mode = deep
8991
extends = common:esp32
9092
board = featheresp32
9193
build_flags = -DARDUINO_FEATHER_ESP32
94+
board_build.filesystem = littlefs
95+
9296

9397
; Adafruit ESP32 Feather V2
9498
[env:featheresp32v2]
9599
extends = common:esp32
96100
board = adafruit_feather_esp32_v2
97101
board_build.partitions = default_8MB.csv
98102
build_flags = -DARDUINO_ADAFRUIT_FEATHER_ESP32_V2
103+
board_build.filesystem = littlefs
99104

100105
; Adafruit Feather ESP32-S2
101106
[env:featheresp32s2]

src/components/i2c/WipperSnapper_I2C.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,28 @@ bool WipperSnapper_Component_I2C::initI2CDevice(
318318
_hts221->configureDriver(msgDeviceInitReq);
319319
drivers.push_back(_hts221);
320320
WS_DEBUG_PRINTLN("HTS221 Initialized Successfully!");
321+
} else if (strcmp("htu21d", msgDeviceInitReq->i2c_device_name) == 0) {
322+
_htu21d = new WipperSnapper_I2C_Driver_HTU21D(this->_i2c, i2cAddress);
323+
if (!_htu21d->begin()) {
324+
WS_DEBUG_PRINTLN("ERROR: Failed to initialize HTU21D!");
325+
_busStatusResponse =
326+
wippersnapper_i2c_v1_BusResponse_BUS_RESPONSE_DEVICE_INIT_FAIL;
327+
return false;
328+
}
329+
_htu21d->configureDriver(msgDeviceInitReq);
330+
drivers.push_back(_htu21d);
331+
WS_DEBUG_PRINTLN("HTU21D Initialized Successfully!");
332+
} else if (strcmp("htu31d", msgDeviceInitReq->i2c_device_name) == 0) {
333+
_htu31d = new WipperSnapper_I2C_Driver_HTU31D(this->_i2c, i2cAddress);
334+
if (!_htu31d->begin()) {
335+
WS_DEBUG_PRINTLN("ERROR: Failed to initialize HTU31D!");
336+
_busStatusResponse =
337+
wippersnapper_i2c_v1_BusResponse_BUS_RESPONSE_DEVICE_INIT_FAIL;
338+
return false;
339+
}
340+
_htu31d->configureDriver(msgDeviceInitReq);
341+
drivers.push_back(_htu31d);
342+
WS_DEBUG_PRINTLN("HTU31D Initialized Successfully!");
321343
} else if (strcmp("scd30", msgDeviceInitReq->i2c_device_name) == 0) {
322344
_scd30 = new WipperSnapper_I2C_Driver_SCD30(this->_i2c, i2cAddress);
323345
if (!_scd30->begin()) {

src/components/i2c/WipperSnapper_I2C.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#include "drivers/WipperSnapper_I2C_Driver_DPS310.h"
3131
#include "drivers/WipperSnapper_I2C_Driver_ENS160.h"
3232
#include "drivers/WipperSnapper_I2C_Driver_HTS221.h"
33+
#include "drivers/WipperSnapper_I2C_Driver_HTU21D.h"
34+
#include "drivers/WipperSnapper_I2C_Driver_HTU31D.h"
3335
#include "drivers/WipperSnapper_I2C_Driver_INA219.h"
3436
#include "drivers/WipperSnapper_I2C_Driver_LC709203F.h"
3537
#include "drivers/WipperSnapper_I2C_Driver_LPS22HB.h"
@@ -115,6 +117,8 @@ class WipperSnapper_Component_I2C {
115117
WipperSnapper_I2C_Driver_BMP3XX *_bmp3xx = nullptr;
116118
WipperSnapper_I2C_Driver_BME680 *_bme680 = nullptr;
117119
WipperSnapper_I2C_Driver_HTS221 *_hts221 = nullptr;
120+
WipperSnapper_I2C_Driver_HTU21D *_htu21d = nullptr;
121+
WipperSnapper_I2C_Driver_HTU31D *_htu31d = nullptr;
118122
WipperSnapper_I2C_Driver_INA219 *_ina219 = nullptr;
119123
WipperSnapper_I2C_Driver_LTR390 *_ltr390 = nullptr;
120124
WipperSnapper_I2C_Driver_MCP9808 *_mcp9808 = nullptr;
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*!
2+
* @file WipperSnapper_I2C_Driver_HTU21D.h
3+
*
4+
* Device driver for an HTU21D Humidity and Temperature sensor.
5+
*/
6+
7+
#ifndef WipperSnapper_I2C_Driver_HTU21D_H
8+
#define WipperSnapper_I2C_Driver_HTU21D_H
9+
10+
#include "WipperSnapper_I2C_Driver.h"
11+
#include <Adafruit_HTU21DF.h>
12+
13+
/**************************************************************************/
14+
/*!
15+
@brief Class that provides a sensor driver for the HTU21D humidity and
16+
temperature sensor.
17+
*/
18+
/**************************************************************************/
19+
class WipperSnapper_I2C_Driver_HTU21D : public WipperSnapper_I2C_Driver {
20+
21+
public:
22+
/*******************************************************************************/
23+
/*!
24+
@brief Constructor for an HTU21D sensor.
25+
@param i2c
26+
The I2C interface.
27+
@param sensorAddress
28+
7-bit device address.
29+
*/
30+
/*******************************************************************************/
31+
WipperSnapper_I2C_Driver_HTU21D(TwoWire *i2c, uint16_t sensorAddress)
32+
: WipperSnapper_I2C_Driver(i2c, sensorAddress) {
33+
_i2c = i2c;
34+
_sensorAddress = sensorAddress;
35+
}
36+
37+
/*******************************************************************************/
38+
/*!
39+
@brief Destructor for an HTU21D sensor.
40+
*/
41+
/*******************************************************************************/
42+
~WipperSnapper_I2C_Driver_HTU21D() { delete _htu21d; }
43+
44+
/*******************************************************************************/
45+
/*!
46+
@brief Initializes the HTU21D sensor and begins I2C.
47+
@returns True if initialized successfully, False otherwise.
48+
49+
*/
50+
/*******************************************************************************/
51+
bool begin() {
52+
// attempt to initialize the HTU21D using the I2C interface
53+
_htu21d = new Adafruit_HTU21DF();
54+
return _htu21d->begin(_i2c);
55+
}
56+
57+
/*******************************************************************************/
58+
/*!
59+
@brief Gets the HTU21D's current temperature.
60+
@param tempEvent
61+
Pointer to an Adafruit_Sensor event.
62+
@returns True if the temperature was obtained successfully, False
63+
otherwise.
64+
*/
65+
/*******************************************************************************/
66+
bool getEventAmbientTemp(sensors_event_t *tempEvent) {
67+
tempEvent->temperature = _htu21d->readTemperature();
68+
return true;
69+
}
70+
71+
/*******************************************************************************/
72+
/*!
73+
@brief Gets the HTU21D's current humidity.
74+
@param humidEvent
75+
Pointer to an Adafruit_Sensor event.
76+
@returns True if the humidity was obtained successfully, False
77+
otherwise.
78+
*/
79+
/*******************************************************************************/
80+
bool getEventRelativeHumidity(sensors_event_t *humidEvent) {
81+
humidEvent->relative_humidity = _htu21d->readHumidity();
82+
return true;
83+
}
84+
85+
protected:
86+
Adafruit_HTU21DF *_htu21d; ///< Pointer to an HTU21D object
87+
};
88+
89+
#endif // WipperSnapper_I2C_Driver_HTU21D
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*!
2+
* @file WipperSnapper_I2C_Driver_HTU31D.h
3+
*
4+
* Device driver for an HTU31D Humidity and Temperature sensor.
5+
*/
6+
7+
#ifndef WipperSnapper_I2C_Driver_HTU31D_H
8+
#define WipperSnapper_I2C_Driver_HTU31D_H
9+
10+
#include "WipperSnapper_I2C_Driver.h"
11+
#include <Adafruit_HTU31D.h>
12+
13+
/**************************************************************************/
14+
/*!
15+
@brief Class that provides a sensor driver for the HTU31D humidity and
16+
temperature sensor.
17+
*/
18+
/**************************************************************************/
19+
class WipperSnapper_I2C_Driver_HTU31D : public WipperSnapper_I2C_Driver {
20+
21+
public:
22+
/*******************************************************************************/
23+
/*!
24+
@brief Constructor for an HTU31D sensor.
25+
@param i2c
26+
The I2C interface.
27+
@param sensorAddress
28+
7-bit device address.
29+
*/
30+
/*******************************************************************************/
31+
WipperSnapper_I2C_Driver_HTU31D(TwoWire *i2c, uint16_t sensorAddress)
32+
: WipperSnapper_I2C_Driver(i2c, sensorAddress) {
33+
_i2c = i2c;
34+
_sensorAddress = sensorAddress;
35+
}
36+
37+
/*******************************************************************************/
38+
/*!
39+
@brief Destructor for an HTU31D sensor.
40+
*/
41+
/*******************************************************************************/
42+
~WipperSnapper_I2C_Driver_HTU31D() { delete _htu31d; }
43+
44+
/*******************************************************************************/
45+
/*!
46+
@brief Initializes the HTU31D sensor and begins I2C.
47+
@returns True if initialized successfully, False otherwise.
48+
49+
*/
50+
/*******************************************************************************/
51+
bool begin() {
52+
// attempt to initialize the HTU31D using the I2C interface
53+
_htu31d = new Adafruit_HTU31D();
54+
return _htu31d->begin(_sensorAddress, _i2c);
55+
}
56+
57+
/*******************************************************************************/
58+
/*!
59+
@brief Gets the HTU31D's current temperature.
60+
@param tempEvent
61+
Pointer to an Adafruit_Sensor event.
62+
@returns True if the temperature was obtained successfully, False
63+
otherwise.
64+
*/
65+
/*******************************************************************************/
66+
bool getEventAmbientTemp(sensors_event_t *tempEvent) {
67+
return _htu31d->getEvent(nullptr, tempEvent);
68+
}
69+
70+
/*******************************************************************************/
71+
/*!
72+
@brief Gets the HTU31D's current humidity.
73+
@param humidEvent
74+
Pointer to an Adafruit_Sensor event.
75+
@returns True if the humidity was obtained successfully, False
76+
otherwise.
77+
*/
78+
/*******************************************************************************/
79+
bool getEventRelativeHumidity(sensors_event_t *humidEvent) {
80+
return _htu31d->getEvent(humidEvent, nullptr);
81+
}
82+
83+
protected:
84+
Adafruit_HTU31D *_htu31d; ///< Pointer to an HTU31D object
85+
};
86+
87+
#endif // WipperSnapper_I2C_Driver_HTU31D

0 commit comments

Comments
 (0)