M5StickC & Sensor SHT 31
-
Hello, how can I integrate my SHT31 sensor into the M5StickC via Grove ?
Here is my code from the Pycom Wipy with which the SHT runs perfectly.Main.py
if (Sensorwahl) == 'sht31':i2c = I2C(0, I2C.MASTER, baudrate=100000) sensor = sht31.SHT31(i2c, addr=0x44) temp_humi = sensor.get_temp_humi() time.sleep(0.6) pycom.rgbled(0xff007f) # magenta pycom.heartbeat(False) #Lampe ausschalten um Energie zu sparen Temp1 = round(temp_humi[0],2) Feuchte1 = round(temp_humi[1],2) time.sleep(1) print('----------------------------------------------------------------------') print("Ohne Runden = Temperature: {} °C | Humidity: {} %".format(temp_humi[0], temp_humi[1])) print('----------------------------------------------------------------------') #Übergabe der Sensorwerte--------------------------------------- Temp1 = (Temp1 + 0) #Übergabe und Differenzeingabe Feuchte1 = (Feuchte1 + 0) #Übergabe und Differenzeingabe #Übergabe der Sensorwerte---------------------------------------sht31.py
from machine import I2C
import timeR_HIGH = const(1)
R_MEDIUM = const(2)
R_LOW = const(3)class SHT31(object):
"""
Diese Klasse implementiert eine Schnittstelle zur SHT31 Temperatur und Luftfeuchtigkeit.
Sensor von Sensirion.
"""
# Diese statische Karte hilft, den Heap und die Programmlogik sauber zu halten.
_map_cs_r = {
True: {
R_HIGH : b'\x2c\x06',
R_MEDIUM : b'\x2c\x0d',
R_LOW: b'\x2c\x10'
},
False: {
R_HIGH : b'\x24\x00',
R_MEDIUM : b'\x24\x0b',
R_LOW: b'\x24\x16'
}
}def __init__(self, i2c, addr=0x44): """ Initialisiert ein Sensorobjekt auf dem angegebenen I2C-Bus, auf das von der angegebene Adresse. """ if i2c == None or i2c.__class__ != I2C: raise ValueError('I2C-Objekt als Argument benötigt!') self._i2c = i2c self._addr = addr def _send(self, buf): """ Sendet das angegebene Pufferobjekt über I2C an den Sensor. """ self._i2c.writeto(self._addr, buf) def _recv(self, count): """ Lesen von Bytes vom Sensor über I2C. Die Anzahl der Bytes kann angegeben werden. als Argument. Liefert ein Bytearray für das Ergebnis. """ return self._i2c.readfrom(self._addr, count) def _raw_temp_humi(self, r=R_HIGH, cs=True): """ Lesen Sie die Rohtemperatur und Luftfeuchtigkeit vom Sensor ab und überspringen Sie CRC. Überprüfung. Liefert ein Tupel für beide Werte in dieser Reihenfolge. """ if r not in (R_HIGH, R_MEDIUM, R_LOW): raise ValueError('Falscher Wiederholbarkeitswert angegeben!') self._send(self._map_cs_r[cs][r]) time.sleep_ms(50) raw = self._recv(6) return (raw[0] << 8) + raw[1], (raw[3] << 8) + raw[4] def get_temp_humi(self, resolution=R_HIGH, clock_stretch=True, celsius=True): """ Lesen Sie die Temperatur in Grad Celsius oder Fahrenheit und relativ dazu ab. Feuchtigkeit. Auflösung und Taktverlängerung können festgelegt werden. Liefert ein Tupel für beide Werte in dieser Reihenfolge. """ t, h = self._raw_temp_humi(resolution, clock_stretch) if celsius: temp = -45 + (175 * (t / 65535.0)) else: temp = -49 + (315 * (t / 65535.0)) return temp, 100 * (h / 65535.0)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login