mirror of
https://github.com/supleed2/ELEC60013-ES-CW1.git
synced 2024-11-10 01:35:50 +00:00
Add Custom Si7201 Lib
Si7201 temperature and relative humidity sensor class, with callable properties
This commit is contained in:
parent
3d946a168b
commit
4076623ef8
40
si7201.py
Normal file
40
si7201.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
"""Library for interacting with Si7201 Temperature & Humidity Sensor."""
|
||||||
|
|
||||||
|
import smbus2
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
|
||||||
|
class Si7201:
|
||||||
|
def __init__(self, i2cBus, i2cAddress=0x40):
|
||||||
|
self.i2c = i2cBus
|
||||||
|
self.addr = i2cAddress
|
||||||
|
i2cBus.pec = True # enable smbus2 Packet Error Checking
|
||||||
|
|
||||||
|
@property
|
||||||
|
def temperature(self, decimals=1):
|
||||||
|
"""Measured temperature in degrees Celsius, with configurable decimal places, default 1."""
|
||||||
|
measure_temp = smbus2.i2c_msg.write(self.addr, [0xF3])
|
||||||
|
read_temp = smbus2.i2c_msg.read(self.addr, 2)
|
||||||
|
self.i2c.i2c_rdwr(measure_temp)
|
||||||
|
sleep(0.1)
|
||||||
|
self.i2c.i2c_rdwr(read_temp)
|
||||||
|
temp_code = int.from_bytes(read_temp.buf[0] + read_temp.buf[1], "big")
|
||||||
|
temp = round(((175.72 * temp_code) / 65536 - 46.85), decimals)
|
||||||
|
return temp
|
||||||
|
|
||||||
|
@property
|
||||||
|
def humidity(self, decimals=1):
|
||||||
|
"""Measured relative humidity in percent, with configurable decimal places, default 1."""
|
||||||
|
measure_hum = smbus2.i2c_msg.write(self.addr, [0xF5])
|
||||||
|
read_rh = smbus2.i2c_msg.read(self.addr, 2)
|
||||||
|
self.i2c.i2c_rdwr(measure_hum)
|
||||||
|
sleep(0.1)
|
||||||
|
self.i2c.i2c_rdwr(read_rh)
|
||||||
|
rh_code = int.from_bytes(read_rh.buf[0] + read_rh.buf[1], "big")
|
||||||
|
hum = round((125 * rh_code) / 65536 - 6.0, decimals)
|
||||||
|
return hum
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
"""Reset the sensor."""
|
||||||
|
resetcmd = smbus2.i2c_msg.write(self.addr, [0xFE])
|
||||||
|
self.i2c.i2c_rdwr(resetcmd)
|
Loading…
Reference in a new issue