Найти в Дзене
иван таравков

Проект 21: Датчик влажности и температуры DHT11

Проект 21: Датчик влажности и температуры DHT11
О
В этом эксперименте мы рассмотрим датчик для измерения относительной влажности воздуха и температуры DHT11 и создадим проект вывода показаний датчика на экран ЖКИ WH1602.
Необходимые компоненты:

Проект 21: Датчик влажности и температуры DHT11

О

В этом эксперименте мы рассмотрим  датчик для измерения относительной влажности воздуха и температуры DHT11  и создадим проект вывода показаний датчика на экран ЖКИ WH1602.
 
 Необходимые компоненты:
 • контроллер Arduino UNO R3;
 • плата для прототипирования;
 • датчик DHT11;
 • LCD-экран WH1602;
 • резистор 50 Ом;
 • потенциометр 1 кОм;
 • провода папа-папа.
 • внешний блок питания +5 В.
 
 Датчик DHT11 (см. рис. 21.1) не отличается высоким быстродействием и  точностью, однако может найти свое применение в радиолюбительских  проектах из-за своей невысокой стоимости. Датчик DHT11 состоит из  емкостного датчика влажности и термистора. Кроме того, датчик содержит в  себе простенький АЦП для преобразования аналоговых значений влажности и  температуры.
В этом эксперименте мы рассмотрим датчик для измерения относительной влажности воздуха и температуры DHT11 и создадим проект вывода показаний датчика на экран ЖКИ WH1602. Необходимые компоненты: • контроллер Arduino UNO R3; • плата для прототипирования; • датчик DHT11; • LCD-экран WH1602; • резистор 50 Ом; • потенциометр 1 кОм; • провода папа-папа. • внешний блок питания +5 В. Датчик DHT11 (см. рис. 21.1) не отличается высоким быстродействием и точностью, однако может найти свое применение в радиолюбительских проектах из-за своей невысокой стоимости. Датчик DHT11 состоит из емкостного датчика влажности и термистора. Кроме того, датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры.

Рис. 21.1. Датчик DHT11

Датчик имеет 4 вывода в одну линию с шагом 2,54 мм:
 
 • 1 – VCC (питание 3–5 В);
 • 2 – DATA (вывод данных);
 • 3 – не используется;
 • 4 – GND (земля).
 
 Протокол обмена – однопроводный, по структуре весьма похож на DS18B20, но с важными оговорками:
 
 • DHT11 не умеет работать в «паразитном» режиме (питание по линии данных);
 • каждый DS18B20 имеет персональный идентификатор, что дает возможность  подключения нескольких таких датчиков к одному пину Arduino. Однако у  DHT11 подобной возможности нет – один датчик будет использовать строго  один цифровой пин.
 
 В нашем эксперименте мы будем считывать  данные с датчика DHT11 и выводить на экран ЖКИ WH1602, который мы  рассматривали в эксперименте 16. Рекомендуемая схема подключения к  Arduino содержит обязательный для однопроводных линий резистор-подтяжку к  VCC, в качестве опции рекомендуется конденсатор (фильтр по питанию  между VCC и GND). У нас в наличии DHT11 в виде модуля, его можно  подключать к Arduino напрямую – резистор и конденсатор там уже есть.  Схема подключения датчика DHT11 и WH1602 к плате Arduino показана на  рис. 21.2. Для питания ЖКИ нужен отдельный блок питания +5 В.
Датчик имеет 4 вывода в одну линию с шагом 2,54 мм: • 1 – VCC (питание 3–5 В); • 2 – DATA (вывод данных); • 3 – не используется; • 4 – GND (земля). Протокол обмена – однопроводный, по структуре весьма похож на DS18B20, но с важными оговорками: • DHT11 не умеет работать в «паразитном» режиме (питание по линии данных); • каждый DS18B20 имеет персональный идентификатор, что дает возможность подключения нескольких таких датчиков к одному пину Arduino. Однако у DHT11 подобной возможности нет – один датчик будет использовать строго один цифровой пин. В нашем эксперименте мы будем считывать данные с датчика DHT11 и выводить на экран ЖКИ WH1602, который мы рассматривали в эксперименте 16. Рекомендуемая схема подключения к Arduino содержит обязательный для однопроводных линий резистор-подтяжку к VCC, в качестве опции рекомендуется конденсатор (фильтр по питанию между VCC и GND). У нас в наличии DHT11 в виде модуля, его можно подключать к Arduino напрямую – резистор и конденсатор там уже есть. Схема подключения датчика DHT11 и WH1602 к плате Arduino показана на рис. 21.2. Для питания ЖКИ нужен отдельный блок питания +5 В.

Рис. 21.2. Схема подключения датчика DHT11 и WH1602 к Arduino

Порядок подключения:

1. Подключаем датчик DHT11 и WH1602 по схеме на рис. 21.2.
2. Загружаем в плату Arduino скетч из листинга 21.1.
3. Смотрим на экране дисплея показания относительной влажности и температуры.Приступим к написанию скетча. Для работы с датчиками DHT11 (DHT21, DHT22) в Arduino есть библиотека OneWire. Содержимое скетча для чтения данных с датчика и вывода на экран индикатора WH1602 показано в листинге 21.1.#include "DHT.h"
#define DHTPIN 2 // пин подключения контакта DATA
#define DHTTYPE DHT11 // DHT 11
#include <LiquidCrystal.h>
// инициализация с указанием контактов подключения
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
lcd.begin(16,2); // режим работы
dht.begin();
}
void loop()
{
// получение с датчика данных влажности и температуры
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) // ошибка получения данных
{
lcd.clear();lcd.setCursor(0,0);
lcd.print("Failed to read");
}
else // вывести данные на ЖКИ
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Humidity: ");lcd.print(h); lcd.println(" %");
lcd.setCursor(0,1);
lcd.print("Temp: "); lcd.print(t);lcd.println(" *C");
}
delay(2000); // пауза перед следующим измерением
}