HDT22, HDT21, HDT11 и Arduino

Решил продолжить ряд публикаций связанных с Arduino.
Рассмотрим на примере датчика HDT21 (AM2301) подключение и вывод температуры и влажности.

В серии HDT датчиков представлены три экземпляра HDT11, HDT21, HDT22.
Все датчики цифровые.

Краткие характеристики датчиков
Наименование DHT11 DHT21 DHT22
Температурный диапазон 0°C до +50°C -40°C до +80°C -40°C до +125°C
Точность температуры ±2 °C ±0,5 °C ±0,5 °C
Диапазон влажности 20-80% 0-100% 0-100%
Погрешность определения влажности ±5% ±2% ±2%

На aliexpress и других интернет-площадках представлены аналоги данных датчиков:

Из вышеуказанной таблицы сравнения можно сделать вывод о ограниченной пригодности датчика DHT11 (AM2320) в виду сильно ограниченного диапазона измеряемой температуры и влажности, так же минус за точность измерения.

Перейдем к Arduino

Для работы с данными датчиками проще всего использовать стороннею библиотеку «DHT», ее можно безвозмездно скачать с github автора.
После скачивания библиотеки распакуйте ее к библиотекам Arduino IDE по пути, который можно посмотреть в настройках Arduino IDE:
HDT22, HDT21, HDT11 и Arduino

Значение по умолчанию в Windows: %USERPROFILE%\Documents\Arduino\libraries

Подключим датчик к Arduino:
HDT22, HDT21, HDT11 и ArduinoНапишем скетч в ArduinoIDE:

#include "DHT.h"
#define DHTPIN 4     // Номер цифрового пина

// В данном примере используем датчик DHT22
// Если используется DHT11 или DHT22, то раскомментируете нужную строку
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(9600); 
  dht.begin();
}

void loop() {
  // На получение данных уходит около 250 миллисекунд
  // Не опрашивайте датчик чаще одного раза в 2 секунды (delay(2000))
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Проверка наличие данных, если данных нет, то будет ошибка
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print(h);
    Serial.print(" ");
    Serial.println(t);
    }
delay(2000);     
}

И загрузим его
В мониторе серийного порта получим две цифры: влажность и давление:

30.30 22.10
30.30 22.10
30.30 22.20

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

 

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.