Arduino:Примеры/Гайд по использованию датчика DHT11/DHT22 вместе с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Гайд по использованию датчика DHT11/DHT22 вместе с Arduino[1]
Это руководство по популярному датчику DHT11/DHT22, собирающему данные о температуре и влажности окружающей среды. Гайд объясняет, как работает этот датчик, демонстрирует некоторые его функции, а также содержит скетч, который можно использовать для своих проектов.
Описание
Датчики DHTxx, измеряющие температуру и влажность, очень популярны среди людей, делающих проекты на базе Arduino – во многом благодаря относительной дешевизне.
Внутри этих датчиков есть чип, который выполняет аналогово-цифровые преобразования, а также разделяет цифровой сигнал на данные о температуре и данные о влажности. Эти данные очень легко считываются микроконтроллером:

Отличия в характеристиках DHT11 и DHT22
Датчик DHTxx выпускается в двух версиях.
DHT11
- Диапазон измерения влажности: 20-90%
- Погрешность изменения: +/- 5%
- Сходимость: +/- 1%
- Отклонение в измерениях с течением времени: +/- 1% в год
- Цена: от 1 до 5 долларов
DHT22
- Диапазон измерения влажности: 0-100%
- Погрешность изменения: +/- 2%
- Сходимость: +/- 1%
- Отклонение в измерениях с течением времени: +/- 0,5% в год
- Цена: от 4 до 10 долларов
Как видите, DHT22 чуть точнее, чем DHT11.
Где купить?
Обе модели можно купить, к примеру, на eBay:

Подключение DHT11 к плате Arduino
Для этого проекта потребуются следующие компоненты:
- Плата Arduino – ссылка на eBay
- Датчик DHT11 – ссылка на eBay
- Макетная плата – ссылка на eBay
- Резистор на 10 кОм
Ниже – схема того, как подключить DHT11 к Arduino:

Как подключать контакты:
- Контакт 1 – к VCC (от 3V до 5V)
- Контакт 2 – для вывода данных
- Контакт 3 – не подключен
- Контакт 4 – к GND
Установка библиотеки DHT и загрузка кода
Во-первых, в IDE Arduino нужно установить библиотеку DHT:
- Загрузите библиотеку DHT отсюда.
- Распакуйте ее.
- Установите библиотеку DHT в IDE Arduino. Для этого поместите папку, находящуюся в распакованной папке, по маршруту «C:\Users\User\Documents\Arduino\libraries»
- Перезапустите IDE Arduino.
Во-вторых, загружаем код проекта на плату Arduino.
- Либо скопируйте в IDE Arduino код, показанный ниже, либо кликните в IDE Arduino на Файл > Примеры > DHT sensor library > DHTtester (File > Examples > DHT sensor library > DHTtester).
- Загрузите код на Arduino.
// Тестовый скетч-пример для датчиков DHT,
// измеряющих температуру и влажность;
// написан ladyada, авторским правом не защищен
#include "DHT.h"
#define DHTPIN 2 // контакт, к которому подключаемся
// определите, каким именно датчиком вы пользуетесь,
// и расскомментируйте соответствующую строчку:
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// инициализируйте датчик DHT для Arduino, работающей на 16 МГц:
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!"); // "Тест DHTxx!"
dht.begin();
}
void loop() {
// 2-секундная задержка между измерениями:
delay(2000);
// считывание данных о температуре и влажности
// занимает около 50 мс; кроме того, считанные данные
// могут запаздывать примерно на 2 секунды
// (это очень медленный датчик):
float h = dht.readHumidity();
// считываем температуру в градусах Цельсия:
float t = dht.readTemperature();
// считываем температуру в градусах Фаренгейта:
float f = dht.readTemperature(true);
// проверяем, корректно ли прочитались данные,
// и если нет, то выходим и пробуем снова:
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
// "Не удалось прочитать данные с датчика DHT!"
return;
}
// рассчитываем тепловой индекс;
// для этих расчетов температура должна быть в Фаренгейтах!
float hi = dht.computeHeatIndex(f, h);
Serial.print("Humidity: "); // "Влажность: "
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: "); // "Температура: "
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: "); // "Тепловой индекс: "
Serial.print(hi);
Serial.println(" *F");
}
Демонстрация
В этом проекте плата Arduino делает замеры температуры и влажности, а результат отображается на мониторе порта. Примерно так:

См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino