Treiber für Temperatursensor sirion-SHT3X-MicroPython
Verfasst: Samstag 22. März 2025, 15:56
Guten Tag,
ich habe eine Anfängerfrage. Ich möchte den in Python geschriebenen Treiber für den Temperatursensor SHT35 benutzen, den ich unter https://github.com/dvsu/Sensirion-SHT3X ... n/sht3x.py gefunden habe:
Die I2C- Initialisierung habe ich so vorgenommen:
Aber wie muss ich die Klasse SHT3X oder SHT35 aufrufen, damit der Temperaturwert in eine Variable geschrieben wird?
ich habe eine Anfängerfrage. Ich möchte den in Python geschriebenen Treiber für den Temperatursensor SHT35 benutzen, den ich unter https://github.com/dvsu/Sensirion-SHT3X ... n/sht3x.py gefunden habe:
Code: Alles auswählen
from ubinascii import hexlify
from time import sleep
from machine import I2C
class SHT3X:
def __init__(self, bus_obj:I2C, address:int):
self.address = address
self.bus = bus_obj
def get_temperature_in_celsius(self, data:int) -> float:
# Temperature conversion formula (Celsius)
# T[C] = -45 + (175 * (raw_temp_data / (2^16 - 1)))
return round(-45 + (175 * (data / ((2**16) - 1))), 2)
def get_temperature_in_fahrenheit(self, data:int) -> float:
# Temperature conversion formula (Fahrenheit)
# T[F] = -49 + (315 * (raw_temp_data / (2^16 - 1)))
return round(-49 + (315 * (data / ((2**16) - 1))), 2)
def get_relative_humidity(self, data:int) -> float:
# Relative humidity conversion formula
# RH = 100 * (raw_humidity_data / (2^16 - 1))
return round(100 * (data/ ((2**16) - 1)), 2)
def get_measurement(self) -> dict:
try:
sleep(0.05)
self.bus.writeto(self.address, b'\x2c\x06')
sleep(0.05)
data = hexlify(self.bus.readfrom(self.address, 6))
temp_data = int(data[0:4], 16)
humi_data = int(data[6:10], 16)
sleep(0.05)
return {
"temp_celsius": self.get_temperature_in_celsius(temp_data),
"temp_fahrenheit": self.get_temperature_in_fahrenheit(temp_data),
"humidity": self.get_relative_humidity(humi_data)
}
except Exception as e:
print("Failed to read temperature and humidity value")
print(e)
class SHT31(SHT3X):
def __init__(self, bus_obj:I2C):
self.sensor_name = 'SHT31'
super().__init__(bus_obj, address=68) # 0x44
class SHT35(SHT3X):
def __init__(self, bus_obj:I2C):
self.sensor_name = 'SHT35'
super().__init__(bus_obj, address=69) # 0x45
Code: Alles auswählen
from machine import Pin, I2C
# Initialisierung I2C-Pins
i2c_sda = Pin(14)
i2c_scl = Pin(15)
# Initialisierung I2C
i2c = I2C(1,sda=i2c_sda,scl=i2c_scl,freq=400000)