【MicroPython】使用DHT11温湿度传感器

 

 

1、本次实验所需器材

一、PyboardCN V2板  一块安全

二、杜邦线:若干spa

三、DHT11模块 一块调试

2、连线

DHT11 Pyboard
VCC 3.3V-5V
GND GND
DATA Y1

3、调试代码,以下

首先将dht.py复制到PYBFLASH磁盘的根目录。复制文件后要安全退出磁盘,而后从新接入,否则找不到文件。先将DHT11按照上图接线,而后输入下面代码:code

>>> from machine import Pin
>>> import dht
>>> dht = dht.DHT11(Pin("Y1"))
>>> dht.measure()
>>> print("temperature:",dht.temperature())
temperature: 29
>>> print("humidity:",dht.humidity())
humidity: 53

dht.py文件内容以下:ci

# DHT11/DHT22 driver for MicroPython on ESP8266
# MIT license; Copyright (c) 2016 Damien P. George

try:
    from esp import dht_readinto
except:
    from pyb import dht_readinto

class DHTBase:
    def __init__(self, pin):
        self.pin = pin
        self.buf = bytearray(5)

    def measure(self):
        buf = self.buf
        dht_readinto(self.pin, buf)
        if (buf[0] + buf[1] + buf[2] + buf[3]) & 0xff != buf[4]:
            raise Exception("checksum error")

class DHT11(DHTBase):
    def humidity(self):
        return self.buf[0]

    def temperature(self):
        return self.buf[2]

class DHT22(DHTBase):
    def humidity(self):
        return (self.buf[0] << 8 | self.buf[1]) * 0.1

    def temperature(self):
        t = ((self.buf[2] & 0x7f) << 8 | self.buf[3]) * 0.1
        if self.buf[2] & 0x80:
            t = -t
        return t

注:it

  • 若是DHT11没有链接好就输入dht = dht.DHT11(Pin("Y1"))命令,会由于没有搜索到器件而出错。
  • 千万不要接反VCC和GND,否则会损坏传感器。