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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" enclose="div"> =С...»)
 
Нет описания правки
(не показана 1 промежуточная версия этого же участника)
Строка 2: Строка 2:
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
=Температура и влажность<ref>[http://docs.micropython.org/en/latest/esp8266/tutorial/dht.html docs.micropython.org - Temperature and Humidity]</ref>=
DHT-датчики (от англ. ''«Digital Humidity & Temperature»'', т.е. ''«цифровые данные о влажности и температуре»'') – это недорогие цифровые устройства с емкостными датчиками влажности и термисторами для измерения показателей окружающего воздуха. В них также есть чип, выполняющий аналогово-цифровое преобразование и оснащенный интерфейсом OneWire. В более новых версиях есть также интерфейс [[I2C]].
У датчиков [[DHT11]] (синий) и [[DHT22]] (белый) одинаковый интерфейс [[OneWire]], но объекты им нужны разные, потому что [[DHT22]] выполняет более сложные вычисления. У [[DHT22]] разрешение возвращаемых значений – один знак после запятой, у [[DHT11]] – целые числа.
В [[MicroPython]] для считывания данных с [[DHT-датчик]]ов используется собственная версия протокола [[OneWire]], а не тот, что был разработан компанией [[Dallas]]. Полезная нагрузка включает в себя значение влажности, значение температуры и контрольное число.
Чтобы воспользоваться интерфейсом [[OneWire]], создайте объекты датчиков, указав контакт для передачи данных, к которому они подключены:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python" enclose="div">
>>> import dht
>>> import machine
>>> d = dht.DHT11(machine.Pin(4))
>>> import dht
>>> import machine
>>> d = dht.DHT22(machine.Pin(4))
</syntaxhighlight>
Затем измерьте и прочтите их значения:
<syntaxhighlight lang="python" enclose="div">
>>> d.measure()
>>> d.temperature()
>>> d.humidity()
</syntaxhighlight>
Значения, возвращаемые 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]], но это все те же самые датчики.


=См.также=
=См.также=

Версия от 13:52, 1 июля 2020

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


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

См.также

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