diff --git a/modules/hdc1000.py b/modules/hdc1000.py new file mode 100644 index 0000000..74b3f70 --- /dev/null +++ b/modules/hdc1000.py @@ -0,0 +1,98 @@ +# Library for the temperature and humidity sensor +# ----> https://www.adafruit.com/products/2635 + +from pprint import pprint +try: + import smbus2 as smbus +except ModuleNotFoundError: + import smbus + +I2CADDR = 0x40 + +TEMP_REG = 0x00 +HUMID_REG = 0x01 +CONFIG_REG = 0x02 + +CONFIG_RST = (1 << 15) +CONFIG_HEAT = (1 << 13) +CONFIG_MODE_SINGLE = 0 +CONFIG_MODE_BOTH = (1 << 12) +CONFIG_BATT = (1 << 11) +CONFIG_TRES_14 = 0 +CONFIG_TRES_11 = (1 << 10) +CONFIG_HRES_14 = 0 +CONFIG_HRES_11 = (1 << 8) +CONFIG_HRES_8 = (1 << 9) + +SERIAL1 = 0xFB +SERIAL2 = 0xFC +SERIAL3 = 0xFD +MANUFID = 0xFE +DEVICEID = 0xFF + +try: + bus = smbus.SMBus(1) +except: + print("No I2C bus found.") + +def reset(): + config = ( + CONFIG_RST | + CONFIG_MODE_BOTH | + CONFIG_TRES_14 | + CONFIG_HRES_14 + ) + bus.write_word_data(I2CADDR, CONFIG, config) + +def triggerMeasurements(): + bus.write_byte(I2CADDR, TEMP_REG) + +def readTemperature(): + vals = bus.read_i2c_block_data(I2CADDR, TEMP_REG) + pprint(vals) + #float temp = (read32(HDC1000_TEMP, 20) >> 16); + #temp /= 65536; + #temp *= 165; + #temp -= 40; + + #return temp; + +def readHumidity(): + vals = bus.read_i2c_block_data(I2CADDR, HUMID_REG) + pprint(vals) + #float hum = (read32(HDC1000_TEMP, 20) & 0xFFFF); + #hum /= 65536; + #hum *= 100; + + #return hum; + +def drySensor(): + origconfig = bus.read_word_data(I2CADDR, CONFIG_REG) + newconfig = ( + CONFIG_RST | + CONFIG_HEAT | + CONFIG_MODE_BOTH | + CONFIG_TRES_14 | + CONFIG_HRES_14 + ) + + bus.write_word_data(I2CADDR, CONFIG_REG, newconfig) + + sleep(0.1) + + # Take 1000 readings + for x in range(0, 1000): + triggerMeasurements() + sleep(0.1) + + sleep(0.1) + + origconfig |= CONFIG_RST; + bus.write_word_data(I2CADDR, CONFIG_REG, origconfig) + +def init(): + reset() + manuf = bus.read_word_data(I2CADDR, MANUFID) + dev = bus.read_word_data(I2CADDR, DEVICEID) + print("Manufacturer:", manuf, "Device:", dev) +