Aht15 arduino подключение

Содержание

AHT10/AHT15 temperature and humidity sensor

When compiling your build add the following to user_config_override.h :

AHT1x are an I 2 C temperature and humidity sensor. AHT2x or AM2301B are upgraded versions.

Configuration

This sensor is incompatible with other I 2 C devices on I 2 C bus

Sensor datasheet implicitly says: Only a single AHT10 can be connected to the I 2 C bus and no other I 2 C devices can be connected. The AHT2x/AM2301B does not suffer from this problem.

Wiring
AHT ESP
VCC 3.3V
GND GND
SDA GPIOx
SCL GPIOy

Tasmota Settings

In the Configuration -> Configure Module page assign:

  1. GPIOx to I2C SDA
  2. GPIOy to I2C SCL

After a reboot the driver will detect AHT1x automatically and display sensor readings.

and in MQTT topic (according to TelePeriod):

Troubleshooting

On some I2C sensors, like the AHT25, Tasmota might mistake the sensor for another one using the same address. This can be resolved by disabling the unneeded drivers.

For our example AHT25, the address might get confused with the VEML6070 UV sensor. You can tell Tasmota to use the other driver by issuing the following commands in the console:

  • I2CDriver12 0 to disable the VEML driver
  • I2CDriver43 1 to enable the AHT driver

An overview of all I2C drivers is available in the docs.

Breakout Boards

Note: The pins on the smaller breakout board with the AHT15 are in a different order: VDD — SDA — GND — SCL See also the datasheet.

Источник

enjoyneering/AHT10

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

This library is no longer supported. New library here — https://github.com/enjoyneering/AHTxx

Aosong ASAIR AHT10, AHT15 & AHT20

This is an Arduino library for Aosong ASAIR AHT10, AHT15 & AHT20 Digital Humidity & Temperature Sensor

  • Supply voltage: 1.8v — 3.6v for AHT10, AHT15 & 2.0v — 5.5v for AHT20
  • Temperature range: -40°C..+85°C
  • Temperature resolution: 0.01°C
  • Temperature accuracy: ±0.3°C
  • Relative humidity range: 0%..100%
  • Relative humidity resolution: 0.024%
  • Relative humidity accuracy: ±2%**
  • I²C bus speed: 0Hz — 400KHz
  • Recomended polling frequency: 8sec — 30sec***

Supports all sensors features:

  • read humidity****
  • read temperature****
  • soft reset with sensor initialization
  • Arduino AVR
  • Arduino ESP8266
  • Arduino ESP32
  • Arduino STM32

**Prolonged exposure for 60 hours at humidity > 80% can lead to a temporary drift of the signal +3%. Sensor slowly returns to the calibrated state at normal operating conditions.

***If sampling rate of the measurement is too high, the sensor overheats. To prevent the temperature of the sensor from rising > 0.1°C, read sensor once every 2 seconds.

****The library returns 255 if a communication error occurs or if the calibration coefficient is off.

About

This is an Arduino library for Aosong ASAIR AHT10, AHT15 Digital Humidity & Temperature Sensor

Источник

enjoyneering/AHTxx

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Aosong ASAIR AHT1x/AHT2x

This is an Arduino library for Aosong ASAIR AHT10/AHT15/AHT20/AHT21/AHT25/AM2301B/AM2311B Digital Humidity & Temperature Sensor

  • AHT1x +1.8v..+3.6v, AHT2x +2.2v..+5.5v
  • AHT1x 0.25μA..320μA, AHT2x 0.25μA..980μA
  • temperature range -40°C..+85°C
  • humidity range 0%..100%
  • typical accuracy T ±0.3°C, RH ±2% (1)
  • typical resolution T 0.01°C, RH 0.024%
  • normal operating range T -20°C..+60°C, RH 10%..80%
  • maximum operating rage T -40°C..+80°C, RH 0%..100%
  • I²C bus speed 100KHz..400KHz, 10KHz recommended minimum
  • recommended measurement frequency 8sec..30sec (2)
  • recommended to route VDD or GND between I²C lines to reduce crosstalk between SCL & SDA
  • power supply pins must be decoupled with 100nF capacitor

Supports all sensors features:

  • read humidity (3)
  • read temperature (3)
  • soft reset with sensor initialization
  • CRC calculation for AHT2x (3)
  • Arduino AVR
  • Arduino ESP8266
  • Arduino ESP32
  • Arduino STM32

(1) Prolonged exposure for 60 hours at humidity > 80% can lead to a temporary drift of the signal +3%. Sensor slowly returns to the calibrated state at normal operating conditions.
(2) High frequency measurement causes the sensor to heat up, the interval must be greater than 1 second to keep self-heating below 0.1°C.
(3) Library returns 255 if a communication error occurs, calibration coefficient is off or CRC doesn’t match (for AHT2x only).

About

This is an Arduino library for Aosong ASAIR AHT1x, AHT2x Digital Humidity & Temperature Sensor

Источник

Датчик температуры и влажности AHT10/AHT15/AHT20/AHT25

Пять лет сенсоры HTU21D/SHT21/Si7021 были королями Arduino среди бюджетных термометров/гирометров, но всему приходит конец. Китайцам удалось сделать за $1.3 и не хуже.

Сенсор AHT10 общается по I²C шине, имеет ДВА! адреса и заводскую калибровку. Если верить тестам от Oleksandr Liutyi новый король даже немножко выигрывает по кучности результатов.

Вот так AHT10 выглядит под крышкой

Схема один в один как у старичка. Внимание: на плате установлен LDO XC6206-3.3 с максимальным входным напряжением Vin 80% может привести к временному дрейфу относительной влажности на + 3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации.

Официального datasheet на английском нет. В кустарном переводе куча неясностей. Но тем не менее мне удалось кое-что разобрать и написать библиотеку.

UDP: Если во время чтения на I²C шине возникает проблема, то библиотека вместо температуры и влажности выдаёт 255/AHT10_ERROR, как бы намекая вам о случившемся.

UDP2: Тема Oleksandr Liutyi на официальном форуме Arduno.

UDP3: Вроде написал кучу примеров. Подробно все закоментировал с объяснениями, но народ не догоняет. Для тех кто на бронепоезде еще раз. Каждый раз, когда вызывается myAHT10.readTemperature() или myAHT10.readHumidity(), библиотека читает по 6 байт (всего 12 байтов). Это много и не эффективно. AHT10 измеряет температуру и влажность одновременно. Это означает, что вся информация о T и RH уже присутствует в первых 6 байтах. Зачем гонять туже инфу по I²C шине второй раз! Для этого делаем так:

Serial.print(myAHT10.readHumidity(AHT10_ USE_READ_DATA)); //use same 6 bytes

UDP4: Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 8 секунд. Конечно, сенсор может и быстрее, но полученным значениям я бы верить не стал.

UDP5: Библиотека подросла до вересии 1.1.0. Исправлен баг и добавлена поддержка AHT20.

UDP6: Стали появляться плностью кремнивые AHT21B за цену AHT15 ($ 2.2). У них в наличии встроенный в чип стаб, позволяющий питать сенсор в широких пределах (+2.2v..+5.5v) и контрольная сумма/CRC. Недостаток — стаб жрет. Потребление 0.25uA..980uA против 0.25uA..320uA у AHT10. Сенсор быстро нагревается даже от лёгкого прикосновения руки и потом очень медленно остывает (около 2-х минут с 28C до 20C).

UDP7: Толи мне бракованный AHT21B попался, толи это фича такая, но мой экземпляр занижает влажность на 10% RH. Все показывают 45%..50%, а AHT21B выдает 35%. Вообщем, оказалось не казалось — перый плностью кремнивые AHT21B у Aosong оказался шляпой. Вот тесты уважаемого Liuty. По сравнению с эталонным SHT85 около +10% RH. Пока AHT10 лидер по цене/качество.

Источник

Датчики температуры и влажности для Arduino

Сейчас на небезызвестной торговой площадке китайских друзей имеется довольно много моделей датчиков для измерения температуры и влажности воздуха. В этой статье я попытаюсь сравнить характеристики популярных датчиков, дабы можно было проще определить, какой датчик выбрать для той или иной поделки. В статье рассмотрены только цифровые датчики, NTC-датчики (терморезисторы) здесь не описаны. Все приведенные здесь данные относятся к применению в обычных атмосферных условиях, то есть в метеостанциях, устройствах управления микроклиматом, вентиляцией, теплицами и т.д. Задачи сравнивать и исследовать датчики в специальных газовых смесях здесь не ставилось. Приведенные здесь технические характеристики приборов, по возможности, взяты из официальных datasheet-ов. Отзывы и нюансы использования найдены на форумах и в статьях, список которых Вы сможете найти в конце сего опуса, а так же из личного опыта использования. Статья в первую очередь ориентирована на любителей, а не профессионалов.

Основные характеристики

В таблице ниже приведены лишь основные характеристики, более подробно каждый датчик будет рассмотрен ниже. Таблица служит лишь для более быстрого сравнительного анализа возможностей и допустимых диапазонов измерения. Для быстрого перехода к описанию нужного датчика можно кликать по названию датчика в таблице.

Пояснения к таблице:

  • Пожалуйста, не путайте шаг измерения и погрешность измерения. Это разные характеристики. Шаг измерения зависит от разрядности АЦП датчика и показывает, на какую минимальную величину может изменяться выходное значение. Погрешность – отклонение измеренного значения величины от её истинного (действительного) значения. Погрешность измерения является характеристикой точности измерения, поэтому в таблице так и указано – точность (так как слово короче).
  • Многие датчики умеют программно изменить разрядность внутреннего АЦП, а следовательно изменять шаг измерения. В этом случае в таблице указан минимально возможный шаг измерения. Но за всё нужно платить – обычно он самый длительный по времени.
  • Некоторые датчики имеют встроенный нагреватель для удаления конденсата с сенсора после длительного пребывания в условиях повышенной влажности. Такие модули выделены красным цветом в столбце “Измерение влажности”.
  • Практически у всех датчиков погрешность измерения растет к краям диапазона. Поэтому в таблице она может быть указана как “±0.5

1.0”, то есть “±в середине диапазона

на краях диапазона”. Для более детальной информации смотрите графики погрешности, они обычно приведены в datasheet-ах. Ссылки на источники информации приведены в описании, но со временем они могут перестать работать.

  • Если датчик измеряет одновременно температуру и влажность, и при этом допустимый диапазон температур, при которых еще работает измерение влажности, меньше, чем диапазон измерения собственно температуры, то в таблице указан диапазон, при котором работают оба сегмента. Например: диапазон измерения температуры в datasheet-e указан как “от -40° до +125°С”, но при этом измерение влажности возможно лишь при “от -20° до +70°С”, то в таблице будет указан более узкий диапазон и помечен символом *. Сделано это для того, чтобы не загромождать таблицу. Смотрите подробное описание для получения более подробных сведений.
  • Многие датчики склонны к саморазогреву. То есть их показания температуры будут расти, если опрашивать их слишком часто. Там, где мне удалось найти такую информацию, я указал это в описании датчика. В любом случае в своих проектах я стараюсь не опрашивать датчик чаще чем один за в 20-30 секунд, обычно этого достаточно. Если Вам необходимы показания чаще, потребуется более тщательный выбор датчика.
  • Большинство приведенных здесь датчиков представлены не сами по себе, а уже в виде распаянных модулей. Некоторые из них могут иметь на борту стабилизатор и конверторы логических уровней. В этом случае в таблице указан диапазон питающих напряжений с учетом стабилизатора и помечен символом *.
  • Цена указана только справочно – это минимальная цена с первой страницы выдачи Aliexpress при поиске по названию датчика на момент написания статьи. Цена может быть не точной, и тем более, измениться со временем.
  • 0,3 $

    0,7 $

    0,7 $

    2,2 $

    2,5 $

    1,4 $

    0,8 $

    1,6 $

    7.4$

    1,5 $

    3,1 $

    1,2 $

    1,2 $

    1,8 $

    1,6 $

    1,8 $

    10 $

    2 $

    2,8 $

    В конце данной статьи Вы можете найти небольшое сравнение датчиков, выполненное мной на тестовом проекте.

    Интерфейсы подключения (шины)

    Прежде чем перейти к подробному рассмотрению собственно датчиков, стоит определиться со способами их подключения к микроконтроллеру. Я не буду вдаваться здесь в технические подробности и протоколы, в интернете масса информации по этом поводу, в том числе и в datasheet-ах. Итак, если кратко, существуют следующие варианты подключения (для рассмотренных датчиков):

    1WIRE ( 1-Wire, OneWire )

    1WIRE – протокол передачи данных в обе стороны по одному проводу. Разработан фирмой Dallas Semiconductor (сейчас Maxim Integrated) в далёких 90-х, но активно используется и сейчас. На шине должно быть одно master-устройство (Ваш микроконтроллер) и одно или несколько адресуемых slave-устройств. Для подключения датчика к контроллеру потребуется свободный GPIO вывод, но на один вывод можно подключить несколько датчиков с разными адресами. Адреса у разных экземпляров датчиков различаются, поэтому их можно подключить много. По некоторым данным, длина провода при нормальном питании (то есть трехпроводном включении) может достигать 100 м, однако лично я не проверял. На трехметровом кабеле датчики работают вполне стабильно.

    A1W ( Aosong 1-Wire )

    Однопроводная шина Aosong разработана компанией Aosong Electronics Co., она отличается от однопроводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas / Maxim. Управление шиной A1W происходит «прижиманием к земле» (подачей логического «0») и «отпусканием» шины, тогда в шине появляется логическая «1» через подтягивающий резистор. Соответственно на этой шине может быть только один датчик, то есть для подключения каждого отдельного датчика потребуется свой отдельный GPIO. Зато длина кабеля датчика при отсутствии помех может достигать нескольких десятков метров. При этом «подтягивающий» резистор лучше располагать не около контроллера, а на стороне датчика. А заодно около самого датчика и помехогасящий конденсатор 100нФ на выводы питания не помешает – если на этой шине датчик из-за помехи “вываливается в ошибку”, то вернуть его в работу можно только кратковременным сбросом по питанию, перезагрузка MCU не помогает.

    I2C ( Inter-Integrated Circuit )

    Последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. Разработана фирмой Philips Semiconductors в начале 1980-х как простая 8-битная шина внутренней связи для создания управляющей электроники. Поэтому физическая “дальность” такой шины не превышает нескольких метров. Зато при сбое датчика из-за помех, он, как правило самостоятельно возвращается в работу через некоторое время (в отличие от Aosong 1-Wire). Самый распространенный интерфейс у производителей сенсоров. Шина использует две двунаправленные линии связи: SDA – (DAta) “данные” и SCL (CLock) – “тактовый сигнал”. Для различных плат MCU обычно используются выводы, используемые в таблице (источник: enjoyneering):

    Датчик Фото Шина Питание Измерение
    температуры
    Измерение
    влажности
    Измерение
    давления
    Цена
    Dallas Semiconductor / Maxim Integrated
    DS18B20 1WIRE 3.0-5.5V
    1.0-1.5mA
    от -55° до +125°С
    c шагом до 0.0625°С
    точность ±0,5

    2.0°С

    отсутствует отсутствует
    Aosong Electronics Co.,Ltd / ASAIR
    DHT11 A1W 3.0-5.5V
    0.2-1.0mA
    от 0° до +50°С
    c шагом 1.0°С
    точность ±2.0°С
    от 20 %RH до 90 %RH
    c шагом 1.0 %RH
    точность ±5.0 %RH
    отсутствует
    Mw33 A1W 3.3-5.5V от -20° до +60°С
    c шагом 0.1°С
    точность ±2.0°С
    от 5 %RH до 95 %RH
    c шагом 0.1 %RH
    точность ±5.0 %RH
    отсутствует
    DHT21 AM2301 A1W 3.0-5.5V
    0.05-2.1mA
    от -40° до +80°С
    c шагом 0.1°С
    точность ±0.5

    1.0°С

    от 0 %RH до 99.9 %RH
    c шагом 0.1 %RH
    точность ±3.0

    5.0 %RH

    отсутствует
    DHT22 AM2302 A1W 3.0-5.5V
    0.05-1.5mA
    от -40° до +80°С
    c шагом 0.1°С
    точность ±0.5

    1.0°С

    от 0 %RH до 99.9 %RH
    c шагом 0.1 %RH
    точность ±2.0

    5.0 %RH

    отсутствует
    AM2320 AM2321 A1W, I2C 0x5С 3.1-5.5V
    0.01-1.0mA
    от -40° до +80°С
    c шагом 0.1°С
    точность ±0.2

    0.5°С

    от 0 %RH до 99.9 %RH
    c шагом 0.1 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    AHT10 I2C 0x38 0x39 1.8-6.0V *
    0.25-23µA
    от -40° до +85°С
    c шагом 0.01°С
    точность ±0.3

    0.8°С

    от 0 %RH до 100 %RH *
    c шагом 0.024 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    AHT15 I2C 0x38 1.8-3.6V
    0.25-23µA
    от -40° до +85°С
    c шагом 0.01°С
    точность ±0.3

    0.8°С

    от 0 %RH до 100 %RH *
    c шагом 0.024 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    AHT20 I2C 0x38 2.0-5.5V
    0.25-23µA
    от -40° до +85°С
    c шагом 0.01°С
    точность ±0.3

    1.0°С

    от 0 %RH до 100 %RH *
    c шагом 0.024 %RH
    точность ±2.0

    3.0 %RH

    отсутствует ?
    Bosch Sensortec
    BMP180 I2C 0x77 1.8-5.5V *
    0.1µA-1mA
    от -40° до +85°С
    c шагом 0.1°С
    точность ±0.5

    2.0°С

    отсутствует от 300 до 1100 hPa
    c шагом 0.01 hPa
    точность ±1.0

    0.3$

    BMP280 SPI, I2C 0x76 1.8-5.5V *
    0.1µA-1mA
    от -40° до +85°С
    c шагом 0.01°С
    точность ±0.5

    1.0°С

    отсутствует от 300 до 1100 hPa
    c шагом 0.0016 hPa
    точность ±1.0

    0.4$

    BME280 SPI, I2C 0x76 1.8-5.5V *
    0.1µA-1mA
    от -40° до +85°С **
    c шагом 0.01°С
    точность ±0.5

    1.5°С

    от 0 %RH до 100 %RH
    c шагом 0.008 %RH
    точность ±3.0 %RH
    от 300 до 1100 hPa
    c шагом 0.0016 hPa
    точность ±1.0

    2.7$

    BME680 SPI, I2C 0x76 1.8-5.5V *
    0.1µA-1mA
    от -40° до +85°С **
    c шагом 0.01°С
    точность ±0.5

    1.0°С

    от 0 %RH до 100 %RH
    c шагом 0.008 %RH
    точность ±3.0 %RH
    от 300 до 1100 hPa
    c шагом 0.0018 hPa
    точность ±0.6 hPa
    Texas Instruments
    HDC1080 I2C 0x40 2.7-5.5V
    0.1-1.3µA
    от -20° до +85°С *
    c шагом 0.01°С
    точность ±0.2

    0.5°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±2.0

    4.0 %RH

    отсутствует
    HDC2080 I2C 0x40 0x41 1.62-3.6V
    0.05-0.5µA
    от -40° до +85°С *
    c шагом 0.01°С
    точность ±0.2

    0.4°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    Measurement Specialties / MEAS
    HTU20D I2C 0x40 1.5-3.6V
    0.02-500µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.3

    0.7°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±3.0

    5.0 %RH

    отсутствует
    HTU21D I2C 0x40 1.5-5.5V *
    0.02-500µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.3

    0.7°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±3.0

    5.0 %RH

    отсутствует
    Silicon Laboratories
    Si7021 I2C 0x40 1.9-5.5V *
    0.06-180µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.3

    0.8°С

    от 0 %RH до 100 %RH
    c шагом 0.025 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    Sensirion
    SHT20 I2C 0x40 2.1-5.5V *
    0.15-300µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.5

    2.5°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±3.0

    5.0 %RH

    отсутствует
    SHT21 I2C 0x40 2.1-5.5V *
    0.15-300µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.3

    0.8°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±2.0

    3.0 %RH

    отсутствует
    SHT25 I2C 0x40 2.1-5.5V *
    0.15-300µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.2

    0.7°С

    от 0 %RH до 100 %RH
    c шагом 0.04 %RH
    точность ±1.8

    3.0 %RH

    отсутствует
    SHT30 I2C 0x44 0x45 2.15-5.5V
    0.15-600µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.2

    0.6°С

    от 0 %RH до 100 %RH
    c шагом 0.01 %RH
    точность ±2.0

    4.0 %RH

    отсутствует
    SHT31 I2C 0x44 0x45 2.15-5.5V
    0.15-600µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.2

    0.5°С

    от 0 %RH до 100 %RH
    c шагом 0.01 %RH
    точность ±2.0 %RH
    отсутствует
    SHT35 I2C 0x44 0x45 2.15-5.5V
    0.15-600µA
    от -40° до +125°С
    c шагом 0.01°С
    точность ±0.1

    0.4°С

    от 0 %RH до 100 %RH
    c шагом 0.01 %RH
    точность ±1.5

    2.0 %RH

    отсутствует
    Плата SDA SCL Питание
    Arduino Uno, Mini, Pro, ATmega168, ATmega328 A4 A5
    Arduino Mega2560 20 21
    Arduino Due, SAM3X8E 20 21 3.3в
    Arduino Leonardo, Micro, ATmega32U4 2 3
    Digistump, Trinket, ATtiny85 PB0 PB2
    Blue Pill, STM32F103xxxx boards PB9/PB7 (1) PB8/PB6 (1) 3.3в / 5в
    ESP8266 ESP-01 GPIO0 (2) GPIO2 (2) 3.3в / 5в
    ESP8266 NodeMCU 1.0, ESP8266 WeMos D1 Mini GPIO4/D2 GPIO5/D1 3.3в
    ESP32 (Arduino framework) GPIO21/D21 (3) GPIO22/D22 (3) 3.3в
    1. Аппаратный I2C Wire, сопоставленный с 1-Wire в stm32duino, см. https://github.com/stm32duino/wiki/wiki/API#i2c
    2. Большинство плат имеют подтягивающий резистор 10 кОм … 12 кОм на GPIO0/D3, GPIO2/D4/LED и подтягивающий резистор на GPIO15/D8 для прошивки и загрузки
    3. Только для Arduino. Для ESP-IDF выводы GPIO могут быть любыми, кроме того, можно использовать одновременно сразу две отдельные программные шины (#0 и #1).

    На одну шину можно “повесить” целую гирлянду датчиков и тем самым можно освободить кучу драгоценных GPIO. Адрес сенсора на шине 7-битный (восьмой бит используется для указания направления передачи данных). Однако проблема в том, что адрес датчика задается производителем и разные датчики часто имеют одинаковый адрес – который изменить либо нельзя, либо с путем танцев бубном (перепаиванием “адресного” резистора на шилде датчика). Поэтому и выходит, что к одному контроллеру больше одного-двух одинаковых датчиков (с одним и тем же адресом) не подключить. Как выход можно использовать датчики разных производителей – у них адреса будут разные и можно использовать их одновременно. Либо использовать различные мультиплексоры.

    Ещё одна существенная проблема данной шины – физическая длина провода. Длина провода ограничена его емкостью – по стандарту емкость шины не должна превышать 400пФ. Отсюда вывод – максимальная длина шины сильно зависит от используемого кабеля. Витая пара не очень хорошо подходит для этой шины, зато плоский телефонный четырехпроводный кабель отлично работает на на длине от 3 до 5 метров. Немного увеличить “дальность” шины можно путем увеличения тока в шине, снизив номиналы подтягивающих резисторов, но осторожно – можно “спалить” ключи в MCU или сенсоре. Обычное значение подтягивающих резисторов – от 4,7к до 10,0к. Если вы используете уже распаянные датчики на минишилдах, то резисторы подтяжки на них уже обычно присутствуют, и дополнительно устанавливать их не требуется. Кроме того, если необходимо к одной шине I2C подключить одновременно несколько датчиков (разумеется, с разными адресами), то в этом случае желательно отпаять резисторы подтяжки линий SDA и SDC с “промежуточных” шилдов датчиков (если они установлены), чтобы не перегрузить по току вывод MCU.

    SPI ( Serial Peripheral Interface )

    Последовательный периферийный интерфейс иногда называемый 4-х проводным интерфейсом, является последовательным синхронным интерфейсом передачи данных. На Arduino – совместимых устройствах используется не часто, ввиду того, что для нее требуется четыре GPIO, а их всегда не хватает (особенно на ESP8266). Лично я не пользуюсь, поэтому описания здесь не будет.

    DALLAS DS18B20

    DS18B20 цифровой термометр с программируемым разрешением от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором. Каждый DS18B20 имеет уникальный 64-битный адрес, который позволяет общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один микропроцессор, чтобы контролировать множество датчиков DS18B20, распределенных по большому участку. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.

    Производитель: Dallas Semiconductor, ныне Maxim Integrated
    Интерфейс: 1-Wire
    Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
    Потребляемый ток: от

    1.0 µA в режиме ожидания до 1

    1.5 mA в режиме измерения и передачи данных
    Диапазон измерения температуры: от -55 до +125 °C
    Шаг измерения температуры (разрешение): 0.5°C (9bit), 0.25°C (10bit), 0.125°C (11bit), 0.0625°C (12bit)
    Погрешность измерения температуры (точность):
    – в диапазоне от -10 до +85 °C : ±0.5°C (см. график)
    – в диапазоне от -30 до +110°C : ±1.0°C
    – в диапазоне от -55 до +125°C : ±2.0°C
    Возможность измерения влажности: отсутствует
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: DallasTemperature
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDS18x20
    Источники информации: Datasheet EN, Datasheet RU

    Кривая погрешности измерения

    Обращение к датчику может быть по его индексу на шине и по его физическому адресу. При использовании адреса, необходимо его как-то предварительно определить. Как это сделать можно узнать из статьи: “поиск адресов датчиков DS18B20s на шине“. Впрочем, если датчик на шине один, вполне можно обойтись и без этого.
    Относительно дешевый, достаточно точный и беспроблемный датчик температуры. Этот датчик легко может использоваться в достаточно агрессивных помещениях – погребах, саунах, в емкостях с водой в герметичном исполнении. Подходит для большинства устройств домашней автоматизации. Может работать в трехпроводном включении (нормальном питании) и двухпроводном (паразитном питании). При использовании в системах управления отоплением и самогонных аппаратах учтите, что на высокой температуре точность несколько падает.

    Схема включения нескольких датчиков при нормальном питании. Вывод GPIO взят случайно

    На Aliexpress можно найти много различных вариантов этого датчика, в том числе на платах и в герметичном исполнении:

    Следует однако учитывать, что не все йогурты одинаково полезны датчики с Aliexpress оригинальные и имеют заявленные характеристики. Не стоит покупаться на слишком низкую цену, в этом случае легко нарваться на подделку, показания которой могут быть далеко не самыми точными.

    DHT11

    DHT11 недорогой цифровой датчик температуры и влажности. В нем используется емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха. Данные выдаются в цифровой форме по шине типа 1-wire, но это не 1-wire! Однопроводная шина Aosong разработана компанией Aosong Electronics Co. она отличается от 1-проводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas. Для преобразования данных внутри датчика используется 8-битный микроконтроллер. Производитель обещает передачу данных на расстояние до 20 метров, что делает его привлекательным выбором для различных приложений. Однако его точность измерений относительно невелика. DHT11 – это не калиброванный датчик, это означает что его показания требуется скорректировать по “образцовому” сенсору.

    Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
    Интерфейс: Aosong 1-Wire
    Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
    Потребляемый ток: от

    1.0 µA в режиме ожидания до 1

    1.5 mA в режиме измерения и передачи данных
    Диапазон измерения температуры: от 0 до +50 °C
    Шаг измерения температуры (разрешение): 1.0°C (8bit)
    Погрешность измерения температуры (точность): ±2.0°C
    Диапазон измерения влажности: от 20 до 90 %RH
    Шаг измерения влажности (разрешение): 1.0%RH (8bit)
    Погрешность измерения влажности (точность): ±5.0%RH
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: DHT Sensor Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
    Источники информации: Datasheet

    Этот датчик можно использовать только в отапливаемых помещениях, из-за его узкого температурного диапазона. Так же не стоит использовать этот датчик и в помещениях с высокой влажностью (погреба, сауны и т.д.), так как после достаточно длительного пребывания (несколько недель и более) в таких условиях конденсатор измерения влажности насыщается влагой и выходит из строя. Измерение температуры при этом продолжает функционировать как обычно, а вот показания влажности будут всегда максимальные (99%).
    По некоторым сведениям, найденным в “этих ваших интернетах”, DHT11 не калибруется производителем на заводе. Это означает, что Вам потребуется скорректировать его данные по “образцовому” сенсору. Учитывая, что точность DHT11 невелика, сделать это несложно.

    Устройство датчика влажности, источник

    Иногда датчик может “зависнуть” (особенно это актуально на длинных соединительных проводах) и библиотека будет возвращать ошибку TIMEOUT. Чтобы вернуть его в рабочее состояние приходится кратковременно отключать питание датчика (можно без перезагрузки микроконтроллера – для этого можно использовать нормально замкнутые контакты реле или ключ на транзисторе). Для предотвращения подобных ситуаций на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера. Поэтому если Вы планируете подключить эти датчики посредством длинных проводов, то имеет смысл купить их уже распаянными на минишилдах, где уже установлены и резистор и конденсатор. Это так же упростит их замену в случае выхода из строя.

    Датчик DHT11 на плате

    Еще один недорогой цифровой датчик температуры и влажности. Китайцы позиционируют его как “улучшенный DHT11”. Диапазон измеряемой температуры стал шире, начинаясь уже от -20°C, шаг измерения стал 0.1, точность не повысилась. Диапазон измеряемой влажности и шаг измерения также стал немного шире. Даташита на него найти не удалось, производитель не известен, возможно тот же Aosong. Используется тот же протокол передачи данных, что и у DHT11.

    Производитель: неизвестен, возможно тот же AOSONG / ASAIR
    Интерфейс: Aosong 1-Wire
    Напряжение питания: от +3.3 В до +5.5 В.
    Потребляемый ток: ?
    Диапазон измерения температуры: от -20 до +60 °C
    Шаг измерения температуры (разрешение): 0.1°C
    Погрешность измерения температуры (точность): ±2.0°C
    Диапазон измерения влажности: от 5 до 95 %RH (предположительно)
    Шаг измерения влажности (разрешение): 0.1%RH
    Погрешность измерения влажности (точность): ±5.0%RH (предположительно)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: DHT Sensor Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
    Источники информации: AliExpress

    У меня этот датчик прекрасно отозвался на той же библиотеке, что и все DHT. Опытным путем выяснил, что ему больше подходит режим DHT12 (чем DHT11), потому что шаг измерения у него оказалась не единица, а 0.1. Датчик показал себя гораздо более точным при измерении влажности, чем DHT11, и чуть лучше при измерении температуры. Так что могу смело рекомендовать его в качестве дешевого аналога. Отлично подойдет, например, для оценки температуры в емкостном измерителе влажности почвы (так как его данные требуется скорректировать в зависимости от температуры). Про выносливость в тяжелых условиях ничего не известно, так как лично я использовал его только в тестовом проекте. Судя по отклонениям показаний от других датчиков, этот датчик, как и DHT11, так же не калибруется заводом-изготовителем, Вам потребуется скорректировать его данные самостоятельно.

    DHT21 / AM2301

    DHT21, он же Гога, он же Жора, он же AM2301 – это более продвинутый вариант датчика от Aosong. В нем так же используется полимерный емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха. Данные выдаются в цифровой форме по шине типа 1-wire, но это не 1-wire! Однопроводная шина Aosong разработана компанией Aosong Electronics Co. она отличается от 1-проводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas. Производитель обещает передачу данных на расстояние до 20 метров./p>

    Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
    Интерфейс: Aosong 1-Wire
    Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
    Потребляемый ток: от

    40 µA в режиме ожидания до 1.5

    2.1 mA в режиме измерения и передачи данных
    Диапазон измерения температуры: от -40 до +80 °C
    Шаг измерения температуры (разрешение): 0.1°C
    Погрешность измерения температуры (точность): ±0.5°C (max ±1.0°C)
    Диапазон измерения влажности: от 0 до 99.9 %RH
    Шаг измерения влажности (разрешение): 0.1%RH
    Погрешность измерения влажности (точность): ±3.0%RH (max ±5.0%RH)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: DHT Sensor Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
    Источники информации: Datasheet EN

    Датчик выпускается в черном корпусе с выводами – проводами.

    Не стоит использовать этот датчик и в помещениях с высокой влажностью (погреба, сауны и т.д.), так как после достаточно длительного пребывания (несколько недель и более) в таких условиях конденсатор измерения влажности насыщается влагой и выходит из строя. Измерение температуры при этом продолжает функционировать как обычно, а вот показания влажности будут всегда максимальные.

    Устройство датчика влажности, источник

    Иногда датчик может “зависнуть” (особенно это актуально на длинных соединительных проводах) и библиотека будет возвращать ошибку TIMEOUT. Чтобы вернуть его в рабочее состояние приходится кратковременно отключать питание датчика (можно без перезагрузки микроконтроллера – для этого можно использовать нормально замкнутые контакты реле или ключ на транзисторе). Для предотвращения подобных ситуаций на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера.

    DHT22 / AM2302

    DHT22, он же Гога, он же Жора, он же AM2302 – это еще один вариант датчика от Aosong. Немного точнее, чем DHT21. Принцип работы, разумеется не изменился – в нем используется все тот же полимерный емкостной датчик влажности. Данные выдаются в цифровой форме по шине типа 1-wire, но это не 1-wire! Однопроводная шина Aosong разработана компанией Aosong Electronics Co. она отличается от 1-проводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas. Производитель обещает передачу данных на расстояние до 20 метров.

    Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
    Интерфейс: Aosong 1-Wire
    Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
    Потребляемый ток: от

    40 µA в режиме ожидания до 1

    1.5 mA в режиме измерения и передачи данных
    Диапазон измерения температуры: от -40 до +80 °C
    Шаг измерения температуры (разрешение): 0.1°C
    Погрешность измерения температуры (точность): ±0.5°C (max ±1.0°C)
    Диапазон измерения влажности: от 0 до 99.9 %RH (этот датчик не выдает значение 100%, максимум 99.9%)
    Шаг измерения влажности (разрешение): 0.1%RH
    Погрешность измерения влажности (точность): ±2.0%RH (max ±5.0%RH)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: DHT Sensor Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
    Источники информации: Datasheet EN

    Кривые погрешности измерения

    Датчик выпускается в двух вариантах. Точнее в одном, во втором случае тот же самый датчик просто упаковывается еще в один защитный корпус, более удобный для монтажа, но такой вариант и стоит несколько дороже. Второй вариант не предусматривает установку конденсатора и подтягивающего резистора, их нужно установить отдельно.

    Не стоит использовать этот датчик и в помещениях с высокой влажностью (погреба, сауны и т.д.), так как после достаточно длительного пребывания (несколько недель и более) в таких условиях конденсатор измерения влажности насыщается влагой и выходит из строя. Измерение температуры при этом продолжает функционировать как обычно, а вот показания влажности будут всегда максимальные. Такой датчик постоянно работает у меня в погребе и зимой при повышении влажности гарантированно выходит из строя (я имею в виду измерение влажности). Но зимой показания влажности не так уж и важны; а летом для управления вентиляцией приходится менять. Впрочем, судя по отзывам на форумах, этот датчик и в нормальных условиях служит относительно недолго.

    Устройство датчика влажности, источник

    DHT22 (вероятно и другие датчики этой серии) склонен изредка (иногда один-два раза в месяц, иногда реже, иногда чаще) уходить в глухую “несознанку”, при этом датчик подтягивает линию данных к земле и наглухо зависает, никак не реагируя на внешние сигналы. Вернуть его в рабочее состояние можно только кратковременным отключением питания датчика, сброс MCU в этом случае никак не поможет. Поэтому сразу стоит предусмотреть в вашей конструкции кнопку или реле для сброса датчика без перезагрузки MCU. Для предотвращения подобных ситуаций на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера (но, увы, это не всегда помогает). Поэтому имеет смысл купить их уже распаянными на минишилдах, где уже установлены и резистор и конденсатор. Это так же упростит их замену в случае выхода из строя. Но будьте внимательны – не все шилды содержат указанные компоненты. При длине кабеля свыше 10 метров китайцы рекомендуют снизить сопротивление резистора подтяжки вывода данных до 1 кОм при 5В. Если требуется подключение датчика длинным кабелем, и Вы используете готовый шилд с резистором, можно просто установить дополнительный резистор “со стороны контроллера” с учетом уже установленного.

    Датчик DHT22 на плате

    AM2320 & AM2321

    AM2320 и AM2321 – современный вариант DHT22 от Aosong. AM2321 отличается от AM2320 только другим корпусом и расположением выводов (насколько я понял). Принцип работы, разумеется, не изменился – в них используется все тот же полимерный конденсатор. Зато данные теперь с них можно получать в двух режимах – по шине I2C или Aosong 1-Wire. В случае использования шины I2C можно освободить один вывод на микроконтроллере (так как выводы под I2C обычно в любом случае используются), но можно подключить только один датчик, так как адрес датчика один и тот же. В случае использования шины Aosong 1-Wire можно подключить несколько датчиков, но каждому необходимо выделить свой вывод GPIO. В последнем случае на датчике вывод SCL необходимо соединить с выводом GND. Диапазоны измерений не отличаются от DHT22, зато точность измерения стала несколько выше. Кроме того, новый датчик заметно дешевле, что так же является его несомненным плюсом. Кроме этого, датчик стал немного экономичнее в плане потребляемого тока. В итоге более нет смысла заказывать AM2302. Оптимальный выбор для использования с шиной Aosong 1-Wire. На мой взгляд AM2320 – это чуть лучший AM2302 с наспех приделанной шиной I2C (почему наспех – поясню чуть ниже).

    Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
    Интерфейс: Aosong 1-Wire или I2C, адрес на шине: 0x5С
    Напряжение питания: от +3.1 В до +5.5 В
    Потребляемый ток: от

    10 µA в режиме ожидания до 950 µA (500 µA для AM2321) в режиме измерения и передачи данных
    Диапазон измерения температуры: от -40 до +80 °C
    Шаг измерения температуры (разрешение): 0.1°C (16bit)
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.5°C)
    Диапазон измерения влажности: от 0 до 99.9 %RH
    Шаг измерения влажности (разрешение): 0.1%RH
    Погрешность измерения влажности (точность): ±2.0%RH (max ±3.0%RH)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: AM2320
    Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
    Источники информации: AM2320 Datasheet EN, AM2321 Datasheet EN, Подключение к Arduino

    Кривые погрешности измерения

    Вообще датчик оставляет устойчивое ощущение сделанного наспех китайскими студентами троечниками в качестве дипломной работы. Во-первых datasheet содержит просто огромное количество ошибок, которые никто не собирается исправлять. Ну например: в datasheet-е указан адрес датчика 0xB8, а во всех библиотеках используется адрес 0x5C. Ошибка? И да и нет. Дело в том, что на шине I2C адрес устройства не может быть больше 0x7F. Адрес 0xB8 это сдвинутый на 1 бит влево адрес 0x5C, то есть адрес плюс бит записи в датчик. Для чтения адрес будет уже другой – 0xB9. Во-вторых, если подключать датчик по I2C, то почти все дополнительные регистры (кроме температуры и влажности) не выдают никакой информации, например запрос статуса, модели, версии и серийного номера вместо ожидаемых данных вернет только нули. В третьих процесс считывания данных с датчика по шине I2C реализован, хм, весьма кривовато. Для этого датчика стандартная функция запроса данных по шине, с которой прекрасно работают все I2C датчики других производителей, оказывается не подходит! Китайцы выпендрились и требуют двойной команды записи команды через паузу, пришлось писать другую реализацию. Дорабатывать датчик никто, видимо, не собирается.

    Однако можно использовать этот датчик вместо AM2302 по однопроводному интерфейсу. Для предотвращения зависания на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера. Поэтому если Вы планируете подключить эти датчики посредством длинных проводов, то имеет смысл купить их уже распаянными на минишилдах, где уже установлены и резистор и конденсатор. Это так же упростит их замену в случае выхода из строя. Но будьте внимательны – не все шилды содержат указанные компоненты.

    Датчик AM2320 на плате

    AHT10

    Новый (ну как новый, относительно… datasheet от 2018 года) сенсор от ASAIR / AOSONG для измерения температуры и влажности. Младшая модель из серии датчиков AHT10/AHT15/AHT2x. Судя по результатам вскрытия, проведенного уважаемым elchupanibrei, принцип работы датчика влажности не сильно отличается от серии DHTxx/AMxxxx – в нем используется все тот же конденсатор. Это же подтверждает и datasheet: “AHT10 оснащен недавно разработанными улучшенным полупроводниковым MEMS емкостным датчиком влажности и стандартным датчиком температуры на кристалле. Его производительность была значительно улучшена по сравнению с уровнем надежности датчиков предыдущего поколения, в том числе чтобы сделать их более устойчивыми в суровых условиях”. Сенсор работает с шиной I2C и имеет два адреса, которые можно переключать с помощью перемычке на плате. Таким образом можно подключить к одной шине сразу два датчика одновременно, но это “в теории”.

    Производитель: ASAIR (он же AOSONG)
    Интерфейс: I2C, адрес на шине: 0x38 или 0x39 (изменить можно с помощью перемычки на плате)
    Напряжение питания: от +1.8 до +6.0 В
    Потребляемый ток: от

    0.25 µA в режиме ожидания до 23 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max

    ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH (рекомендуемый диапазон от 0 до 80 %RH)
    Шаг измерения влажности (разрешение): 0.024 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: enjoyneering AHTxx Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
    Источники информации: Datasheet EN, Обзор от elchupanibrei

    Погрешности измерения AHT10

    Из недостатков в первую очередь стоит отметить отсутствие CRC (контрольной суммы) при передаче данных по шине. Из-за этого никак невозможно определить, правильные ли данные получены с датчика при помехах / проблемах на шине. В следствие чего показания температуры могут скакать аки тыгдымские кони – от +20 до -50 и до +150 за несколько соседних измерений. Можно только ориентироваться на последнее “правильное” значение – если новое значение отклоняется от последнего больше чем на 5 градусов, считаем его “плохим”. Но это далеко не оптимальный метод.

    Как я уже отметил выше, сенсор AHT10 поддерживает два адреса и можно подключить сразу два сенсора на одну шину (для этого придется перепаять адресный резистор на одном из модулей). Но на практике оказывается, что такое включение работает крайне нестабильно – сенсоры могут несколько часов проработать совершенно нормально, а затем на несколько часов начать выдавать совершенно кошмарные данные (зимой на улице +49.55 °C например). Либо либо вообще перестают отвечать (оба или поодиночке). Еще было замечено, что на адресе 0x39 сенсор работает гораздо хуже, даже один или в паре с модулями других производителей. Производитель, очевидно, знает об этом, поэтому в новых модулях (AHT20, АНТ21 и т.д.) поддержку второго адреса вообще убрали.

    AHT10 обладают невысокой “повторяемостью” выходных данных. Данные о температуре у меня совпадают на нескольких разных датчиках, раcположенных в одной и той же точке, но купленных в разное время. А вот показания о влажности при этом могут значительно различаться – аж до 15%. Приходится корректировать данные по более точным сенсорам, например SHT31. Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 8 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений. Кроме того, следует учитывать, что этот сенсор имеет некоторую инерционность по сравнению с STU21D / Si7021, то есть гораздо медленнее реагирует на быстрые изменения влажности и температуры. Это может быть и хорошо (своеобразный встроенный фильтр от резких “скачков”), и плохо – когда требуется быстрая реакция на изменения. Вывод: “дешево и сердито”. Можно брать в условиях ограниченного бюджета, но не без недостатков. Когда требуется точность – лучше рассмотреть другие варианты.

    На AliExpress датчик в основном продается уже распаянным на плате. На плате модуля установлен стабилизатор напряжения питания и конвертер уровней для шины I2C, поэтому модуль можно смело подключать как к 5-, так и к 3,3-х вольтовой логике.

    AHT15

    Средняя модель в новой линейке сенсоров от ASAIR / AOSONG для измерения температуры и влажности. Он имеет те же самые характеристики, что и AHT10, но значительно отличается устройством корпуса. Во-первых, датчик поставляется на заводской плате с разъемом, которая призвана уменьшить паразитный нагрев сенсоров от близкорасположенных элементов. Во-вторых AHT15 имеет защитную водонепроницаемую и пыленепроницаемую мембрану из ПТФЭ, которая не влияет на время отклика при измерении относительной влажности. Это позволяет использовать датчик в суровых условиях окружающей среды (например, к контакте с брызгами воды и сильное запыленность), обеспечивая при этом максимальную точность, что делает AHT15 лучшим выбором в самых сложных условиях эксплуатации.

    Производитель: ASAIR (он же AOSONG)
    Интерфейс: I2C, адрес на шине: 0x38
    Напряжение питания: от +1.8 до +3.6 В
    Потребляемый ток: от

    0.25 µA в режиме ожидания до 23 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max

    ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH (рекомендуемый диапазон от 0 до 80 %RH)
    Шаг измерения влажности (разрешение): 0.024 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: защитный фильтр от пыли и капель
    Библиотека для Arduino: enjoyneering AHTxx Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
    Источники информации: Datasheet EN, Обзор от elchupanibrei

    Погрешности измерения AHT15

    Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 8 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений.

    Плата с датчиком AHT15 не имеет встроенного стабилизатора, поэтому датчик напрямую можно подключать только к 3.3-вольтовым контроллерам. К недостаткам датчика можно отнести высокую цену – стоит он почти в два раза дороже AHT10.

    AHT20

    Старшая модель в новой линейке сенсоров от ASAIR / AOSONG для измерения температуры и влажности. По точности показаний AHT20 не намного лучше AHT10. Из отличий поддержка CRC8 при передаче данных, более широкий диапазон питающих напряжений (без стабилизатора) и немного худшая погрешность измерения температуры на краях диапазона. Даташит можно скачать на домашней странице продукта, ссылка есть ниже. Это не “последняя” версия, сейчас можно найти уже и AHT21.

    Производитель: ASAIR (он же AOSONG)
    Интерфейс: I2C, адрес на шине: 0x38
    Напряжение питания: от +2.0 до +5.5 В
    Потребляемый ток: от

    0.25 µA в режиме ожидания до 320 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max

    ±1.0°C)
    Диапазон измерения влажности: от 0 до 100 %RH (рекомендуемый диапазон от 0 до 80 %RH)
    Шаг измерения влажности (разрешение): 0.024 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Библиотека для Arduino: enjoyneering AHTxx Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
    Источники информации: Homepage EN, Обзор от elchupanibrei

    Погрешности измерения AHT20

    Длительное воздействие на сенсор в течение 200 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 5 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений.

    На AliExpress датчик сейчас в основном продается только на платах в паре с BMP280, хотя фотографии в архивах поисковых систем свидетельствуют о том, что существуют платы и в одиночном исполнении.

    Сенсор AHT20 + BMP280

    BMP180

    BMP180 – дешёвый сенсор от Bosch Sensortec. Этот датчик позволяет измерить атмосферное давление и температуру окружающей среды. Используют данный датчик для определения высоты (чем выше, тем меньше давление), а так же в самодельных метеостанциях. Собственно датчик (металлический прямоугольный модуль с отверстием) включает в себя: пьезо-резистивный датчик (для определения атмосферного давления), термодатчик (для определения температуры), АЦП (аналого-цифровой преобразователь), EEPROM (энергонезависимая электрически стираемая перепрограммируемая память), RAM (энергозависимая память, другими словами ОЗУ), микроконтроллер. Не допускайте попадания на датчик влаги и прямых солнечных лучей.

    Производитель: Bosch Sensortec
    Интерфейс: I2C, адрес на шине: 0x77
    Напряжение питания: без стабилизатора от +1.8 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
    Потребляемый ток: от

    0.1 µA в режиме ожидания до 32 µA в режиме измерения, в пике может достигать 1 mA
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.1°C
    Погрешность измерения температуры (точность):
    – при 25°C: ±0.5°C (max ±1.5°C)
    – от 0 до +65°C: ±1.0°C (max ±2.0°C)
    Возможность измерения влажности: отсутствует
    Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
    Шаг измерения давления (разрешение): 0.01 hPa
    Погрешность измерения давления (точность):
    – от 0 до +65°C: ±1.0 hPa (max -4.0 hPa/+2.0 hPa)
    – от -20 до 0°C: ±1.0 hPa (max -6.0 hPa/+4.5 hPa)
    Библиотека для Arduino: BMP180 Breakout Arduino Library
    Источники информации: Datasheet EN, Datasheet RU, Обзор и подключение к Arduino

    Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать. Как правило, на плате дополнительно распаян стабилизатор с 5.5 В до 3.3В, так как почти у всех плат Arduino напряжение питания составляет 5В. Но существует шилды, на которых есть отдельный вывод 3.3В, такие платы подойдут для ESPx. BMP180 без стабилизатора лично я не встречал, хотя они и могут существовать в природе.

    Разновидности плат с BMP180

    На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. Как это сделать, наглядно это продемонстрировано в статье: обзор и подключение к Arduino

    BMP280

    Модуль BMP280 был разработан фирмой Bosch Sensortec как более технологичная модель своего предшественника BMP180. Датчик представляет собой высокоточный цифровой измеритель атмосферного давления и температуры окружающей среды. Его малые размеры, низкое энергопотребление и высокая измерительная способность позволили завоевать популярность среди множества разработчиков Arduino-проектов. Данная модификация, в отличие от своего младшего брата, предоставляет пользователю 3 режима работы:

    • SLEEP – режим максимально пониженного энергопотребления;
    • NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
    • FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.

    Производитель: Bosch Sensortec
    Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77 (изменить можно с помощью перемычки на плате)
    Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
    Потребляемый ток: от

    0.1 µA в режиме ожидания до 720 µA в режиме измерения, в пике может достигать 1.12 mA
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность):
    – при 25°C: ±0.5°C
    – от 0 до +65°C: ±1.0°C
    Возможность измерения влажности: отсутствует
    Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
    Шаг измерения давления (разрешение): 0.0016 hPa
    Погрешность измерения давления (точность):
    – от 0 до +65°C: ±1.0 hPa
    – от -20 до 0°C: ±1.7 hPa
    Особенности: автономная работа
    Библиотека для Arduino: Adafruit BMP280 Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reBMP280
    Источники информации: Datasheet EN, Обзор и подключение к Arduino

    По некоторым отзывам, при частом измерении возможен небольшой внутренний нагрев сенсора на 1-2 градуса. Лияно я пока подтвердить это не могу. Датчик имеет режим периодического автоматического изменения с заданным интервалом (в этом случае по запросу MCU сразу же выдаются последние измеренные данные), при этом саморазогрева я не заметил. Датчик поддерживает встроенную фильтрацию и усреднение измеренных данных (x0, x2, x4…x16).

    Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать. На некоторых платах дополнительно установлен стабилизатор 3.3 В для возможности подключения датчика к Arduino, которые имеют напряжение питания 5.0 В. Если же Вы планируете использовать данный датчик с ESP8266 или ESP32, то Вам следует использовать версию без стабилизатора. Интерфейс SPI доступен только на плате 3.3В. На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. Как это сделать, наглядно это продемонстрировано в статье: обзор и подключение к Arduino

    Разновидности плат с BMP280

    Не допускайте попадания на датчик влаги и прямых солнечных лучей.

    BME280

    Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию. Увы, но и стоит он заметно дороже BMP280. Этот датчик (так же как и BMP280) имеет 3 режима работы:

    • SLEEP – режим максимально пониженного энергопотребления, измерение не производится;
    • NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
    • FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.

    Производитель: Bosch Sensortec
    Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77 (изменить можно с помощью перемычки на плате)
    Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
    Потребляемый ток: от

    0.1 µA в режиме ожидания до 714 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность):
    – при 25°C: ±0.5°C
    – от 0 до +65°C: ±1.0°C
    – от -20 до +0°C: ±1.25°C
    – от -40 до -20°C: ±1.5°C
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.008 %RH
    Погрешность измерения влажности (точность): ±3.0 %RH
    Рабочий диапазон измерения влажности: смотри график ниже
    Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
    Шаг измерения давления (разрешение): 0.0016 hPa
    Погрешность измерения давления (точность):
    – от 0 до +65°C: ±1.0 hPa
    – от -20 до 0°C: ±1.7 hPa
    Особенности: автономная работа
    Библиотека для Arduino: Adafruit BME280 Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reBME280
    Источники информации: Datasheet EN, Обзор и подключение к Arduino

    Рабочий диапазон измерения влажности

    Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать. На некоторых платах дополнительно установлен стабилизатор 3.3 В для возможности подключения датчика к Arduino, которые имеют напряжение питания 5.0 В. Если же Вы планируете использовать данный датчик с ESP8266 или ESP32, то Вам следует использовать версию без стабилизатора. Интерфейс SPI доступен только на плате 3.3В. На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. Как это сделать, наглядно это продемонстрировано в статье: обзор и подключение к Arduino

    BME280 (как и BMP280) имеет довольно интересные особенности, отличающие его от датчиков других производителей. Во-первых, данные с датчика приходят “в сыром виде”, то есть ровно так, как были измерены и оцифрованы. Пересчёт и корректировка измеренных значений по данным заводской калибровки должна производится на стороне микроконтроллера по специальным формулам. Для этого предварительно нужно “скачать” с датчика калибровочные коэффициенты. Сделано это, видимо, для снижения нагрузки на процессор датчика, а следовательно и снижение потребления энергии. Но не спешите унывать – в библиотеках для Arduino уже встроены необходимые функции, либо можно воспользоваться официальным API от Bosch. Во-вторых в этом датчике есть встроенная функция фильтрации данных, с помощью которой можно “гасить” резкие перепады значений, которые часто могут быть ошибочными. Ну в третьих – датчик имеет очень удобный режим NORMAL, когда измерения производятся самим датчиком с заданной периодичностью, а по запросу микроконтроллера считываются последние измеренные показания. Это позволяет не ждать результатов измерений после отправки команды.

    Этот датчик стабильно проработал около 3 лет подряд в уличной метеостанции, после чего вышел из строя. Длина провода для шины I2C при этом составляла около 3 метров. В данном конкретном случае использован стандартный 4-х жильный плоский кабель, который обычно применяется для подключения стационарных телефонных аппаратов к телефонной сети. По моим наблюдениям за несколькими BME280 эти датчики немного завышают показания температуры и немного занижают показания влажности (по сравнению с Si7021 / SHT31). На улице может замерзать и показывать максимальную влажность. Давление в целом соответствует данным нашей городской метеостанции, так что ему вполне можно доверять.

    Некоторые ушлые продаваны на AliExpress пытаются продать более дешевые BMP280 по цене BME280. Распознать их достаточно просто по форме корпуса датчика – у BMP280 она более вытянутая (прямоугольная), а у BME280 – квадратная. Наглядно это продемонстрировано на рисунке:

    Разновидности плат с BMЕ280

    Не допускайте попадания на датчик влаги и прямых солнечных лучей.

    BME680

    Модуль BME680 представляет собой целый набором датчиков в едином корпусе. Микросхема BME680 предназначена для измерения параметров окружающей среды. Она позволяет определять не только такие привычные характеристики как давление, температура и влажность, но и оценивать качество воздуха. Если учесть, что данная микросхема отличается весьма компактными габаритами и скромным потреблением, то она может стать идеальным выбором для таких приложений как умные часы, фитнес-браслеты, шагомеры, смартфоны, навигаторы и многих других.

    Производитель: Bosch Sensortec
    Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77
    Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
    Потребляемый ток: от

    0.15 µA в режиме ожидания до 714 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +85 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность):
    – при 25°C: ±0.5°C
    – от 0 до +65°C: ±1.0°C
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.008 %RH
    Погрешность измерения влажности (точность): ±3.0 %RH
    Рабочий диапазон измерения влажности: смотри график ниже
    Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
    Шаг измерения давления (разрешение): 0.0018 hPa
    Погрешность измерения давления (точность): абсолютная ±0.6 hPa, относительная ±0.12 hPa
    Особенности: сенсор качества воздуха
    Библиотека для Arduino: Adafruit BME680 Library
    Библиотека для ESP32 + ESP-IDF: kotyara12/reBME680
    Источники информации: Datasheet EN, Обзор

    Датчик качества воздуха – главная «изюминка» в рассматриваемом датчике. BME680 имеет встроенный металло-оксидный датчик (Metal Oxide Semiconductor) органических летучих соединений (ЛОС). Это датчик резистивного типа, сопротивление поверхности которого зависит от содержания в воздухе ЛОС (этанол, ацетон, изопрен, угарный газ, продукты дыхания и т.д). Недостаток таких сенсоров заключается в необходимости дополнительного разогрева чувствительного элемента с помощью специального нагревателя, температура которого достигает нескольких сотен градусов. В частности в BME680 она составляет около 320 °С. Сопротивление датчика измеряется, оцифровывается 20-битным АЦП и фильтруется. Затем датчик преобразуют исходные данные в форму, удобную для дальнейшей обработки, а конкретно в баллы качества воздуха IAQ (Indoor air quality) BME680 работает с диапазоном IAQ 0…500 с разрешением 1. По предложенной таблице можно легко принять решение о необходимости проветривания, если речь идет о системе вентиляции, или просто предупредить пользователя, если микросхема BME680 установлена в умных часах.

    Уровни качества воздуха

    HDC1080

    Сенсор для измерения температуры и влажности от Texas Instruments. Данный датчик обладает не слишком высоким разрешением, зато может похвастаться низким энергопотреблением – в режиме измерения температуры и влажности потребляемый ток не превышает 1.3 µA, что делает его незаменимым для устройств сбора данных, работающих от батарей и аккумуляторов. А напряжение питания от 2.7 В до 5.5 В позволяет подключать датчик напрямую к большинству микроконтроллеров без использования стабилизаторов и преобразователей уровней. На плате с датчиком имеются перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. Погрешность измерений вполне соответствует современным требованиям.

    Производитель: Texas Instruments
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +2.0 до +5.5 В
    Потребляемый ток: от

    0.1 µA в режиме ожидания до 1.3 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.5°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Рабочий диапазон температур для сенсора влажности: от -20 до +85 °C
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±4.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: нагреватель
    Библиотека для Arduino: HDC1080 Library, ClosedCube HDC1080 Arduino
    Источники информации: Datasheet EN

    Погрешности измерения HDC1080

    HDC1080 включает в себя встроенный нагревательный элемент, который помогает уменьшить накопившееся смещение после длительного пребывания в условиях высокой влажности. Это особенно актуально, если Вы собираетесь постоянно использовать датчик в помещениях с повышенной влажностью (банях, теплицах, погребах, подвалах и т.д.). Кроме того, нагреватель можно использовать для функциональной проверки встроенного датчика температуры.

    HDC2080

    HDC2080 – это еще один датчик влажности и температуры от Texas Instruments, который обеспечивает высокоточные измерения с очень низким энергопотреблением в небольшом корпусе. По сравнению с предшественником, точность измерения осталась практически неизменной, но зато он обладает еще более низким энергопотреблением, что делает его идеальным для систем с батарейным питанием. Он так же, как и HDC1080, содержит встроенный нагревательный элемент для испарения конденсата и влаги, что позволяет использовать его в помещениях с повышенной влажностью. Но самое вкусное в этой модели не это, а встроенные функции для автоматического измерения без необходимости включения микроконтроллера на постоянный мониторинг и программируемые пороги прерывания для выдачи предупреждений и пробуждения микроконтроллера из глубокого сна.

    Производитель: Texas Instruments
    Интерфейс: I2C, адрес на шине: 0x40 или 0x41 (переключение с помощью вывода ADR)
    Напряжение питания: от +1.62 до +3.6 В
    Потребляемый ток: от 0.05 µA в режиме ожидания до 0.55 µA в режиме измерения (1 раз в секунду) или 0.105 µA (1 раз в 10 секунд)
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.4°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Рабочий диапазон температур для сенсора влажности: от -40 до +85 °C
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: нагреватель, автономная работа, прерывания при выходе за указанные границы
    Библиотека для Arduino: HDC2080 Breakout, HDC2080 Lime-labs
    Источники информации: Homepage EN, Datasheet EN

    Погрешности измерения HDC2080

    На плате HDC2080 нет стабилизатора, поэтому использовать с пятивольтовыми платами Arduino запросто не получится. Да это и не имеет особого смысла – не для этого сегмента он предназначен. Его целевая ниша – экономичные автономные устройства с питанием от батарей. Если Вы все-таки решитесь подключить его к Arduino Uno, то придется приколхозить еще и преобразователи уровней – максимальное напряжение на SCL / SDA не должно превышать 3.9 В. Этот датчик имеет вывод для изменения адреса на шине, что позволяет к одному контроллеру подключить параллельно два датчика. А вот резисторы подтяжки SCL /SDA отключить уже не получится (только выпаять полностью), видимо производитель (справедливо) решил, что другие датчики на шину подключаться не будут.

    HDC2080 включает в себя встроенный нагревательный элемент, который можно включить на короткое время, чтобы предотвратить или удалить конденсат, который может накапливаться в среде с высокой влажностью. Для этого используются функции enableHeater() и disableHeater(). Это особенно актуально, если Вы собираетесь постоянно использовать датчик в помещениях с повышенной влажностью (банях, теплицах, погребах, подвалах и т.д.). Кроме того, нагреватель можно использовать для функциональной проверки встроенного датчика температуры. Рабочий диапазон нагревателя должен быть ограничен от –40 °C до 85 °C. При работе 3.3 В нагреватель будет потреблять ток 90 мА, а при работе 1.8 В – 55 мА. Измерения при этом, разумеется, придется на время приостановить.

    На этот датчик можно легко переложить все процесс измерения и контроля заданных диапазонов температуры и влажности, отправив центральный процессор в глубокий сон для экономии энергии батарей. HDC2080 позволяет задать разрешение и временной интервал для периодического автономного измерения, настроить верхние и нижние границы для контроля температуры и влажности, а затем перевести основной микроконтроллер в режим пониженного энергопотребления. При выходе показаний датчика за заданные рамки датчик сгенерирует сигнал прерывания на выводе INT, чтобы вывести основной микроконтроллер из сна и запустить выполнение какие-либо действий. Разумеется, придется почитать мануалы и программа Вашего устройства немного усложнится, но это стоит того. Например: на основе этого сенсора можно собрать миниатюрное устройство и поместить его в слой базальтового утеплителя холодного чердака дома. Датчик будет мониторить температуру и влажность внутри утеплителя не чаще одного раза в две минуты (максимальный интервал), и только при превышении заданных пользователем параметров “будить” контроллер, который отправит сигнал тревоги.

    HTU20D

    Младшая модель в линейке сенсоров от Measurement Specialties. В дикой природе (читай – AliExpress) практически не встречается, ибо смысла его продавать особого нет – стоит он ровно столько же, как и HTU21D. Плата с припаянным датчиком отличается от HTU21D более желтым цветом. Стабилизатора для питания от 5В и согласования уровней нет, только отключаемые резисторы подтяжки и конденсатор. Модификация с буковкой F на конце имеет PTFE-мембрану (фильтр) для защиты от пыли и капель воды.

    Производитель: Measurement Specialties, Inc – MEAS France
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +1.5 до +3.6 В
    Потребляемый ток: от

    0.02 µA в режиме ожидания до 500 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max

    ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±3.0 %RH (max ±5.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: HTU20D
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN

    Погрешности измерения HTU20D

    Производитель обещает измерение влажности в диапазоне температур от -40 до +85 °C, а с некоторыми ограничениями и до +125 °C. В спецификации указано, что оптимальные условия измерения – от 5% до 95%RH, но измерения возможны от 0% до 100%, включая конденсацию капель воды. Для удаления конденсата в датчике предусмотрен нагреватель, который потребляет около 5,5 мВт и обеспечивает повышение температуры примерно на 0,5–1,5 °C.

    При влажности более 90% выдает завышенные показания и упирается в постоянное значение 100%, которое не соответствует реальности. При длительной работе при повышенной влажности, умирает.

    Из личного опыта могу заметить, что мой экземпляр HTU20 сильно занижал показания влажности. Например, все остальные датчики выдавали значение влажности около 25%, HTU20 при этом показывал 16%. Не могу с уверенностью сказать, что так работают все HTU20, но факт остается фактом. Сравнить мне не с чем – после первого неудачного опыта покупать я его больше не намерен. HTU21 при этом возвращает корректное значение. Вообще, насколько я понимаю производственные процессы, “младшие” модели – это своего рода “выбраковка”. То есть те чипы, которые попадают в заданные критерии точности, маркируются как HTU21. Те, что никуда не годятся – как HTU20. Ну а лучшие экземпляры можно промаркировать как HTU25 и продать подороже (прим. автора)

    Рабочая область сенсора влажности HTU20D

    Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / Si7021 / SHT2x, а это означает что совместно их использовать не получится (без дополнительной коммутации). На плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков.

    HTU21D

    Следующая модель в линейке сенсоров от Measurement Specialties. По диапазонам, точности и времени измерения эта модель не отличается от предыдущей модели HTU20D. В продаже можно найти две модификации платы HTU21D – 3.3 В (красная) и 5.0 В (синяя). На синей плате имеется стабилизатор и модуль согласования логических уровней. В сенсоре имеется встроенный 5mW для удаления росы или после длительного воздействия влажности больше 80%. Модификация с буковкой F на конце имеет PTFE-мембрану (фильтр) для защиты от пыли и капель воды.

    Производитель: Measurement Specialties, Inc – MEAS France
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +1.5 до +3.6 В (красная плата) / 5.5 В (синяя плата)
    Потребляемый ток: от

    0.02 µA в режиме ожидания до 500 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max

    ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±3.0 %RH (max ±5.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: Adafruit HTU21D, HTU21D enjoyneering
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN, Обзор от elchupanibrei

    Погрешности измерения HTU21D

    Производитель обещает измерение влажности в диапазоне температур от -40 до +85 °C, а с некоторыми ограничениями и до +125 °C. В спецификации указано, что оптимальные условия измерения влажности – от 5% до 95%RH, но измерения возможны от 0% до 100%, включая конденсацию капель воды. Для удаления конденсата с поверхности датчика в нем имеется нагреватель 5mW, datasheet рекомендует использовать его для удаления росы или после длительного воздействия влажности больше 80%.

    Рабочая область сенсора влажности HTU21D

    Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / Si7021 / SHT2x, а это означает что совместно их использовать не получится (без дополнительной коммутации). На красной плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. На синей плате имеется стабилизатор и преобразователь уровней, но стабилизатор слишком близко расположен к самому датчику (хотя и на противоположной стороне), из-за чего происходит смещение температуры до 1°C после часа работы.

    Синяя ( 5 В ) и красная плата ( 3.3 В )

    Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 10..18 секунд.

    Si7021

    Si7021 это более продвинутый аналог SHT21 и HTU21D от компании Silicon Labs. Из заметных внешних отличий имеет защитную пластинку от пыли. Если сравнить его с датчиками хх21 других производителей, то окажется, что все они имеют идентичные габариты (3×3 мм), примерно аналогичные параметры по точности, и совместимы по системе команд и выводам корпуса, на AliExpress они продаются на одних и тех же платах. Соответственно, можно применять одну и ту же библиотеку для считывания данных с датчика. Однако Si70XX имеют больше возможностей, чем собратья от других производителей, поэтому система команд более широкая, это следует учитывать. Серия Si70xx имеет в своем составе еще два датчика: Si7013 и Si7020, но они не сильно распространены, поэтому здесь не рассматриваются. Легко можно найти как 3.3-вольтовые варианты, так и 5-вольтовые со стабилизатором и преобразователем уровней.

    Производитель: Silicon Laboratories
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +1.9 до +3.6 В (фиолетовая плата) / 5.5 В (синяя плата)
    Потребляемый ток: от

    0.06 µA в режиме ожидания до 180 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.025 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: Adafruit Si7021, HTU21D enjoyneering
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN, Обзор от elchupanibrei

    Погрешности измерения Si7021

    Как и ближайшие конкуренты, этот датчик так же способен к длительной работе в условиях повышенной влажности, включая конденсацию капель воды. Si7021 содержит встроенный резистивный нагревательный элемент, который можно использовать для повышения температуры датчика на 1.5°C. Этот элемент можно использовать для тестирования датчика, для предотвращения конденсации или для измерения точки росы, когда Si7021 используется вместе с отдельным датчиком температуры. Ток нагревательного элемента можно регулировать от

    95 mA, соответственно будет изменяться и рассеиваемая нагревателем мощность.

    В отличии от собратьев (HTU21D / SHT2x) Si70XX измеряет температуру и влажность одновременно. То есть измерения происходят гораздо быстрее и экономичнее. Вначале отсылаем команду на измерение влажности, а после необходимой паузы получаем измерянные влажность и температуру. Кроме того, сам по себе датчик Si7021 гораздо быстрее выполняет измерения, что может быть важно в некоторых применениях. Во вторых, датчик выдает уже термокомпенсированное значение влажности, а на HTU21D скомпенсированное значение придется считать отдельно. В третьих, Si70XX позволяет регулировать мощность нагревателя.

    К сожалению, на AliExpress часто попадаются поддельные Si7021, мне попались именно такие. Распознать их можно по серийному номеру: у поддельных датчиков он всегда будет 0X15FFFFFF, при этом китаезы даже не потрудились посчитать для него корректную контрольную сумму. В целом такие датчики работают, и даже выдают более-менее достоверные данные, вот только временные задержки на измерения не соответствуют заявленным.

    Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / HTU21D / SHT2x, а это означает что совместно их использовать на Arduino без танцев с бубном не получится. На ESP32 + ESP-IDF это возможно, так как ESP32 имеет две шины I2C. На фиолетовой плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. На синей плате (CY-21) имеется стабилизатор и преобразователь уровней.

    Платы 5 В и 3.3 В

    Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 10..18 секунд.

    SHT20

    SHT20 – это младшая модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. Рассматриваемый сенсор можно найти как в виде микросхемы, распаянной на плате (как в случае с Si7021 / HDC1080 / HTU21D) с напряжением питания до 3.6 В, так и в виде микромодуля в пластиковом корпусе (чем-то похож на DHT22) с напряжением питания до 5.5 В.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +2.1 до +3.6 В (фиолетовая плата) / 5.5 В (белый / черный модуль)
    Потребляемый ток: от

    0.15 µA в режиме ожидания до 300 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.5°C (max ±2.5°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±3.0 %RH (max ±5.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: DFRobot SHT20, uFire SHT20
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN

    Погрешности измерения SHT20

    Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (

    SHT21

    SHT21 – это следующая модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. Как и в предыдущем случае, его легко можно найти в продаже как в 3.3-вольтовом исполнении, так и в пятивольтовом (ну разумеется я говорю о уже распаянных на платках датчиках). На мой взгляд, из серии SHT2x это оптимальный выбор – точность выше SHT20, а цена не намного больше.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +2.1 до +3.6 В (фиолетовая плата) / 5.5 В (GY-21)
    Потребляемый ток: от

    0.15 µA в режиме ожидания до 300 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.3°C (max ±0.8°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: SHT21 markbeee, SHT21 e-radionicacom
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN, Обзор от elchupanibrei

    Погрешности измерения SHT21

    Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (

    SHT25

    SHT25 – высококачественная модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. В дикой природе На AliExpress можно найти только в виде чипов по неадекватной цене, готовых модулей на момент написания статьи я не нашёл. Есть в продаже платы-подложки для распайки этих датчиков, но паять придется самому.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x40
    Напряжение питания: от +2.1 до +3.6 В
    Потребляемый ток: от

    0.15 µA в режиме ожидания до 300 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.7°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.04 %RH
    Погрешность измерения влажности (точность): ±1.8 %RH (max ±3.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 1.5°C
    Библиотека для Arduino: SHT2x Arduino Library, SHT25 WickedDevice
    Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
    Источники информации: Datasheet EN

    Погрешности измерения SHT25

    Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (

    SHT30

    SHT30 – это бюджетная модель в следующей серии датчиков SHT3x от Sensirion. Серия датчиков влажности SHT3x состоит из недорогой версии с датчиком SHT30, стандартной версии с датчиком SHT31 и высокопроизводительной версии с датчиком SHT35. В отличии от SHT2x, новая линейка сенсоров имеет более широкий диапазон питающих напряжений – от 2.15 до 5.5 В, поэтому не нуждается в дополнительном стабилизаторе для подключения к различным платам. Кроме этого, SHT3x предлагает ряд новых функций, таких как улучшенная обработка сигналов; два различных адреса I2C, выбираемых пользователем; режим оповещения с программируемыми пределами влажности и температуры; а также скорость передачи данных до 1 МГц.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x44 или 0x45.
    Напряжение питания: от +2.15 до +5.5 В
    Потребляемый ток: от

    0.2 µA в режиме ожидания до 600

    1500 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.6°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.01 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH (max ±4.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 33mW
    Библиотека для Arduino: SHT3x, ClosedCube SHT3xD
    Библиотека для ESP32 + ESP-IDF: kotyara12/reSHT3x
    Источники информации: Homepage EN, Datasheet EN, Небольшой обзор

    Погрешности измерения SHT30

    Датчик показывает наилучшие характеристики при эксплуатации в рекомендованном диапазоне нормальной температуры и влажности от 5 до 60 °C и от 10 %RH до 90 %RH соответственно. Долгосрочное воздействие условий, выходящих за пределы нормы, особенно при высоких значениях влажности, может временно увеличивать погрешность измерения относительной влажности на +3% (например при воздействии относительной влажности >80% более 60 часов). После возвращения в нормальное состояние диапазон температуры и влажности, датчик сам медленно вернется в состояние калибровки. Длительное воздействие экстремальные условия могут ускорить старение.

    Типичный допуск относительной влажности SHT30

    SHT30 оснащен внутренним нагревателем, который предназначен для проверки достоверности сенсора температуры и самопросушки сенсора влажности. Увеличение температуры, достигаемое нагревателем, зависит от различных параметров и лежит в диапазоне нескольких градусов по Цельсию. Его можно включать и выключать по команде. После сброса подогреватель отключается (состояние по умолчанию).

    Наконец-то производитель изменил адрес датчика на шине, и теперь его можно комбинировать с другими датчиками, например BMP280. Этим немедленно воспользовались китайские производители, на Aliexpress без труда можно найти платы с несколькими сенсорами одновременно. Если рассматривать платы только с этим датчиком “в одиночестве”, то можно найти как минимум три варианта: SHT30-DIS без возможности изменения адреса (синяя), SHT30 с выводами ADDR (изменение адреса) и ALARM (сигнал появляется при выходе за настроенные диапазоны) (фиолетовая), и шилд для D1MINI как с возможностью изменения адреса, так и с возможностью отключения подтягивающих резисторов.

    Разновидности плат с SHT30

    Фиолетовая плата функционально похожа HDC2080. SHT30 может работать независимо, без Arduino или другого микроконтроллера. В таком варианте он действует как своего рода автоматический термометр и гигрометр и может управлять другим устройством, например вентилятором или нагревателем, либо “будить” микроконтроллер по прерыванию. Но на синей SHT30-DIS таких выводов просто нет.

    SHT31

    SHT31 – это средняя модель в серии датчиков SHT3x от Sensirion. Серия датчиков влажности SHT3x состоит из недорогой версии с датчиком SHT30, стандартной версии с датчиком SHT31 и высокопроизводительной версии с датчиком SHT35. В отличии от SHT2x, новая линейка сенсоров имеет более широкий диапазон питающих напряжений – от 2.15 до 5.5 В, поэтому не нуждается в дополнительном стабилизаторе для подключения к различным платам. Кроме этого, SHT3x предлагает ряд новых функций, таких как улучшенная обработка сигналов; два различных адреса I2C, выбираемых пользователем; режим оповещения с программируемыми пределами влажности и температуры; а также скорость передачи данных до 1 МГц.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x44 или 0x45.
    Напряжение питания: от +2.15 до +5.5 В
    Потребляемый ток: от

    0.2 µA в режиме ожидания до 600

    1500 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.2°C (max ±0.5°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.01 %RH
    Погрешность измерения влажности (точность): ±2.0 %RH
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 33mW
    Библиотека для Arduino: SHT3x, ClosedCube SHT3xD
    Библиотека для ESP32 + ESP-IDF: kotyara12/reSHT3x
    Источники информации: Homepage EN, Datasheet EN, Небольшой обзор

    Этот датчик в отличии от бюджетной модели имеет более “ровные” графики погрешности измерений. Я так понимаю, что на производстве выпускается один и тот же датчик, а разделение на SHT30 / SHT31 / SHT35 происходит на этапе калибровки – самые точные датчики маркируют как SHT35, явные середнячки попадают в группу SHT31, ну а “третий сорт не брак” – SHT30.

    Погрешности измерения SHT31

    Датчик показывает наилучшие характеристики при эксплуатации в рекомендованном диапазоне нормальной температуры и влажности от 0 до 90 °C и от 0 %RH до 100 %RH соответственно. Долгосрочное воздействие высоких значениях влажности, может временно увеличивать погрешность измерения относительной влажности на +3% (например при воздействии относительной влажности >80% более 60 часов). После возвращения в нормальное состояние диапазон температуры и влажности, датчик сам медленно вернется в состояние калибровки. Длительное воздействие экстремальные условия могут ускорить старение.

    Типичный допуск относительной влажности SHT31

    SHT31 оснащен внутренним нагревателем, который предназначен для проверки достоверности сенсора температуры и самопросушки сенсора влажности. Увеличение температуры, достигаемое нагревателем, зависит от различных параметров и лежит в диапазоне нескольких градусов по Цельсию. Его можно включать и выключать по команде. После сброса подогреватель отключается (состояние по умолчанию).

    Наконец-то производитель изменил адрес датчика на шине, и теперь его можно комбинировать с другими датчиками, например BMP280. Этим немедленно воспользовались китайские производители, на Aliexpress без труда можно найти платы с несколькими сенсорами одновременно. Если рассматривать платы только с этим датчиком “в одиночестве”, то можно найти как минимум три варианта: SHT31-DIS без возможности изменения адреса (ярко-красная), SHT31 с выводами ADDR (изменение адреса) и ALARM (сигнал появляется при выходе за настроенные диапазоны) (фиолетовая), и еще попадается синяя от RTrobot.

    Разновидности плат с SHT31

    Фиолетовая плата функционально похожа HDC2080. SHT31 может работать независимо, без Arduino или другого микроконтроллера. В таком варианте он действует как своего рода автоматический термометр и гигрометр и может управлять другим устройством, например вентилятором или нагревателем, либо “будить” микроконтроллер по прерыванию. Но на красной SHT31-DIS таких выводов просто нет.

    SHT35

    SHT35 – это самая точная и самая дорогая модель в серии датчиков SHT3x от Sensirion. Серия датчиков влажности SHT3x состоит из недорогой версии с датчиком SHT30, стандартной версии с датчиком SHT31 и высокопроизводительной версии с датчиком SHT35. В отличии от SHT2x, новая линейка сенсоров имеет более широкий диапазон питающих напряжений – от 2.15 до 5.5 В, поэтому не нуждается в дополнительном стабилизаторе для подключения к различным платам. Кроме этого, SHT3x предлагает ряд новых функций, таких как улучшенная обработка сигналов; два различных адреса I2C, выбираемых пользователем; режим оповещения с программируемыми пределами влажности и температуры; а также скорость передачи данных до 1 МГц.

    Производитель:Sensirion
    Интерфейс: I2C, адрес на шине: 0x44 или 0x45.
    Напряжение питания: от +2.15 до +5.5 В
    Потребляемый ток: от

    0.2 µA в режиме ожидания до 600

    1500 µA в режиме измерения
    Диапазон измерения температуры: от -40 до +125 °C
    Шаг измерения температуры (разрешение): 0.01°C
    Погрешность измерения температуры (точность): ±0.1°C (max ±0.4°C)
    Диапазон измерения влажности: от 0 до 100 %RH
    Шаг измерения влажности (разрешение): 0.01 %RH
    Погрешность измерения влажности (точность): ±1.5 %RH (max ±2.0 %RH)
    Возможность измерения давления: отсутствует
    Особенности: встроенный нагреватель 33mW
    Библиотека для Arduino: SHT3x, ClosedCube SHT3xD
    Библиотека для ESP32 + ESP-IDF: kotyara12/reSHT3x
    Источники информации: Homepage EN, Datasheet EN, Небольшой обзор

    Этот датчик в отличии от SHT30 и SHT31 имеет ещё более высокие показатели точности измерений. Я так понимаю, что на производстве выпускается один и тот же датчик, а разделение на SHT30 / SHT31 / SHT35 происходит на этапе калибровки – самые точные датчики маркируют как SHT35, явные середнячки попадают в группу SHT31, ну а “третий сорт не брак” – SHT30.

    Погрешности измерения SHT35

    Датчик показывает наилучшие характеристики при эксплуатации в рекомендованном диапазоне нормальной температуры и влажности от 0 до 80 °C и от 20 %RH до 60 %RH соответственно. Долгосрочное воздействие высоких значениях влажности, может временно увеличивать погрешность измерения относительной влажности на +3% (например при воздействии относительной влажности >80% более 60 часов). После возвращения в нормальное состояние диапазон температуры и влажности, датчик сам медленно вернется в состояние калибровки. Длительное воздействие экстремальные условия могут ускорить старение.

    Типичный допуск относительной влажности SHT35

    SHT35 оснащен внутренним нагревателем, который предназначен для проверки достоверности сенсора температуры и самопросушки сенсора влажности. Увеличение температуры, достигаемое нагревателем, зависит от различных параметров и лежит в диапазоне нескольких градусов по Цельсию. Его можно включать и выключать по команде. После сброса подогреватель отключается (состояние по умолчанию).

    Наконец-то производитель изменил адрес датчика на шине, и теперь его можно комбинировать с другими датчиками, например BMP280. Этим немедленно воспользовались китайские производители, на Aliexpress без труда можно найти платы с несколькими сенсорами одновременно. Если рассматривать платы только с этим датчиком “в одиночестве”, то можно найти как минимум три варианта: SHT35-DIS без возможности изменения адреса (темно-фиолетовая или ярко-зеленая), SHT31 с выводами ADDR (изменение адреса) и ALARM (сигнал появляется при выходе за настроенные диапазоны) (фиолетовая), и еще попадается синяя от RTrobot.

    Разновидности плат с SHT35

    Фиолетовая плата функционально похожа HDC2080. SHT35 может работать независимо, без Arduino или другого микроконтроллера. В таком варианте он действует как своего рода автоматический термометр и гигрометр и может управлять другим устройством, например вентилятором или нагревателем, либо “будить” микроконтроллер по прерыванию. Но на зеленой SHT35-DIS таких выводов просто нет.

    Сравнение датчиков

    Делюсь опытом. Одно дело – копаться в даташитах, и совершенно другое – на деле сравнить датчики в деле. Конечно, сравнение датчиков делалось в сети не единожды (ниже в списке использованных источников Вы можете найти ссылки на подобные проекты), но мне хотелось сравнить датчики самому. Особенно меня интересует поведение датчиков в условиях экстремальной влажности (в частности в погребе, где температура около +5, а влажность >90% RH), но тестовые проект пока не позволяет этого сделать (но планирую). Проект собран на ESP32, написан полностью на ESP-IDF без использования Arduino, поэтому драйверы для датчиков пришлось написать самому, а заодно и разобраться в их возможностях и работе. Пока что не все драйверы написаны, поэтому и собирать вариант для улицы пока смысла нет. Если есть желание, можно посмотреть исходники на GitHub.

    Конечно, следует учитывать и тот факт, что датчики могут различаться друг от друга в зависимости от партии и времени выпуска, поэтому приведенные данные не следует принимать как абсолютно точные.

    Измерения внутри отапливаемого помещения

    Пока что проект собран на монтажной плате, стоит на столе рядом с компьютером и чутко реагирует на его включение и выключение.

    Изменение температуры в комнатных условиях

    Изменение влажности в комнатных условиях

    Как видим – DHT11 – это “нечто”. Мало того, что шаг измерения и точность никакая, так он еще и сильно занижает температуру, а влажность завышает. Показания скачут аки тыгыдымские кони. Годится только для экспериментов при освоении Arduino. Mw33 в этом плане выглядит немного лучше, особенно радуют данные для влажности, но все-таки он сильно занижает данные температуры. Остальные датчики идут довольно тесной группой, но все-таки можно заметить, что BME280 (как и BMP280) немного завышает данные температуры и занижает данные влажности – причем всегда, проверено на нескольких датчиках, купленных в разное время у разных продавцов. Можно смело скидывать примерно полградуса от его показаний. AM2302 наоборот, чуть занижает показания температуры. При измерении влажности AM2302 и AHT10 выдают примерно одинаковые данные, что не особо удивляет – ведь используется практически одна и та же технология изменения. Эксперимент показал, что применение достаточно дешевых AHT10 для изменения параметров климата внутри помещений вполне оправданно, и дает возможность использовать до 2-х датчиков на одной шине без применения мультиплексоров (или 4 датчика на ESP32).

    Какой датчик выбрать для Вашего проекта?

    В заключение поделюсь своими личными соображениями – какой датчик выбрать для проекта.

    Если требуется измерение только температуры (без учета влажности) – то смело можно брать DS18B20 и не задумываться о проблеме длинных проводов – этот датчик прекрасно работает на больших расстояниях при трехпроводном питании. При паразитном питаниия (2 провода) допустимая длина провода может быть ниже. Напомню еще раз, DS18B20 продается в вполне герметичной гильзе, что делает его прекрасным вариантом для различных “мокрых дел”. На мой взгляд этот датчик подходит для следующих проектов: измерения температуры теплоносителя на выходе из котла отопления, измерения температуры почвы в теплице, температуры воды в аквариуме, самогонного аппарата и т.д. и т.п. Ничто не мешает использовать его и для измерения температуры воздуха на улице или в помещении, но влажность измерять он “не могёт”. Если влажность не критичный параметр – смело используйте DS18B20. Как только требуется измерение влажности, начинаются проблемы. С проводами…

    Если расстояние от MCU (микроконтроллера) до точки измерения невелико, то можно воспользоваться любым подходящим по цене и параметрам I2C датчиком. Предельная емкость шины I2C, равная 400 пФ, ограничивает практическое расстояние связи до нескольких метров. На практике лично у меня вполне стабильно работают датчики с кабелем 3 метра, но только если датчик на шине один (или они соединены “цепочкой”, если кабели датчиков соединены “веером” – помехи обеспечены). Следует учесть, что с увеличением длины провода количество “помех” на шине I2C резко возрастает, и датчики без передачи контрольной суммы (AHT10, например), могут выдавать неверные значения. В качестве альтернативы можно использовать специальные чипы – “удлинители” сигнала I2C, например P82B715, но и они не дают сильного эффекта. Цифровые сенсоры I2C (AHTxx, BM?x80, SHTxx, HTUxx и т.д.) прекрасно подойдут для домашней метеостанции, различных термостатов, управления отоплением и вентиляций, и прочими проектами управления климатом. Если требуется высокая точность (особенно если предусмотрена работа на улице) и позволяет бюджет, рекомендую выбрать SHT31 – он обладает хорошими характеристиками и достаточной стабильностью. Кроме того, можно периодически “прогревать” датчик SHT31, чтобы избежать дрейфа показаний влажности. Но, ещё и ещё раз повторю – если длина провода относительно невелика.

    Если требуется подключить датчик на более длинном проводе – то тут, увы, альтернативы DHTxx/AM2302 я не вижу, при всех их недостатках (относительно невысокая точность, периодические зависания и быстрый выход емкостного сенсора при высокой влажности). Более-менее стабильно они способны работать на кабеле до 20м. На длинном кабеле (>10м) китайцы рекомендуют снизить резистор подтяжки до 1kOm. Как я не “крутился с I2С” в погребе, провод в 15 метров до MCU до сенсора не оставил мне выбора (можно, конечно, запихнуть MCU непосредственно в погреб, подвести к нему питание, и подключить любой удобный сенсор, но WiFi там ловит “никак”, да и “городить огород” ради одного сенсора желание не возникает).

    Продолжение следует…

    Систематизация информации занимает очень много времени, поэтому статья будет дополняться новыми датчиками постепенно. Рекомендую заглянуть сюда вновь.

    Если Вы заметили в таблице или описании какую либо-неточность, либо хотите дополнить информацию – напишите мне на почту или в комментариях. Думаю, это будет полезно всем.

    Если Вам понравилась данная статья и (или) Вы желаете увидеть в ней краткий обзор других датчиков, то Вы можете поддержать автора любой приемлемой для Вас суммой. Полученные средства пойдут на покупку новых сенсоров и дополнение статьи. Спасибо.

    Источник

    Adblock
    detector