Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Гайд по использованию датчика DHT11/DHT22 вместе с Arduino

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2703 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Гайд по использованию датчика DHT11/DHT22 вместе с Arduino[1]

Это руководство по популярному датчику DHT11/DHT22, собирающему данные о температуре и влажности окружающей среды. Гайд объясняет, как работает этот датчик, демонстрирует некоторые его функции, а также содержит скетч, который можно использовать для своих проектов.

Описание

Датчики DHTxx, измеряющие температуру и влажность, очень популярны среди людей, делающих проекты на базе Arduino – во многом благодаря относительной дешевизне.

Внутри этих датчиков есть чип, который выполняет аналогово-цифровые преобразования, а также разделяет цифровой сигнал на данные о температуре и данные о влажности. Эти данные очень легко считываются микроконтроллером:

Humidity-sensor.jpg

Отличия в характеристиках DHT11 и DHT22

Датчик DHTxx выпускается в двух версиях.

DHT11

  • Диапазон измерения влажности: 20-90%
  • Погрешность изменения: +/- 5%
  • Сходимость: +/- 1%
  • Отклонение в измерениях с течением времени: +/- 1% в год
  • Цена: от 1 до 5 долларов

DHT22

  • Диапазон измерения влажности: 0-100%
  • Погрешность изменения: +/- 2%
  • Сходимость: +/- 1%
  • Отклонение в измерениях с течением времени: +/- 0,5% в год
  • Цена: от 4 до 10 долларов

Как видите, DHT22 чуть точнее, чем DHT11.

Где купить?

Обе модели можно купить, к примеру, на eBay:

Rsz dht-11.jpg

Подключение DHT11 к плате Arduino

Для этого проекта потребуются следующие компоненты:

Ниже – схема того, как подключить DHT11 к Arduino:

Humidity schematics.jpg

Как подключать контакты:

  • Контакт 1 – к VCC (от 3V до 5V)
  • Контакт 2 – для вывода данных
  • Контакт 3 – не подключен
  • Контакт 4 – к GND

Установка библиотеки DHT и загрузка кода

Во-первых, в IDE Arduino нужно установить библиотеку DHT:

  1. Загрузите библиотеку DHT отсюда.
  2. Распакуйте ее.
  3. Установите библиотеку DHT в IDE Arduino. Для этого поместите папку, находящуюся в распакованной папке, по маршруту «C:\Users\User\Documents\Arduino\libraries»
  4. Перезапустите IDE Arduino.

Во-вторых, загружаем код проекта на плату Arduino.

  1. Либо скопируйте в IDE Arduino код, показанный ниже, либо кликните в IDE Arduino на Файл > Примеры > DHT sensor library > DHTtester (File > Examples > DHT sensor library > DHTtester).
  2. Загрузите код на Arduino.
  1. // Тестовый скетч-пример для датчиков DHT,
  2. // измеряющих температуру и влажность;
  3. // написан ladyada, авторским правом не защищен
  4.  
  5. #include "DHT.h"
  6.  
  7. #define DHTPIN 2     // контакт, к которому подключаемся
  8.  
  9. // определите, каким именно датчиком вы пользуетесь,
  10. // и расскомментируйте соответствующую строчку:
  11. #define DHTTYPE DHT11   // DHT 11
  12. //#define DHTTYPE DHT22   // DHT 22  (AM2302)
  13. //#define DHTTYPE DHT21   // DHT 21 (AM2301)
  14.  
  15. // инициализируйте датчик DHT для Arduino, работающей на 16 МГц:
  16. DHT dht(DHTPIN, DHTTYPE);
  17.  
  18. void setup() {
  19.   Serial.begin(9600);
  20.   Serial.println("DHTxx test!");  //  "Тест DHTxx!"
  21.  
  22.   dht.begin();
  23. }
  24.  
  25. void loop() {
  26.   // 2-секундная задержка между измерениями:
  27.   delay(2000);
  28.  
  29.   // считывание данных о температуре и влажности
  30.   // занимает около 50 мс; кроме того, считанные данные
  31.   // могут запаздывать примерно на 2 секунды
  32.   // (это очень медленный датчик):
  33.   float h = dht.readHumidity();
  34.   // считываем температуру в градусах Цельсия:
  35.   float t = dht.readTemperature();
  36.   // считываем температуру в градусах Фаренгейта:
  37.   float f = dht.readTemperature(true);
  38.  
  39.   // проверяем, корректно ли прочитались данные,
  40.   // и если нет, то выходим и пробуем снова:
  41.   if (isnan(h) || isnan(t) || isnan(f)) {
  42.     Serial.println("Failed to read from DHT sensor!");
  43.     // "Не удалось прочитать данные с датчика DHT!"
  44.     return;
  45.   }
  46.  
  47.   // рассчитываем тепловой индекс;
  48.   // для этих расчетов температура должна быть в Фаренгейтах!
  49.   float hi = dht.computeHeatIndex(f, h);
  50.  
  51.   Serial.print("Humidity: ");  //  "Влажность: "
  52.   Serial.print(h);
  53.   Serial.print(" %\t");
  54.   Serial.print("Temperature: ");  //  "Температура: "
  55.   Serial.print(t);
  56.   Serial.print(" *C ");
  57.   Serial.print(f);
  58.   Serial.print(" *F\t");
  59.   Serial.print("Heat index: ");  //  "Тепловой индекс: "
  60.   Serial.print(hi);
  61.   Serial.println(" *F");
  62. }

Демонстрация

В этом проекте плата Arduino делает замеры температуры и влажности, а результат отображается на мониторе порта. Примерно так:

Serial monitor.jpg

См.также

Внешние ссылки

  1. randomnerdtutorials.com - Complete Guide for DHT11/DHT22 Humidity and Temperature Sensor With Arduino