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.
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 делает замеры температуры и влажности, а результат отображается на мониторе порта. Примерно так:
См.также
Внешние ссылки