Решил продолжить ряд публикаций связанных с 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:
#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.