A MicroPython library for the TI HDC1080 low power, high accuracy digital humidity and temperature sensor with I2C Interface.
Using mip via mpremote:
$ mpremote mip install github:mcauser/micropython-hdc1080
$ mpremote mip install github:mcauser/micropython-hdc1080/examples
Using mip directly on a WiFi capable board:
>>> import mip
>>> mip.install("github:mcauser/micropython-hdc1080")
>>> mip.install("github:mcauser/micropython-hdc1080/examples")
Manual installation:
Copy src/hdc1080.py
to the root directory of your device.
Basic usage
from machine import I2C, Pin
from hdc1080 import HDC1080
i2c = I2C(0)
i2c.scan()
# [64]
hdc = HDC1080(i2c)
# set humidity resolution (in bits)
hdc.config(humid_res=8)
hdc.config(humid_res=11)
hdc.config(humid_res=14)
# as resolution increases, conversion time increases
# 8-bit 2.5ms, 11-bit 3.85ms, 14-bit 6.5ms
# set temperature resolution (in bits)
hdc.config(temp_res=11)
hdc.config(temp_res=14)
# as resolution increases, conversion time increases
# 11-bit 3.65ms, 14-bit 6.35ms
# set acquisition mode
hdc.config(mode=0)
hdc.config(mode=1)
# 0 measure temp or humidity
# 1 measure temp and humidity
# toggle heater
hdc.config(heater=0)
hdc.config(heater=1)
# 0 turns heater off
# 1 turns heater on
# heater can be used to test the sensor or drive off condensation after long exposure to high humidity
hdc.temperature()
# eg 20.78735
hdc.humidity()
# eg 60.83984
# software reset
hdc.reset()
# look for the HDC1080 sensor on the I2C bus
hdc.check()
# returns True if the device was found, otherwise raises an OSError
hdc.battery_status()
# returns 0 if Vcc > 2.8V
# returns 1 if Vcc < 2.8V
# useful in low power battery powered systems, to inform user to replace batteries
hdc.serial_number()
# returns eg 9816972135, a 40-bit unique serial per individual HDC1080
hdc.manufacturer_id()
# returns 21577 or 0x5449
# which can be represented as b'TI' for Texas Instruments
hdc.device_id()
# returns 4176 or 0x1050
# don't ask me why it's 1050 and not 1080 - that's just how it is in the datasheet
For more detailed examples, see examples.
If you mip installed them above, you can run them like so:
import hdc1080.examples.basic
from machine import SoftI2C, Pin
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
from machine import I2C, Pin
i2c = I2C(0)
HDC1080 | TinyPICO (ESP32) |
---|---|
VCC | 3V3 |
GND | GND |
SCL | 22 (SCL) |
SDA | 21 (SDA) |
Licensed under the MIT License.
Copyright (c) 2024 Mike Causer