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