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]], но это все те же самые датчики.
  
 
=См.также=
 
=См.также=

Текущая версия на 12:52, 1 июля 2020

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


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

См.также

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