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

Соединяем 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 для Ардуино мы завершаем. Успешных вам проектов.

Когда вы уезжаете куда-то далеко на определенный срок времени? Ваши комнатные цветы некому поливать, поэтому приходится просить помощи у ваших соседей, которые, в свою очередь, могут халатно относиться к этому. В результате к вашему приезду растения будут чувствовать себя плохо. Чтобы этого не произошло, можно сделать систему автоматического полива. Для этой цели нам понадобится Arduino и датчик влажности почвы. В статье рассмотрим пример подключения и работы с датчиком FC-28. Он зарекомендовал себя с положительной стороны, с помощью него были созданы тысячи проектов.

О датчике FC-28

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

Где купить

Дело в том, что в российских магазинах датчики для работы с Arduino стоят относительно дорого. Средняя цена на этот датчик в России варьируется от 200 до 300 рублей, в то же время как в Aliexpress этот же датчик стоит всего лишь каких-то 30-50. Наценка огромная. Конечно, можно еще сделать датчик для измерения влажности почвы своими руками, но об этом ниже.

О подключении

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

Подключение с помощью цифрового выхода

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

  • VCC - 5V на Arduino.
  • D0 - D8 на плате на Arduino.
  • GND - земля.

Как уже упоминалось выше, на модуле датчика расположены компаратор и потенциометр. Работает все следующим образом: при помощи потенциометра мы устанавливаем предельное значение нашего датчика. FC-28 сравнивает значение с предельным, и после этого отправляет значение в Arduino. Допустим, значения датчика выше порогового, в таком случае датчик влажности почвы на Arduino передает 5V, если меньше - 0V. Все очень просто, но более точные значения - у аналогового режима, поэтому рекомендуется использовать его.

Электрическая схема подключения выглядит так, как показано на фото выше. образом

Программный код для Arduino при использовании цифрового режима приведен ниже.

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); } }

Что же делает наш код? Первым делом были обозначены две переменные. Первая переменная - led_pin - служит для обозначения светодиода, а вторая - для обозначения датчика влажности земли. Далее мы объявляем контакт светодиода как выход, и контакт датчика как вход. Это нужно для того, чтобы мы могли получить значени, и при необходимости включить светодиод, чтобы визуально увидеть, что значения датчика выше порогового. В цикле мы считываем значения с датчика. Если значение выше предельного - включаем светодиод, если ниже - выключаем. Вместо светодиода может быть и насос, тут все зависит от вас.

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

Для подключения при помощи аналогового выхода потребуется работать с A0. Емкостной датчик влажности почвы в Arduino принимает значения от 0 до 1023. Подключаем датчик следующим образом:

  • VCC подключаем на 5V к Arduino.
  • GND на датчике подключаем к GND на плате Arduino.
  • A0 подключаем к A0 на Arduino.

Int sensor_pin = A0; int output_value ; void setup() { Serial.begin(9600); Serial.println("Читаем сенсор"); delay(2000); } void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,0,0,100); Serial.print("Влажность "); Serial.print(output_value); Serial.println("%"); delay(1000); }

Итак, что же делает этот программный код? Первым делом были заданы переменные. Первая переменная нужна, чтобы определить контакт датчика, а другая будет хранить результаты, которые мы будем получать при помощи датчика. Далее мы считываем данные. В цикле мы записываем в созданную нами переменную output_value значения с датчика. Затем рассчитывается процент влажности почвы, после чего выводим их на монитор порта. Электрическая схема подключения изображена ниже.

Своими руками

Выше было рассмотрено, как подключить датчик влажности почвы к Arduino. Проблема этих датчиков в том, что они недолговечные. Дело в том, что они очень сильно склонны к коррозии. Некоторые фирмы делают датчики со специальным покрытием, чтобы увеличить срок службы, но это все равно не то. Также рассматривается вариант использования датчика не часто, а только когда требуется. Например, есть программный код, где каждую секунду датчик считывает значения о влажности почвы. Можно продлить срок службы, если включать его, например, один раз в день. Но если и это вам не подходит, то можно сделать своими руками датчик влажности почвы. Arduino разницы не почувствует. В принципе, система такая же. Просто вместо двух сенсоров можно поставить свои и использовать при этом материал, который менее подвержен коррозии. Идеально, конечно, использовать золото, но, учитывая его цену, это выйдет очень дорого. Вообще, дешевле выходит покупать, учитывая цену FC-28.

Плюсы и минусы

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

Плюсы:

  • Цена. Этот датчик имеет очень низкую цену, поэтому каждый радиолюбитель сможет купить и соорудить свою систему автоматического полива для растений. Конечно, при работе с большими масштабами этот датчик не подойдет, но он для этого и не предназначен. Если нужен датчик мощнее - SM2802B, то за него и отдать придется немаленькую сумму.
  • Простота. Освоить работу с этим датчиком влажности почвы в Arduino может каждый. Всего несколько проводов, пара строк кода - и все. Контроль влажности почвы сделан.

Минусы:

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

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

Время на чтение: 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 датчиков температуры и влажности DHT11 и DHT22.

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

Список деталей для сборки модели

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

  • плата Arduino (подробнее, о том как выбрать Arduino );
  • датчик DHT11 или DHT22 (можно купить, например, или );
  • Breadboard;
  • резистор на 10 кОм;
  • программа Arduino IDE, которую можно скачать с сайта Arduino .

Датчики DHT11 и DHT22

Чем отличаются датчики DHT11 и DHT22?

Две версии сенсоров DHT похожи друг на друга и имеют одинаковую распиновку. Их отличия в характеристиках. Спецификации:

Сенсор DHT11:

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

Сенсор DHT22:

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

Таким образом, характеристики датчика DHT22 лучше по сравнению с DHT11, и поэтому он чуть-чуть дороже. Снимать показания чаще, чем раз в 1-2 секунды не получится, но, возможно, для вашего проекта более высокое быстродействие и не требуется.

Подключение сенсоров DHT к Arduino

Датчики DHT имеют стандартные выводы и их просто установить на breadboard.

Датчики DHT имеют 4 вывода:

  1. питание.
  2. вывод данных
  3. не используется.
  4. GND (земля).

Между выводами питания и вывода данных нужно разместить резистор номиналом 10 кОм.

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

Схема подключения датчика с резистором:

Схема подключения датчика DHT к Arduino

Arduino скетч

Воспользуемся библиотекой DHT.h, созданной специально для датчиков DHT. Ее можно скачать . Для использования нужно поместить скачанную папку в в папку /libraries.

Пример программы для работы модели с датчиком DHT22 (можно просто скопировать в Arduino IDE):
#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(2000);
//Считываем влажность
float h = dht.readHumidity();
// Считываем температуру
float t = dht.readTemperature();
// Проверка удачно прошло ли считывание.
if (isnan(h) || isnan(t)) {
Serial.println("Не удается считать показания");
return;
}
Serial.print("Влажность: "+h+" %\t"+"Температура: "+t+" *C ");
}
При использовании датчика DHT11 закомментируйте строку:
DHT dht(DHTPIN, DHT22);
И раскомментируйте строку:
//DHT dht(DHTPIN, DHT11);
Загрузите скетч в контроллер и проверьте правильность работы при помощи Сервис->Монитор порта:

Показания температуры и влажности (Монитор порта)

Вы должны увидеть температуру и влажность. Изменения можно увидеть, например, выдыхая на датчик (как для затуманивания окна). Дыхание увеличивает влажность.

Посты по урокам:

  1. Первый урок:
  2. Второй урок:
  3. Третий урок:
  4. Четвертый урок:
  5. Пятый урок:
  6. Шестой урок:
  7. Седьмой урок:
  8. Восьмой урок:
  9. Девятый урок:

При создании проектов, где требуется узнать влажность и температуру воздуха, необходим соответствующий датчик. При большом ассортименте на рынке разбегаются глаза, и не знаешь что выбрать. Однако есть проверенные датчики, которыми уже пользуются тысячи радиолюбителей. Одним из таких является 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 мы получаем устройство, которое показывает влажность и температуру нашей комнаты!