用户工具

站点工具


micropython:mpy-lib:sensor:sht20温湿度传感器

SHT20温湿度传感器

使用方法

from machine import I2C
import sht20
 
sht = sht20.SHT20(I2C(1))
print(sht.humi(sht.humi_raw()))

首先读取寄存器原始值,在需要时在转换为实际的温湿度数值。因为计算需要进行浮点数运算,为了在回调函数(中断)中可以采样,因此采取这种方式。

驱动源码

sht20.py
'''
    mpy drive for SHT20 Humidity and Temperature Sensor

    Author: shaoziyang
    Date:   2020.12

    http://www.micropython.org.cn

'''
from micropython import const
from time import sleep_ms

SHT20_I2C_ADDR = const(0x40)

class SHT20():

    def __init__(self, i2c):
        self.i2c = i2c
        self.tb = bytearray(1)
        self.rb = bytearray(1)
        self.ht = bytearray(3)
        self.reset()

    def setreg(self, reg, dat):
        self.tb[0] = dat
        self.i2c.writeto_mem(SHT20_I2C_ADDR, reg, self.tb)

    def getreg(self, reg):
        self.i2c.readfrom_mem_into(SHT20_I2C_ADDR, reg, self.rb)
        return self.rb[0]

    def write(self, cmd):
        self.tb[0] = cmd
        self.i2c.writeto(SHT20_I2C_ADDR, self.tb)

    def reset(self):
        self.write(0xfe)
    
    def measure(self, cmd, delay):
        self.write(cmd)
        sleep_ms(delay)
        self.i2c.readfrom_into(SHT20_I2C_ADDR, self.ht)

    def humi_raw(self):
        self.measure(0xf5, 30)
        return self.ht[0]*256+self.ht[1]

    def temperature_raw(self):
        self.measure(0xf3, 85)
        return self.ht[0]*256+self.ht[1]

    def humi(self, raw):
        return (125*raw//65536) -6

    def temperature(self, raw):
        return 175.72*raw/65536 - 46.85


purge    随机主题   
micropython/mpy-lib/sensor/sht20温湿度传感器.txt · 最后更改: 2021/02/28 23:12 (外部编辑) · 查看次数: 9618