Как подключить DHT11 к "Ардуино" и вывести данные на дисплей. Какие характеристики у датчика температуры и влажности Ардуино? Arduino влажность почвы

Соединяем Arduino с датчиком влажности почвы FC-28, чтобы определить, когда ваша почва под растениями нуждается в воде.

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

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

Когда есть вода, почва будет проводить больше электричества, а это значит, что будет меньше сопротивление. Сухая почва плохо проводит электричество, поэтому когда воды меньше, почва проводит меньше электричества, а это значит, что сопротивление будет больше.

Датчик FC-28 можно соединить в аналоговом и цифровом режимах. Сначала мы подключим его в аналоговом режиме, а затем в цифровом.

Спецификация

Спецификации датчика влажности почвы FC-28:

  • входное напряжение: 3.3–5V
  • выходное напряжение: 0–4.2V
  • входной ток: 35mA
  • выходной сигнал: аналоговый и цифровой

Распиновка

Датчик влажности почвы FC-28 имеет четыре контакта:

  • VCC: питание
  • A0: аналоговый выход
  • D0: цифровой выход
  • GND: земля

Модуль также содержит потенциометр, который установит пороговое значение. Это пороговое значение будет сравниваться на компараторе LM393. Светодиод будет нам сигнализировать значение выше или ниже порогового.

Аналоговый режим

Для подключения датчика в аналоговом режиме нам потребуется использовать аналоговый выход датчика. Датчик влажности почвы FC-28 принимает аналоговые выходные значения от 0 до 1023.

Влажность измеряется в процентах, поэтому мы сопоставим эти значения от 0 до 100, а затем покажем их на последовательном мониторе (serial monitor). Вы можете установить различные значения влаги и повернуть водяную помпу "включено-выключено" согласно этим значениям.

Электрическая схема

Подключите датчик влажности почвы FC-28 к Ардуино следующим образом:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • A0 FC-28 → A0 Arduino

Код для аналогового выхода

Для аналогового выхода мы пишем такой код:

Int sensor_pin = A0; int output_value ; void setup() { Serial.begin(9600); Serial.println("Reading From the Sensor ..."); delay(2000); } void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,0,0,100); Serial.print("Mositure: "); Serial.print(output_value); Serial.println("%"); delay(1000); }

Объяснение кода

Прежде всего, мы определили две переменные: одну для контакта датчика влажности почвы, а другую для хранения выхода датчика.

Int sensor_pin = A0; int output_value ;

В функции setup, команда Serial.begin(9600) поможет в общении между Arduino и серийным монитором. После этого, мы напечатаем "Reading From the Sensor ...” (англ. - считываем с датчика) на обычном дисплее.

Void setup() { Serial.begin(9600); Serial.println("Reading From the Sensor ..."); delay(2000); }

В функции цикла, мы прочитаем значение от аналогового выхода датчика и сохраним значение в переменной output_value . Затем мы сопоставим выходные значения с 0-100, потому что влажность измеряется в процентах. Когда мы брали показания с сухого грунта, значение датчика было 550, а во влажном грунте значение датчика было 10. Мы сопоставили эти значения, чтобы получить значение влаги. После этого мы напечатали эти значения на последовательном мониторе.

Void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,10,0,100); Serial.print("Mositure: "); Serial.print(output_value); Serial.println("%"); delay(1000); }

Цифровой режим

Для подключения датчика влажности почвы FC-28 в цифровом режиме мы подключим цифровой выход датчика к цифровому контакту Arduino.

Модуль датчика содержит потенциометр, который использован для того чтобы установить пороговое значение. Пороговое значение после этого сравнивается со значением выхода датчика используя компаратор LM393, который помещен на модуле датчика FC-28. Компаратор LM393 сравнивает значение выхода датчика и пороговое значение, и после этого дает нам выходное значение через цифровой вывод.

Когда значение датчика больше чем пороговое значение, цифровой выход передаст нам 5В, и загорится светодиод датчика. В противном случае, когда значение датчика будет меньше чем это пороговое значение на цифровой вывод передастся 0В и светодиод не загорится.

Электрическая схема

Соединения для датчика влажности почвы FC-28 и Ардуино в цифровом режиме следующие:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • D0 FC-28 → Пин 12 Arduino
  • Светодиод положительный → Вывод 13 Ардуино
  • Светодиод минус → GND Ардуино

Код для цифрового режима

Код для цифрового режима ниже:

Int led_pin =13; int sensor_pin =8; void setup() { pinMode(led_pin, OUTPUT); pinMode(sensor_pin, INPUT); } void loop() { if(digitalRead(sensor_pin) == HIGH){ digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); delay(1000); } }

Объяснение кода

Прежде всего, мы инициализировали 2 переменные для соединения вывода светодиода и цифрового вывода датчика.

Int led_pin = 13; int sensor_pin = 8;

В функции setup мы объявляем пин светодиода как пин выхода, потому что мы включим светодиод через него. Мы объявили пин датчика как входной пин, потому как Ардуино будет принимать значения от датчика через этот вывод.

Void setup() { pinMode(led_pin, OUTPUT); pinMode(sensor_pin, INPUT); }

В функции цикла, мы считываем с вывода датчика. Если значение более высокое чем пороговое значение, то включится светодиод. Если значение датчика будет ниже порогового значения, то индикатор погаснет.

Void loop() { if(digitalRead(sensor_pin) == HIGH){ digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); delay(1000); } }

На этом вводный урок по работе с датчиком FC-28 для Ардуино мы завершаем. Успешных вам проектов.

При создании проектов, где требуется узнать влажность и температуру воздуха, необходим соответствующий датчик. При большом ассортименте на рынке разбегаются глаза, и не знаешь что выбрать. Однако есть проверенные датчики, которыми уже пользуются тысячи радиолюбителей. Одним из таких является DHT11. В этой статье будут рассмотрены особенности подключения DHT11 к "Ардуино".

О датчике DHT11

Этот датчик включает в себя гигрометр и термометр, что дает ему возможность узнавать температуру и влажность воздуха:

  • Что касается точности прибора, то тут все в порядке, учитывая его низкую цену. Процент максимальных отклонений - всего 5 %.
  • Измеряет температуру в диапазоне от 0 °С до +50 °С. Как можно заметить, при морозах с этим датчиком не поработаешь, к сожалению.
  • Что касается гигрометра внутри DHT11, он тоже неплохой, измеряет влажность в диапазоне от 20 до 80 %.
  • Скорость работы средняя, можно отправлять не более 1 запроса в секунду. Много или это мало - зависит от проекта. В большинстве случае этот датчик используют для обучения или для мелких проектов, например, измерения температуры в автоматической теплице. Там нет необходимости измерять температуру и влажность быстрее 1 раза в секунду, скорее наоборот, нужно заботиться об экономии энергии, чтобы ваш проект как можно больше работал от портативного источника питания.
  • При запросе DHT11 потребляет 2.5 мА.

Где приобрести

Приобрести описываемый прибор можно в Aliexpress совсем по низкой цене - в среднем, 50 рублей. Продается он, в основном, всегда с проводами для подключения DHT11 к "Ардуино". Но покупать датчик стоит только у проверенных продавцов, у которых положительные отзывы, так как бывает такое, что прибор работает некорректно.

Кстати, подключение DHT11 к "Ардуино" с аналоговым входом не используется, так как датчик устроен таким образом, что переводит значения из аналогового в цифровой, чтобы было удобнее работать.

Работа с DHT11

Продается датчик в 2 версиях:

  1. Чисто датчик. При покупке такой версии, вам придется подключать его через резистор, что доставляет некие неудобства при эксплуатации. Он имеет 4 контакта, но используется только 3.
  2. Модуль. На модуле 3 контакта, резистор при подключении не требуется, так как он уже имеется на модуле. Предпочтительнее брать данный вариант, так как цена не отличается, а работать с модулем намного удобнее.

Как уже упоминалось, у датчика 3 контакта: земля, питание, логика (вывод данных). Для работы и подключения DHT11 к "Ардуино" требуется:

  • Установить библиотеку, которая позволяет проводить операции с этим датчиком. Скачать ее можно в Интернете, а чтобы установить, требуется содержимое архива перенести в папку Libraries в корневой папке Arduino.
  • Питание подключаем на 5V в Arduino, GND-земля и третий контакт - вывод данных - подключаем к какому-либо цифровому пину в Arduino, например, 2.
  • После подключения DHT11 к "Ардуино", нужно залить программный код в плату. Пример кода:
#include "DHT.h" #define DHTPIN 2 // номер пина, к которому подсоединен датчик // Инициируем датчик DHT dht(DHTPIN, DHT11); void setup() { Serial.begin(9600); dht.begin(); } void loop() { // Задержка 2 секунды между измерениями delay(2000); //Считываем влажность float h = dht.readHumidity(); // Считываем температуру float t = dht.readTemperature(); // Проверка удачно прошло ли считывание. if (isnan(h) || isnan(t)) { Serial.println("Не удается считать показания"); return; } Serial.print("Влажность: "+h+" %\t"+"Температура: "+t+" *C "); }

Что же делает код:

  • Первым делом подключаем библиотеку для работы с Arduino.
  • Далее обозначаем контакт, к которому подключен DHT11 и говорим программе, какой именно датчик и на каком контакте расположен.
  • Начинаем считывать значения, узнаем, удачно ли прошло считывание. Если никаких проблем нет, на мониторе порта появляется показания влажности и температуры, которые насчитал датчик.

Вывод на дисплей

Выводить на монитор порта - это не очень интересно, давайте рассмотрим подключение DHT11 к "Ардуино" с выводом на LCD 1602 I2C.

Это маленький дисплей с платой I2C, чтобы удобнее было работать с ним. Для работы дисплея так же требуется библиотека, которую можно скачать в Интернете.

Подключается I2C к Arduino следующим образом: земля и питание, а SDA и SCL на I2C подключаем к Arduino на контакты A4 и A5, соответственно. После чего загружаем программный код в Arduino:

#include #include LiquidCrystal_I2C lcd(0x27, 16, 2); #include dht11 sensor; #define DHT11PIN 2 byte degree = // кодируем символ градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; void setup() { lcd.init(); lcd.backlight(); lcd.createChar(1, degree); // Создаем символ под номером 1 } void loop() { int chk = sensor.read(DHT11PIN); lcd.setCursor(0, 0); lcd.print("Hum: %"); lcd.setCursor(11, 0); lcd.print(sensor.humidity); lcd.setCursor(0, 1); lcd.print("temp: 1C"); lcd.setCursor(11, 1); lcd.print(sensor.temperature); delay(2000); }

Опять же, код очень простой:

  • Сначала подключаются библиотеки для работы с дисплеем и датчиком DHT11.
  • Потом кодируем символ градуса, чтобы дисплей его мог отображать.
  • После чего считываем значения с датчика и передаем их на дисплей.

В итоге при помощи дисплея и DHT11 мы получаем устройство, которое показывает влажность и температуру нашей комнаты!

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

Из этой статьи вы узнаете:

Приветствую Вас! За клавиатурой Гридин Семён и в этом посте я покажу вам, как подключается датчик температуры и влажности DHT11, продемонстрирую работу кода и библиотеки.

Датчик DHT11

DHT11 — это в небольшом пластиковом корпусе. На выходе сенсора находится цифровой сигнал, причем сразу два параметра и температура и влажность. Смысл общения с контроллером Ардуино заключается в следующем:

  1. Микроконтроллер запрашивает показания и меняет сигнал с 0 на 1.
  2. Датчик видит запрос, и отвечает ему, меняя битовый сигнал с 0 на 1.
  3. Когда они договорились между собой, датчик выдаёт ему пакет данных в размере 5 байт(40 бит), при чем в двух первых байтах температура, в третьем и четвертом влажность. Пятый байт — контрольная сумма для исключения ошибок измерения.

Характеристики сенсора температуры и влажности DHT11

  • Определение влажности в диапазоне 20-80%
  • Определение температуры от 0°C до +50°C
  • Частота опроса 1 раз в секунду

Недостаток сенсора в том, что он не обладает высокой точностью и быстродействием. Большой плюс — это цена. Ну, я думаю, вы и без меня это знаете)).

В составе сенсора находится ёмкостной датчик для измерения влажности и термистор для измерения температуры. Все показания снимает чип АЦП и выдает цифровой сигнал.

Промышленные датчики обычно выдают аналоговый сигнал на 4-20 мА или 0-10 В. Это такие сенсоры которые измеряют два параметра в паре. Например продукция компании ОВЕН ПВТ10:

Напишите в комментариях, какие вы применяете в своих проектах? Очень интересно ваше мнение...

В продаже вы можете встретить и вторую модификацию Ардуиновского сенсора — DHT22. Скажу, что диапазон измерения значительно больше, чем у старой версии.

  • определение влажности в диапазоне 0-100%
  • определение температуры от -40°C до +125°C
  • частота опроса 1 раз в 2 секунды

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

Датчики зачастую изготавливают в виде готовых шильдов. На выходе он имеет 3 пина:

  • Питание 5 В
  • Сигнал (S)
  • Земля GND

Сопротивление в 10 кОм ставить не нужно, так как оно уже впаяно в плату. Схема подключений датчика и Ардуино UNO.


Описание кода программы

Для работы с нашим датчиком требуется подключение специальной библиотеки. Она называется DHT.h . Скачать можете вот по этой ссылке .

А теперь рассмотрим с вами скетч программы для работы с сенсором.

Arduino

#include "DHT.h" #define DHTPIN 2 // номер пина, к которому подсоединен датчик // Раскомментируйте в соответствии с используемым датчиком // Инициируем датчик //DHT dht(DHTPIN, DHT22); DHT dht(DHTPIN, DHT11); void setup() { Serial.begin(9600); dht.begin(); } void loop() { // Задержка 2 секунды между измерениями delay(1000); //Считываем влажность float h = dht.readHumidity(); // Считываем температуру float t = dht.readTemperature(); // Проверка удачно прошло ли считывание. if (isnan(h) || isnan(t)) { Serial.println("Не удается считать показания"); } else { Serial.print ("Humidity: "); Serial.print (h); Serial.print ("%\t"); Serial.print ("Temperature: "); Serial.print (t); Serial.println (" *C"); } }

#include "DHT.h"

#define DHTPIN 2 // номер пина, к которому подсоединен датчик

// Раскомментируйте в соответствии с используемым датчиком

// Инициируем датчик

//DHT dht(DHTPIN, DHT22);

DHT dht (DHTPIN , DHT11 ) ;

void setup () {

Serial . begin (9600 ) ;

dht . begin () ;

void loop () {

// Задержка 2 секунды между измерениями

delay (1000 ) ;

//Считываем влажность

float h = dht . readHumidity () ;

// Считываем температуру

float t = dht . readTemperature () ;

// Проверка удачно прошло ли считывание.

if (isnan (h ) || isnan (t ) ) {

Serial . println ("Не удается считать показания" ) ;

} else {

Serial . print ("Humidity: " ) ;

Serial . print (h ) ;

Serial . print ("%\t" ) ;

Мониторинг порта в Arduino IDE:

В программе можно включить один интересный инструмент для просмотра графики. Его можно включить так Инструменты — Плоттер по последовательному соединению. Не знаю, у меня он отображает только температуру. Если кто знает, как можно задействовать несколько графиков, поделитесь в комментариях. Вот такая картинка получилась:

Если кому-то не совсем понятно, есть шикарный видеоурок от ребят.

На этом я заканчиваю свой пост. В следующей статье я напишу о . Пишите комментарии, задавайте вопросы, подписывайтесь!

Успехов вам!!!

С уважением, Гридин Семён.

Итак, датчик DHT11 имеет следующие характеристики:

  • диапазон измеряемой относительной влажности - 20..90% с погрешностью до 5%,
  • диапазон измеряемых температур - 0..50°C с погрешностью до 2°C;
  • время реакции на изменения влажности - до 15 секунд, температуры - до 30 секунд;
  • минимальный период опроса - 1 секунда.

Как видно, датчик DHT11 не отличается особой точностью, да и диапазон температур не охватывает отрицательные значения, что вряд ли подойдёт для наружных измерений в холодное время года при нашем климате. Однако малая стоимость, малый размер и простота работы с ним частично перекрывают эти недостатки. На рисунке приведён внешний вид датчика и его размеры в миллиметрах.

2 Схема подключения датчика температуры и влажности DHT11

Рассмотрим схему подключения датчика температуры и влажности DHT11 к микроконтроллеру, в частности, к Arduino.


Давайте посмотрим, что показано на рисунке.

Обозначение на рисунке Описание Примечание
MCU Микроконтроллер или одноплатный компьютер Arduino / Raspberry Pi и др.
DHT11 Датчик температуры и влажности Выводы 1Pin, 2Pin и 4Pin задействованы в схеме, один из выводов датчика - 3-ий пин 3Pin - ни к чему не подключается.
DATA Шина данных Если длина соединительного кабеля от датчика к микроконтроллеру не превышает 20 метров, то эту шину рекомендуется подтянуть к питанию резистором 5,1 кОм; если больше 20 метров - то другой подходящий номинал (меньший).
VDD Питание датчика Допустимы напряжения от ~3,0 до ~5,5 вольт постоянного тока; если используется питание ~3,3 В, то желательно использовать питающий провод не длиннее 20 см.

Соберём рассмотренную схему. Я также по традиции включу в цепь логический анализатор, чтобы можно было изучить временную диаграмму информационного обмена с датчиком.



Сенсор DHT11 часто продаётся в виде готовой сборки с необходимой обвязкой - подтягивающими резистором и фильтрующим конденсатором (как на предыдущей фотографии). Для экспериментов с Arduino я рекомендую покупать именно такой.

3 Считывание данных с сенсора DHT11 при помощи Arduino

Давайте пойдём таким путём: скачаем библиотеку для датчика DHT11 , установим её стандартным способом (распаковав в директорию \libraries\ среды разработки для Arduino).

Напишем вот такой простенький скетч. Он будет выводить в последовательный порт компьютера каждые 2 секунды сообщения об относительной влажности и температуре, считанные с датчика DHT11.

#include // подключаем библиотеку dht11 sensor; // инициализация экземпляра датчика #define DHT11PIN 8 // вывод 8 будет шиной DATA void setup() { Serial.begin(9600); } void loop() { int chk = sensor.read(DHT11PIN); Serial.print("h="); Serial.print(sensor.humidity); Serial.print("%\t"); Serial.print("t="); Serial.print(sensor.temperature); Serial.println("C"); delay(2000); }

Загрузим этот скетч в Arduino. Подключимся к Arduino с помощью монитора COM-порта и увидим следующее:


Видно, что данные и о влажности, и о температуре считываются и выводятся в терминалку.

4 Временная диаграмма информационного обмена датчика температуры и влажности DHT11 с микроконтроллером

С помощью временной диаграммы, полученной с логического анализатора, разберёмся, как осуществляется информационный обмен.

Для связи с микроконтроллером датчик температуры и влажности DHT11 использует однопроводный последовательный пакетный интерфейс. Один информационный пакет длительностью около 4 мс содержит: 1 бит запроса от микроконтроллера, 1 бит ответа датчика и 40 битов данных от датчика (16 битов информации о влажности, 16 битов информации о температуре и 8 проверочных битов). Давайте подробнее рассмотрим временную диаграмму информационного обмена Arduino с датчиком DHT11.



Временная диаграмма информационного обмена сенсора DHT11 с микроконтроллером

Из рисунка видно, что есть два типа импульсов: короткие и длинные. Короткие в данном протоколе обмена обозначают нули, длинные импульсы - единицы.

Итак, первые два импульса - это запрос Arduino к DHT11 и, соответственно, ответ датчика. Далее идут 16 бит влажности. Причём они разделены на байты, старший и младший, старший слева. То есть на нашем рисунке данные о влажности такие: 0001000000000000 = 00000000 00010000 = 0x10 = 16% относительной влажности.

Данные о температуре, аналогично: 0001011100000000 = 00000000 00010111 = 0x17 = 23 градуса Цельсия.

Контрольная сумма - это всего-навсего арифметическое суммирование 4-х полученных байтов данных:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 в двоичной системе или 0 + 16 + 0 + 23 = 39 в десятичной.

5 Работа с датчиком DHT11 без библиотеки

Теперь мы знаем достаточно для того чтобы написать собственную программу для работы с сенсором температуры и влажности DHT11 без использования сторонних библиотек. Напишем скетч, который будет опрашивать раз в секунду датчик и выводить в последовательный порт компьютера принятый пакет и данные о температуре, влажности, а также проверочный байт. На 13-ую ножку Arduino выведем контрольный сигнал и, подключившись в ней логическим анализатором, проверим, что мы верно считываем информацию от датчика.

Скетч для работы с DHT11 и Arduino без сторонних библиотек (разворачивается) #define DHT11pin 8 // для подключения шины DATA сенсора DHT11 #define LEDpin 13 // используем для контроля const int NUM_READS = 500; // зависит от частоты кварца и подбирается экспериментально long readsCounter = 0; // счётчик циклов чтения int reads; // сырой массив считанных значений void setup() { Serial.begin(9600); pinMode(DHT11pin, INPUT); pinMode(LEDpin, OUTPUT); } void loop() { if (readsCounter void initLink() { pinMode(DHT11pin, OUTPUT); digitalWrite(DHT11pin, LOW); delay(15); pinMode(DHT11pin, INPUT); } // Читает данные датчика DHT11 и записывает в массив: void readSerialDHT11() { int sensorValue = digitalRead(DHT11pin); reads = sensorValue; digitalWrite(LEDpin, sensorValue); // для проверки выводим на отдельную ножку readsCounter++; } // Обрабатывает массив данных за цикл с DHT11: void processDht11Data() { byte dht11Data = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // обработанный массив (биты пакета) int zeroLen = 1; // минимальная длительность бита "0" int oneLen = 3 * zeroLen; // примерная длительность бита "1" int wrongData = 6 * zeroLen; // допуск по длительности для данных int currentBitLen = 0; // длительность текущего бита int bitPosition = 0; // позиция бита в пакете for (int i=1; i = zeroLen) && (currentBitLen <= oneLen)) { dht11Data = 0; bitPosition++; } else if ((currentBitLen > oneLen) && (currentBitLen <= wrongData)) { dht11Data = 1; bitPosition++; } currentBitLen = 0; } else { if (reads[i] == HIGH) { // при сигнале HIGH currentBitLen += 1; // считаем длительность текущего бита } } } for (int i=0; i void getHumidTemperatureParity(byte data) { word humidity = 0; byte hLow = 0; byte hHi = 0; word temperature = 0; byte tLow = 0; byte tHi = 0; byte parity = 0; for (int i=1; i<9; i++){ //пропускаем первый импульс-подтверждение hLow = hLow | (data[i] << (8 - i)); } for (int i=9; i<17; i++){ hHi = hHi | (data[i] readsCounter = 0; }

Небольшая таблица даст дополнительные разъяснения к предлагаемому решению.

Функция Назначение

В статье рассмотрены основы работы с недорогими датчиками температуры и влажности серии DHT.

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

Технические характеристики DHT11 и DHT22

Существуют две версии сенсоров DHT. Выглядят они почти одинаково. Распиновка тоже одинаковая. Основные отличия - в технических характеристиках:

  • Очень дешевый.
  • Питание от 3 до 5В.
  • Рассчитан на измерение уровня влажности в диапазоне от 20% до 80%. При этом точность измерений находится в диапазоне 5%.
  • Измеряет температуру в диапазоне от 0 до 50 градусов с точностью плюс-минус 2%.
  • Частота измерений не более 1 Гц (одно измерение в секунду).
  • Размер корпуса: 15.5 мм x 12 мм x 5.5 мм.
  • Дешевый.
  • Питание от 3 до 5В.
  • Максимально потребляемый ток - 2.5мА при преобразовании (при запросе данных).
  • Рассчитан на измерение уровня влажности в диапазоне от 0% до 100%. При этом точность измерений находится в диапазоне 2%-5%.
  • Измеряет температуру в диапазоне от -40 до 125 градусов с точностью плюс-минус 0.5 градусов по Цельсию.
  • Частота измерений до 0.5 Гц (одно измерение за 2 секунды).
  • Размер корпуса: 15.1 мм x 25 мм x 7.7 мм.
  • 4 коннектора. Расстояние между соседними - 0.1".

Как видите, DHT22 более точный и имеет больший диапазон измеряемых значений. Оба датчика имеют по одному цифровому выходу. Запросы к ним можно отправлять не чаще чем один в секунду или две.

Подключение датчиков DHT к Arduino

Подключаются датчики легко. Так как у них достаточно длинные коннекторы 0.1", можно устанавливать их непосредственно на макетную или монтажную плату (смотрите на рисунке ниже).


Непосредственное подключение к Arduino тоже простое. На сенсоре 4 коннектора:

  • Питание (VCC) - от 3 до 5 В.
  • Вывод данных.
  • Не подключается.
  • Земля.

Коннектор 3 просто игнорируйте, он не подключается. Желательно подключить подтягивающий резистор на 10 кОм между питанием и сигналом. На Arduino есть встроенные резисторы, но их номинал 100кОм нам не подойдет.

На рисунке ниже приведена схема подключения DHT11 к Arduino. Подключите сигнал с датчика к пину 2, чтобы схема соответствовала примеру скетча, который приведен ниже. Этот пин можно изменить с соответствующими правками в коде.


Считывание данных с датчиков DHTxx

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