Датчик в связке с ардуино для измерения влажности воздуха и температуры. Подключение датчика DHT11 или DHT22 к Ардуино Измерение температуры и влажности ардуино

Тарас Каленюк

Время на чтение: 4 минуты

А А

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

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

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

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

Благодаря огромному количеству разнообразных гнезд и контактов, а также возможности соединять несколько плат в одну систему, возможности Ардуино становятся практический неограниченными. Плата, позволяющая расширить количество возможностей, называется шилд (shield)

Годами не стихающий интерес к Ардуино можно объяснить многими причинами, среди которых простота и доступность. Программы для устройств пишутся на С++, а загружаются они при помощи приложения Arduino IDE, которое доступно к бесплатному скачиванию для любого ПО.

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

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

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

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

Сравнительные характеристики DHT11 и DHT22 (если нет уточнений, значит данный параметр подходит для обоих типов):

  1. питание 3-5 В;
  2. потребляемый ток 2,5 мА;
  3. габариты 15,1/12/5,5 миллиметров;
  4. четыре коннектора, расположенных на расстоянии 0,1“ друг о друга;
  5. диапазон измерения влажности 20-80% с погрешностью 5% у 11 модели; от нуля до ста процентов с погрешностью 2-5%, в зависимости от уровня влаги, у DHT22;
  6. температурный диапазон у DHT11 составляет 0-50 градусов Цельсия, а у его конкурента он значительно шире – -40/+125, причем погрешности измерения во втором случае практически равны нулю;
  7. частота DHT11 равна 1 Гц; у DHT22 – 0,5 Гц.

Исходя из перечисленных выше характеристик, можно сделать вывод, что датчик температуры и влажности Ардуино DHT22 является более точным прибором, способным работать с бОльшим диапазоном измеряемых величин, но, естественно, это скажется и на его цене.

Стоит отметить, что оба этих прибора выпускаются в двух вариантах:

  • как отдельный датчик;
  • как готовый модуль.

Если пользователь решает собрать прибор с нуля, имея на руках только «голый» датчик, необходимо будет дополнительно иметь плату, макетную доску, светодиоды, резистор с показателем 10 К.

Если же посчастливилось приобрести уже модуль, то все предельно упрощается простым подключением его к Ардуино.

В обоих случаях необходимо строго следовать инструкции и соблюдать полярность.

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

Датчик температуры DS18B20

Данный прибор направлен на измерение уровня температуры заданного объекта или среды. Температура, с которой может работать термодатчик составляет от -55 до +125 градусов Цельсия.

Датчик температуры DS18B20 преобразует полученные данные в числовой код (9-12 бит) и передает их в головную систему с помощью протокола 1-Wire.

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

Время сбора данных при максимальном разрешении составляет 750 мс.

Терморезистор NTC

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

Существует два типа таких датчиков:

  • PTC – positive temperature coefficient – измеритель, в котором уровень сопротивления повышается вместе с ростом температурных показателей;
  • NTC – negative temperature coefficient – датчик, снижающий показатель сопротивления при повышении уровня тепла.

В случае с Arduino датчик температуры подобного типа, который можно было бы привести в качестве примера - это NTC MF 58 100K.

Соединяем 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 в связке с Ардуино Уно, чтобы отобразить текущую температуру и влажность на дисплее размером 16 х 2. Кроме того, я также встроил в девайс три диода, которые отображают показания датчика температуры (холодно, горячо, экстремально).

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

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

  • Диапазон измерения влажности: 20-90% RH
  • Точность измерения влажности: ±5% RH
  • Диапазон измерения температуры: 0-50 °C
  • Точность измерения температуры: ±2% °C
  • Рабочее напряжение: от 3 до 5.5V

Шаг 1: Вещи, необходимые для проекта

  1. Макетная плата
  2. Дисплей LCD 16 X 2
  3. Провода с джамперами
  4. Плата Arduino UNO и установленный на компьютере Arduino IDE
  5. 3 светодиода (разных цветов)
  6. Небольшая макетная плата (не обязательно)
  7. Датчик температуры и влажности DHT11

Это всё, что вам нужно для начала сборки датчика влажности воздуха и температуры на Ардуино.

Шаг 2: Настраиваем соединение с Ардуино

Соединение компонентов – самая важная часть проекта. Удостоверьтесь, что всё сделали правильно, иначе вы можете уничтожить датчик. Изображение выше и в шаге 3 отображает соединение на макетной плате в чистом виде. Темно-синие провода отвечают за напряжение 5V, черные – заземление.

  1. Дисплей содержит 16 пинов, которые отмечены на обратной стороне модуля разными именами. Удостоверьтесь, что соединяете нужные пины.
  2. Чтобы определить, где какие пины у датчика DHT11, смотрите диаграмму, приложенную выше. Если диаграмма выглядит слишком сложной, то соединяйте устройства по этому списку:
  • GND Ардуино к отрицательному контакту печатной платы (все черные провода соединяются здесь)
  • 5V Ардуино к положительному контакту платы (все тёмно-синие провода соединяются здесь)
  • Положительный пин DHT11 на положительный контакт печатной платы
  • Отрицательный пин к отрицательному контакту
  • Сигнальный пин DHT11 на налоговый пин A0 Arduino (по нему данные с DHT11передаются на Arduino)
  • LCD 1 на отрицательный контакт печатной платы
  • LCD 2 на положительный контакт
  • LCD на отрицательный контакт печатной платы (если вы соедините его с потенциометром, то сможете управлять яркостью дисплея)
  • LCD 4 на цифровой пин 12 Arduino (координаты символов на дисплее)
  • LCD 5 на отрицательный контакт печатной платы
  • LCD 6 на цифровой пин (ЦП) 11 Arduino (команда инициализации LCD)
  • LCD 11 на ЦП 5 Arduino
  • LCD 12 на ЦП 4 Arduino
  • LCD 13 на ЦП 3 Arduino
  • LCD 14 на ЦП 2 Arduino
  • LCD на положительный контакт печатной платы
  • LCD 16 на отрицательный контакт печатной платы
  • Положительный пин холодного/зеленого светодиода на ЦП 7 Arduino (отрицательный пин на отрицательный контакт платы)
  • Положительный пин горячего/желтого светодиода на цифровой пин 8 (отрицательный пин на отрицательный контакт платы)
  • Положительный пин экстремального/красного светодиода на цифровой пин 9 Arduino (отрицательный пин на отрицательный контакт платы)

Если вы всё соединили правильно, то вы выполнили практически половину проекта, так как следующие шаги будут достаточно простыми.

Шаг 3: Что у вас примерно должно получиться




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

Теперь, перед тем, как приступить к шагу с программированием, нам нужно скачать две библиотеки Ардуино для дисплея и датчика DHT11. Мне потребовалось некоторое время, чтобы найти работающую библиотеку для DHT11, так как большинство из них оказались устаревшими. Библиотека дисплея встроена в IDE Ардуино, но я приложу обе библиотеки.

Если вы не знаете, как установить библиотеки Ардуино внутри IDE, то откройте Arduino IDE  Sketch  Include Library  Add Library и выберите файлы.zip.

Файлы

Шаг 4: Скетч (код Ардуино)

Вот код, который вам нужно будет скомпилировать и загрузить на плату Ардуино Уно. Если вы соединили всё правильно и установили две нужные библиотеки, то у вас не должно возникнуть ошибок.

#include #include #include "DHT.h" #define DHTPIN A0 // what pin we"re connected to #define DHTTYPE DHT11 // we are using the DHT11 sensor LiquidCrystal lcd(12, 11, 5, 4, 3, 2); DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); for (int DigitalPin = 7; DigitalPin <= 9; DigitalPin++) { pinMode(DigitalPin, OUTPUT); } lcd.begin(16,2); //16 by 2 character display dht.begin(); } void loop() { delay(1000); // Reading temperature or humidity takes about 250 milliseconds! float h = dht.readHumidity(); float t = dht.readTemperature(); // Read temperature as Celsius (the default) lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(t); //printing temperarture to the LCD display lcd.print(""C"); lcd.setCursor(0,1); lcd.print("Humid: "); lcd.print(h); //printing humidity to the LCD display lcd.print("%"); //the 3-led setup process if (t22) { digitalWrite(8, HIGH); digitalWrite(7, LOW); digitalWrite(9, LOW); } else if (t>=35) { digitalWrite(9, HIGH); digitalWrite(7, LOW); digitalWrite(8, LOW); } } Файлы

  • Если температура ниже 22℃, то горит холодный светодиод (зеленый)
  • Если температура между 22 — 35℃, будет светиться горячий светодиод (желтый)
  • Если температура выше 35℃, будет гореть экстремальный светодиод (красный)

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

Я приложил две фотографии с нормальной для нашей местности температурой в 31 ℃ (с горящим желтым светодиодом). Затем я расположил датчик недалеко от кубика льда, чтобы понизить температуру до 22℃ (чтобы загорелся зеленый светодиод).

На приложенном видео вы увидите, как температура меняется с 19 до 24 градусов и соответственно меняется горящий светодиод.

Самые частые измеряемые параметры в промышленности и быту — это температура и влажность. Эти значения очень важны в сушке древесины, выпечке кондитерских изделий, в холодильных камерах. В быту измеряют в теплицах и в контурах отопления и горячего водоснабжения. Датчик 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. В этой статье будут рассмотрены особенности подключения 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 мы получаем устройство, которое показывает влажность и температуру нашей комнаты!