Wer hat den Sensor SHT20 oder SHT21 erfolgreich an laufen?



  • Ich versuche es noch mal in Deutsch, vielleicht habe ich es in einen anderen Post schlecht übersetzen lassen.
    Wer arbeitet mit den folgenden SHT20 SHT21 Sensoren und kann mir dabei mit einem Code Snippet helfen wie man sie in Dezimalzahlen auslesen kann. Oder wer kennt eine Seite wo Infos darüber stehen.
    Ich bin für jede Hilfe dankbar.
    Bis jetzt habe ich immer Hilfe bekommen, hoffe auch diesmal darauf.



  • Gern geschehen.
    Grüße aus Dänemark



  • @Frida Scheint zu laufen!
    Vielen vielen Dank. Sie haben mir sehr geholfen.



  • Probieren Sie diesen Ausschnitt aus.

    Es läuft auf der neuesten Version mit Erweiterungskarte v2.1a

    Pycom MicroPython 1.18.2.r4 [v1.8.6-849-ba178ae] am 2019-04-01; WiPy mit ESP32

    from machine import I2C
    #import array
    import time
    #import binascii
    import math
    
    #Init bus
    #remove jumper from led
    #SDA=P9 aka G16 aka GPIO12  SCL=P10 aka G17 aka GPIO13
    #expansionboard v2.1a
    i2c = I2C(0, I2C.MASTER,  baudrate=100000)
    
    i2c.scan()
    
    i2cadr = 0x40
    A = 8.1332;
    B = 1762.39;
    C = 235.66
    
    def crc8(raw):
      check = raw[0] << 16 | raw[1] << 8 | raw[2]
      #print(check)
      #print(raw[0], ' ', raw[1], ' ', raw[2])
    
      check1 = check
    
      divsor = 0x988000 # 1 0011 0001 0x131
    
      for i in range(0, 16):
        if( check & 1 << (23 - i) ):
          check ^= divsor
    
        divsor = divsor >> 1
    
      if not check == 0:
        #print('True')
      #else:
        print('False')
    
    
    while 1:
      ## read Temperature, hold
      #i2c.writeto(i2cadr, b'\xE3')
      ## read Temperature, no hold
      dummy = i2c.writeto(i2cadr, b'\xF3')
      time.sleep(0.1)
      raw = i2c.readfrom(i2cadr, 3)
    
      crc8(raw)
      raw = raw[0] << 8 | raw[1]
      #raw = raw & 0xFFFC;
      #tempV = -46.85 + (175.72 * raw / 65536)
      raw = raw >> 2;
      tempV = -46.85 + (175.72 * raw / 16384)
    
      ## read Humidity, hold
      #i2c.writeto(i2cadr, b'\xE5')
      ## read Humidity, no hold
      dummy = i2c.writeto(i2cadr, b'\xF5')
      time.sleep(0.1)
      raw = i2c.readfrom(i2cadr, 3)
      raw = raw[0] << 8 | raw[1]	
      #raw = raw & 0xFFFC;
      #humdV = -6 + (125.0 * raw / 65536)
      raw = raw >> 2;
      humdV = -6 + (125.0 * raw / 16384)
    
      ## compute dewpoint
      pp = math.pow(10, A - B / (tempV + C))  
      tm = math.log(humdV * pp / 100, 10)
      dp = -(B / (tm - A) + C)
    
      #print('temp: ', tempV, '  relH: ', humdV,' dew: ',dp)
      print('temp: {:<10} relH: {:<10} dew: {:<10}'.format(tempV, humdV, dp))
      time.sleep(2)
    
    
    
    


Pycom on Twitter