SHT20 i2c sensor

  • My code looks like this

    from machine import I2C
    import array
    import time
    import binascii
    #Init bus
    i2c = I2C(0, I2C.MASTER,  baudrate=100000)
    #SHT20 Temperature command (use no hold master only commands --> 0xF3 )
    command = array.array('B', [0xF3])
    result = array.array('B',  [0, 0, 0])
    print(i2c.writeto(0x40, command))
    result = binascii.hexlify(i2c.readfrom(0x40, 3))

    it prints values like this : b'6f40f1'
    how do I get it to print temperature decimal?

  • @robert-hh
    Thank you so much! Works well

  • @Sudosu132 You could try to use my Si7021 module. It looks as if it could work. The commands and formula are pretty much the same.
    Edit: Just tried it with an SHT21. Works fine.

  • @Sudosu132 The first two bytes are the temp return value. You can make that a decimal number with:

    T = result[0] * 256 + result[1]

    In you example, that should give 28480. That value then goes into the formulat from the data sheet:

    temp = -46.85 + 175.72 * (T / 65538.0)

    Resulting in about 29.5 °C.

    Edit: The third byte from result is the checksum.

Log in to reply

Pycom on Twitter