Решил продолжить ряд публикаций связанных с 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:
 
Значение по умолчанию в Windows: %USERPROFILE%\Documents\Arduino\libraries
Подключим датчик к Arduino:
  Напишем скетч в ArduinoIDE:
Напишем скетч в 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.
 
 
