MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Температура и влажность
Температура и влажность[1]
DHT-датчики (от англ. «Digital Humidity & Temperature», т.е. «цифровые данные о влажности и температуре») – это недорогие цифровые устройства с емкостными датчиками влажности и термисторами для измерения показателей окружающего воздуха. В них также есть чип, выполняющий аналогово-цифровое преобразование и оснащенный интерфейсом OneWire. В более новых версиях есть также интерфейс I2C.
У датчиков DHT11 (синий) и DHT22 (белый) одинаковый интерфейс OneWire, но объекты им нужны разные, потому что DHT22 выполняет более сложные вычисления. У DHT22 разрешение возвращаемых значений – один знак после запятой, у DHT11 – целые числа.
В MicroPython для считывания данных с DHT-датчиков используется собственная версия протокола OneWire, а не тот, что был разработан компанией Dallas. Полезная нагрузка включает в себя значение влажности, значение температуры и контрольное число.
Чтобы воспользоваться интерфейсом OneWire, создайте объекты датчиков, указав контакт для передачи данных, к которому они подключены:
>>> import dht
>>> import machine
>>> d = dht.DHT11(machine.Pin(4))
>>> import dht
>>> import machine
>>> d = dht.DHT22(machine.Pin(4))
Затем измерьте и прочтите их значения:
>>> d.measure()
>>> d.temperature()
>>> d.humidity()
Значения, возвращаемые temperature(), будут в градусах Цельсия, а значения, возвращаемые humidity() – в процентах относительной влажности.
В целях получения наиболее точного результата DHT11 нужно вызывать не более 1 раза в секунду, а DHT22 – не более двух раз в секунду. Со временем точность датчика будет ухудшаться. У DHT11 и DHT22 разный диапазон считываемых значений. Более подробно смотрите в документации к каждому датчику.
В режиме OneWire используется только три из четырех контактов датчика, но в режиме I2C используются все четыре контакта. У старых моделей может быть четыре контакта, даже несмотря на то, что они не поддерживают работу в режиме I2C.
Их 3-ий контакт просто не подключен.
Конфигурации контактов
- Датчик без I2C в режиме OneWire (например, DHT11, DHT22, AM2301, AM2302):
- 1=VDD (питание), 2=Data (данные), 3=NC (не подключен), 4=GND (земля)
- Датчик с I2C в режиме OneWire (например, DHT12, AM2320, AM2321, AM2322):
- 1=VDD, 2=Data, 3=GND, 4=GND
- Датчик с I2C в режиме I2C (например, DHT12, AM2320, AM2321, AM2322):
- 1=VDD, 2=SDA (данные), 3=GND, 4=SCL (тактовый сигнал)
Для контактов Data, SDA и SCL нужно использовать подтягивающий резистор.
У новых I2C-датчиков есть обратная совместимость с режимом OneWire – для этого контакты 3 и 4 нужно подключить к GND (т.е. заземлить). Это отключит интерфейс I2C.
Датчики DHT22 теперь продаются под названием AM2302, но это все те же самые датчики.