Back to Nodemcu Firmware

Si7021 Module

docs/modules/si7021.md

latest3.8 KB
Original Source

Si7021 Module

SinceOrigin / ContributorMaintainerSource
2017-04-19fetchbotfetchbotsi7021.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

lua
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

lua
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

lua
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

lua
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

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