Si7021 Module

Since Origin / Contributor Maintainer Source
2017-04-19 fetchbot fetchbot si7021.c

This module provides access to the Si7021 humidity and temperature sensor.

si7021.firmware()

Read the internal firmware revision of the Si7021 sensor.

Syntax

si7021.firmware()

Parameters

none

Returns

fwrev Firmware version * 0xFF Firmware version 1.0 * 0x20 Firmware version 2.0

Example

local sda, scl = 6, 5
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()

fwrev = si7021.firmware()
print(string.format("FW: %X\r\n", fwrev))

si7021.read()

Syntax

si7021.read()

Parameters

none

Returns

  • hum humidity (see note below)
  • temp temperature (see note below)
  • hum_dec humidity decimal
  • temp_dec temperature decimal

Note

If using float firmware then hum and temp are floating point numbers. On an integer firmware, the final values have to be concatenated from hum and hum_dec / temp and temp_dec.

Example

local sda, scl = 6, 5
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()

hum, temp, hum_dec, temp_dec = si7021.read()

-- Integer firmware using this example
print(string.format("Humidity:\t\t%d.%03d\nTemperature:\t%d.%03d\n", hum, hum_dec, temp, temp_dec))

-- Float firmware using this example
print("Humidity: "..hum.."\n".."Temperature: "..temp)

si7021.serial()

Read the individualized 64-bit electronic serial number of the Si7021 sensor.

Syntax

si7021.serial()

Parameters

none

Returns

  • sna 32-bit serial number part a
  • snb 32-bit serial number part b, upper byte contains the device identification
    • 0x00 or 0xFF engineering samples
    • 0x0D 13 Si7013
    • 0x14 20 Si7020
    • 0x15 21 Si7021

Example

local sda, scl = 6, 5
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()

sna, snb = si7021.serial()
print(string.format("SN:\t\t%X%X\nDevice:\tSi70%d", sna, snb, bit.rshift(snb,24)))

si7021.setting()

Settings for the sensors configuration register to adjust measurement resolution, on-chip heater and read the supply voltage status.

Syntax

si7021.setting(RESOLUTION[, HEATER, HEATER_SETTING])

Parameters

  • RESOLUTION
    • si7021.RH12_TEMP14 Relative Humidity 12 bit - Temperature 14 bit (default)
    • si7021.RH08_TEMP12 Relative Humidity 8 bit - Temperature 12 bit
    • si7021.RH10_TEMP13 Relative Humidity 10 bit - Temperature 13 bit
    • si7021.RH11_TEMP11 Relative Humidity 11 bit - Temperature 11 bit
  • HEATER optional
    • si7021.HEATER_ENABLE On-chip Heater Enable
    • si7021.HEATER_DISABLE On-chip Heater Disable (default)
  • HEATER_SETTING optional
    • 0x00 - 0x0F 3.09 mA - 94.20 mA

Returns

  • resolution
    • 0 Relative Humidity 12 bit - Temperature 14 bit
    • 1 Relative Humidity 8 bit - Temperature 12 bit
    • 2 Relative Humidity 10 bit - Temperature 13 bit
    • 3 Relative Humidity 11 bit - Temperature 11 bit
  • vdds
    • 0 VDD OK (1.9V - 3.6V)
    • 1 VDD LOW (1.8V - 1.9V)
  • heater
    • 0 Disabled
    • 1 Enabled
  • heater_setting
    • 0 - 15

Example

local id, sda, scl = 0, 6, 5
i2c.setup(id, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()

res, vdds, heater, heater_set = si7021.setting(si7021.RH12_TEMP14)
res, vdds, heater, heater_set = si7021.setting(si7021.RH12_TEMP14, si7021.HEATER_ENABLE, 0x01)

si7021.setup()

Initializes the device on fixed I²C device address (0x40).

Syntax

si7021.setup()

Parameters

none

Returns

nil

Example

local sda, scl = 6, 5
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()