MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Температура и влажность

Материал из Онлайн справочника
Версия от 20:05, 23 мая 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Температура и влажность[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, но это все те же самые датчики.

См.также

Внешние ссылки