Датчик температуры и влажности (Troyka-модуль)
Датчик температуры и влажности способен определять температуру и влажность окружающей среды.
Подключение и настройка
Датчик общается с управляющей электроникой по трём проводам.
При подключении к Arduino или Iskra JS удобно использовать Troyka Shield. С Troyka Slot Shield можно обойтись без лишних проводов.
Примеры работы
Рассмотрим примеры работы датчика температуры и влажности DHT11 в зависимости от управляющей платформы.
Пример для Arduino
В качестве примера выведем в Serial-порт текущее значение температуры и влажности. Для запуска примера скачайте и установите библиотеку TroykaDHT.
- testDHT.ino
// библиотека для работы с датчиками серии DHT #include <TroykaDHT.h> // создаём объект класса DHT // передаём номер пина к которому подключён датчик и тип датчика // типы сенсоров: DHT11, DHT21, DHT22 DHT dht(4, DHT11); void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(9600); dht.begin(); } void loop() { // считывание данных с датчика dht.read(); // проверяем состояние данных switch(dht.getState()) { // всё OK case DHT_OK: // выводим показания влажности и температуры Serial.print("Temperature = "); Serial.print(dht.getTemperatureC()); Serial.println(" C \t"); Serial.print("Temperature = "); Serial.print(dht.getTemperatureK()); Serial.println(" K \t"); Serial.print("Temperature = "); Serial.print(dht.getTemperatureF()); Serial.println(" F \t"); Serial.print("Humidity = "); Serial.print(dht.getHumidity()); Serial.println(" %"); break; // ошибка контрольной суммы case DHT_ERROR_CHECKSUM: Serial.println("Checksum error"); break; // превышение времени ожидания case DHT_ERROR_TIMEOUT: Serial.println("Time out error"); break; // данных нет, датчик не реагирует или отсутствует case DHT_ERROR_NO_REPLY: Serial.println("Sensor not connected"); break; } // ждём две секунды delay(2000); }
Пример для Iskra JS
Выведем данные температуры и влажности в консоль Espruino Web IDE.
- test-dht.js
// подключаем библиотеку DHT11 и создаём объект для работы с датчиком var dht = require("DHT11").connect(P4); // считываем данные с датчика // выводим показания температуры и влажности в консоль dht.read(function (a) { console.log("Temp is "+a.temp.toString()+" and RH is "+a.rh.toString()); });
Протокол датчика DHT
Выходом датчика является цифровой сигнал. Температура и влажность передаются по одному сигнальному проводу (S
). DHT11 общается с принимающей стороной, такой как Arduino по собственному протоколу. Коммуникация двунаправлена и в общих чертах выглядит так:
- Микроконтроллер говорит о том, что хочет считать показания. Для этого он устанавливает сигнальную линию в 0 на некоторое время, а затем устанавливает её в 1
- Сенсор подтверждает готовность отдать данные. Для этого он аналогично сначала устанавливает сигнальную линию в 0, затем в 1
- После этого сенсор передаёт последовательность 0 и 1, последовательно формирующих 5 байт (40 бит). В первых двух байтах передаётся температура, в третьем-четвёртом — влажность, в пятом — контрольная сумма, чтобы микроконтроллер смог убедиться в отсутствии ошибок считывания
Благодаря тому, что сенсор делает измерения только по запросу, достигается энергоэффективность: пока общения нет, датчик потребляет ток 100 мкА.
Элементы платы
Датчик DHT11
Цифровой датчик DHT11 является составным датчиком, который выдаёт калиброванный цифровой сигнал с показаниями температуры и влажности.
Сенсор включает в себя резистивный компонент измерения влажности и компонент измерения температуры с отрицательным температурным коэффициентом (NTC), которые подключены к высокопроизводительному 8-битному микроконтроллеру.
Каждый датчик DHT11 проходит калибровку на заводе изготовителе. Коэффициенты калибровки хранятся в однократно программируемой энергонезависимой памяти и используются во внутренних процессах обработки сигнала.
Контакты подключения 3-проводного шлейфа
Модуль подключается к управляющей электронике по трём проводам. Назначение контактов 3-проводного шлейфа:
- Питание (
V
) — красный провод. На него должно подаваться напряжение питания от 3,3 до 5 В; - Земля (
G
) — чёрный провод. Должен быть соединён с землёй микроконтроллера; - Сигнальный (
S
) — жёлтый провод. Подключается к цифровому выходу микроконтроллера. Через него сенсор общается с микроконтроллером по собственному протоколу.
Характеристики
- Напряжение питания: 3,3–5 В
- Потребляемый ток:
- в режиме запроса данных: 2,5 мА
- в режиме покоя: 100 мкА
- Диапазон измеряемой температуры: 0–50 °С
- Погрешность температуры: ±2 °С
- Диапазон влажности: 20–90%
- Погрешность влажности: ±5%
- Габариты: 25×25 мм