Серия датчиков температуры и влажности SHTх.

Популярные датчики температуры и влажности с интерфейсом I2C и заводской калибровкой от компании Sensirion. SHT20\30\40 самые младшие в своих сериях датчики, отличаются меньшей точностью и ценною.

SHT2x\3x\4x это разные линейки датчиков, разработанные в разное время, не совместимые программно и аппаратно, но схожи функционально.

Внутри своих серии, датчики отличаются только точностью и равномерностью в диапазоне измерений. Например, у датчика SHT30 точность измерения влажности ±2% в диапазоне от 10% до 90%, тогда как у SHT31 во всем диапазоне от 0% до 100%, а у STH35 точность измерения влажности доходит до ±1.5%. Различия есть, но не столь существенные, младшие в своих сериях вполне пригодны для бытового использования.

Сравнительные характеристики:

SHT20SHT30SHT40
Диапазон измерения температуры:от -40 до +125 °Cот -40 до +125 °Cот -40 до +125 °C
Диапазон измерения влажности:от 0 до 100% RHот 0 до 100% RHот 0 до 100% RH
Точность измерения температуры (типичная):±0.3°C±0,2°C±0.2°C
Точность измерения относительной влажности (типичная):±3.0%±2%±1.8%
Разрешение (Температура \ Влажность). Макс:14 \12 Bit.16 \ 16 Bit.16 \ 16 Bit.
Связь:I²C. адрес 0x40, изменить нельзя.I²C. адрес 0x44 (pin 2 to VSS) или 0x45 (pin 2 to VDD)I²C. адрес 0x44 или 0x45, изменить нельзя.
Размер:3.0×3.0x1.1 mm2.5×2.5×0.9 mm1.5×1.5×0.5 mm

Электрические параметры:

SHT20SHT30SHT40
Напряжение питания (мин\тип\макс):2.1 \ 3.0 \ 3.62.15 \ 3.3 \ 5.5 1.08 \ 3.3 \ 3.6
Потребление в режиме измерения (мин\тип\макс) μA:200 \ 300 \ 330ns \ 600 \1500ns \ 350 \ ns
Потребление в спящем режиме (мин\тип\макс) μA:ns \ 0.15 \ 0.4ns \ 0.2 \ 2.0ns \ 0.08 \ ns

Внешний вид и разновидности модулей:

STH2x:

GY-213V-SHT20:

Это классика, на этой плате можно встреть всю линейку электрически совместимых с SHT20 датчиков. Модуль примечателен возможностью отключить подтягивающие резисторы, удобно если к шине I2C подключено несколько модулей. Стабилизатора питания нет, модуль можно считать 3,3 вольтовым. Продается тут.

Похожий:

Нечно безымянное, и мало чем отличающееся от того, что выше. Продаются тут.

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

STH3x:

SHT3x-DIS:

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

GY-SHT30-D:

Не менее распространенная версия, продолжение линейки модулей с датчиками атмосферного давления, температуры и влажности. В таком размере и с такой распиновкой существует энное количество функционально схожих модулей. Выведены две дополнительные ноги AL и AD. AL (ALLERT) — Функциональный выход, датчик может дернуть ногой по заданному событию и AD (ADDR) — Для смены адреса на шине I2C, соответственно. Продаются на али, тут.

WEMOS SHT30 Shield:

Существует минимум две версии сшилда с SHT30 для Wemos, разной степени коммерческой успешности. Первая версия имеет один серьезный недостаток, при использовании его по прямому назначению, как сшилд надетый сверху ESP8266, нагревается от ESP и завышает показания. Во второй версии проблема частично исправлена.

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

SHT4x:

Adafruit:

Копия модуля от Adafruit, в наличии так называемый QWIIC порт, конвертер логических уровней и стабилизатор питания, который можно отключить. Универсальный модуль, продается тут.

Без партнамбера:

Модуль схож с GY-SHT30-D, логическое продолжение линейки модулей. Модуль строго 3.3 вольтовый, из плюшек на нем только подтягивающие резисторы. Продается тут.


Подключение датчика к Arduino:

Тут в зависимости от модуля и датчика. Датчик SHT30, толерантен к 5 вольтовой логике, так и к 5 вольтам в питании, с arduino\ESP\STM работает в любых вариантах, 3.3 или 5 вольт, не важно. Датчик SHT20, 3.3 вольтовый, но логические уровни держит до 5.0 вольт, теоретически можно подключать к 5 вольтовой ардуино, но питание строго 3.3. Чтобы с 5 вольтовой ардуино он работал долго и счастливо, рекомендуется подключать через конвертер логических уровней или использовать 3.3 вольтовую логику. Датчик SHT40 низковольтный, экономичный и 5 вольт не умеет вот совсем, строго 3.3 вольта и конвертер логических уровней.

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


Софт:

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

Библиотеку для ардуино можно найти в встроенном менеджере библиотек, датчики очень популярны и дефицита в примерах работы с ними нет.

Без библиотек:

. позже

STM8 и Код на С:

тоже позже


SHT30
#include <Wire.h>
#include <Serial.h>

#define SHT30_address 0x45

void setup() {
  Wire_begin();
  Serial_begin(9600); 
}

void loop() {      
  // SHT30
    byte data[6];
    Wire_beginTransmission(SHT30_address);
    Wire_write(0x2C);
    Wire_write(0x06);    
    Wire_endTransmission();
      delay(500);
    Wire_requestFrom(SHT30_address, 6);
      for (byte i = 0; Wire_available() > 0; i++){
        data[i] = Wire_read();
      }  
  // конвертируем данные с датчика в понятный  
    float temp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
    float hum = ((((data[3] * 256.0) + data[4]) * 100.0) / 65535.0);
 
  // отправляем в монитор порта
    Serial_print_s("temp:");
    Serial_print_f(temp);
    Serial_print_s("hum:");
    Serial_println_f(hum);

  delay(1000);
  
     
}  


Даташит:


Видео: