3.8 KiB
3.8 KiB
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.00x20
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.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 bitsi7021.RH10_TEMP13
Relative Humidity 10 bit - Temperature 13 bitsi7021.RH11_TEMP11
Relative Humidity 11 bit - Temperature 11 bit
HEATER
optionalsi7021.HEATER_ENABLE
On-chip Heater Enablesi7021.HEATER_DISABLE
On-chip Heater Disable (default)
HEATER_SETTING
optional0x00
-0x0F
3.09 mA - 94.20 mA
Returns
resolution
0
Relative Humidity 12 bit - Temperature 14 bit1
Relative Humidity 8 bit - Temperature 12 bit2
Relative Humidity 10 bit - Temperature 13 bit3
Relative Humidity 11 bit - Temperature 11 bit
vdds
0
VDD OK (1.9V - 3.6V)1
VDD LOW (1.8V - 1.9V)
heater
0
Disabled1
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()
si7021.read()
Syntax
si7021.read()
Parameters
none
Returns
hum
humidity (see note below)temp
temperature (see note below)hum_dec
humidity decimaltemp_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 asnb
32-bit serial number part b, upper byte contains the device identification0x00
or0xFF
engineering samples0x0D
13
Si70130x14
20
Si70200x15
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)))