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))
    time.sleep(0.1)
    result = binascii.hexlify(i2c.readfrom(0x40, 3))
    print(result)
    

    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.
    https://github.com/robert-hh/SI7021
    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