Датчик температуры и влажности
Датчик температуры и влажности (DHT11) — простой, дешёвый, но медленный цифровой датчик температуры и влажности, который при этом отлично подходят для хобби-проектов на Arduino. Датчики серии DHT состоят из двух основных частей: ёмкостный датчик влажности и термистор. Также в корпусе установлен простенький чип для преобразования аналогового сигнала в цифровой. Снять цифровой сигнал с датчиков достаточно просто, даже не смотря на то, что сигналы с обоих датчиков передаются по одной “ноге”. Подключение датчика стандартное – по трём проводам (+, – и сигнальный).
Внешний вид | Обозначение на схеме | Основные характеристики |
|
||
Пример подключения к Arduino | ||
Работать с датчиком можно и напрямую, но удобнее всего это делать, используя готовые библиотеки для датчиков такого типа. Это библиотеки:
- DHT sensor library by Adafruit (можно найти в галерее библиотека Arduino);
- Adafruit_sensor (можно скачать с нашего сайта или со странички разработчиков на GitHub).
Для того, чтобы послать данные с датчика в монитор порта, можно использовать следующий скетч:
#include <DHT.h> // подключаем библиотеки, необходимые #include <DHT_U.h> // для работы датчика температуры и влажности #define DHTPIN 2 // указываем номер пина, к которому подсоединен датчик DHT dht(DHTPIN, DHT11); // указываем тип датчика (если у вас старшая версия, укажите DHT22) void setup() { Serial.begin(9600); // инициализируем последовательный порт dht.begin(); // инициализируем датчик температуры и влажности } void loop() { float h = dht.readHumidity(); // считываем влажность в переменную h float t = dht.readTemperature(); // считываем температуру в переменную t if (isnan(h) || isnan(t)) // проверяем, не произошло ли ошибки при получении данных { Serial.println("Не удается считать показания"); // посылаем в порт сообщение, если произошла ошибка return; } Serial.print("Температура: "); // посылаем в порт значение температуры Serial.print(t); Serial.print("(C°) "); Serial.print("Влажность: "); // посылаем в порт значение влажности Serial.print(h); Serial.println("(%) "); delay(1000); // делаем паузу перед следующим считыванием данных с датчика }