Использование датчика температуры и влажности DHT11
Цель работы
Научиться использовать датчик температуры и влажности DHT11 с Arduino
Задачи работы
- Установить библиотеки для работы с датчиком DHT11
- Собрать установку и разработать скетч для Arduino для считывания показаний датчика DHT11
Инструменты для выполения работы
- Компьютер с подключением к сети Internet
- Плата Arduino с USB интерфейсом (например, Arduino Uno)
Теоретическая часть
Датчик DHT11 представляет собой недорогой датчик температуры и относительной влажности с цифровым выходом. Диапазон измерения температуры - от 0 до 50 градусов Цельсия с точностью 2 градуса, влажности - от 20% до 90% с точностью 5%. Данные передаются через 1Wire интерфейс, для питания датчика необходимо постоянное напряжение от 3 до 5.5 вольт. Потребление тока составляет до 2.5 мА. Для работы с датчиком разработаны несколько готовых библиотек, одна из которых будет использоваться в данной работе.
Выполнение работы
Установка библиотеки для работы с датчиком DHT11
Создаем новый скетч и сохраняем его с названием DHTTest. Проверяем, правильно ли выбрана плата и порт. Открываем менеджер библиотек и находим в списке библиотек две: "Adafruit Unified Sensor" и "DHT sensor library". Устанавливаем обе.
Подключаем к проекту библиотеку "DHT sensor library". В начале скетча должны появиться строки
#include <DHT.h>
#include <DHT_U.h>
Сборка установки и разработка скетча для Arduino для считывания показаний датчика DHT11
Подключаем датчик DHT к Arduino: "-" к gnd, "+" к 5V, средний разъем "out" к цифровому пину 7.
Дорабатываем скетч. До функции setup() создаем глобальную переменную dht, указывая номер цифрового пина 7 и тип датчика DHT11
DHT_Unified dht(7,DHT11);
В функции setup() инициальзируем последовательный порт и датчик
Serial.begin(9600);
dht.begin();
Далее модифицируем функцию loop(), в ней производим следующие действия:
создаем переменную под значения датчика и считываем в нее значение температуры, если значение верное, выводим в Serial температуру, в противном случае выводим сообщение об ошибке
sensors_event_t event;
dht.temperature().getEvent(&event);
if(isnan(event.temperature))
Serial.println("Error reading temperature!");
else
{
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println(" *C");
}
Повторяем аналогично для влажности
dht.humidity().getEvent(&event);
if(isnan(event.relative_humidity))
Serial.println("Error reading humidity!");
else
{
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
Делаем задержку пол-секунды
delay(500);
Открываем монитор порта, убеждаемся в наличии данных с датчика.
| |
#include <DHT.h>
#include <DHT_U.h>
DHT_Unified dht(13,DHT11);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
sensors_event_t event;
dht.temperature().getEvent(&event);
if(isnan(event.temperature))
Serial.println("Error reading temperature!");
else
{
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println(" *C");
}
dht.humidity().getEvent(&event);
if(isnan(event.relative_humidity))
Serial.println("Error reading humidity!");
else
{
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
delay(500);
}
|