Dht11: подключение к arduino, распиновка, характеристики

Датчики температуры и влажности DHT11 и DHT22/AM2302 от AOSONG довольно просты в использовании, недорогие и отлично подходят для любителей! Эти датчики предварительно откалиброваны и не требуют дополнительных компонентов, поэтому вы можете сразу начать измерение температуры и относительной влажности.

dht11: подключение к arduino, распиновка, характеристикиРисунок 1 – Как работают датчики температуры и влажности DHT11 и DHT22, и их взаимодействие с Arduino

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

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

Но, учитывая его производительность и цену, вы не можете жаловаться.

DHT11 против DHT22/AM2302

У нас есть две версии серии датчиков DHTxx. Они выглядят немного похоже и имеют одинаковую распиновку, но имеют разные характеристики. Вот подробности.

DHT22 является более дорогой версией, которая, очевидно, имеет лучшие характеристики.

Диапазон измерения температуры составляет от -40°C до +80°C с точностью ±0,5 градуса, а диапазон температур DHT11 составляет от 0°C до 50°C с точностью ±2 градуса.

Также датчик DHT22 имеет более широкий диапазон измерения влажности, от 0 до 100% с точностью 2-5%, в то время как диапазон измерения влажности DHT11 составляет от 20 до 80% с точностью 5%.

Сравнение спецификаций DHT11 и DHT22/AM2302

 DHT11DHT22
Рабочее напряжение от 3 до 5 В от 3 до 5 В
Максимальный рабочий ток 2,5 мА макс 2,5 мА макс
Диапазон измерения влажности 20-80% / 5% 0-100% / 2-5%
Диапазон измерения температуры 0-50°C / ± 2°C от -40 до 80°C / ± 0,5°C
Частота выборки 1 Гц (чтение каждую секунду) 0,5 Гц (чтение каждые 2 секунды)
Размер корпуса 15,5 мм х 12 мм х 5,5 мм 15,1 мм х 25 мм х 7,7 мм
Преимущество Ультра низкая стоимость Более точный

Хотя DHT22/AM2302 более точен и работает в большем диапазоне температур и влажности; есть три вещи, в которых DHT11 сильно превосходит DHT22. Он более дешевый, меньше по размеру и имеет более высокую частоту выборки. Частота выборки DHT11 составляет 1 Гц, то есть одно чтение каждую секунду, в то время как частота выборки DHT22 составляет 0,5 Гц, то есть одно чтение каждые две секунды.

Рабочее напряжение обоих датчиков составляет от 3 до 5 вольт, в то время как максимальный ток, используемый во время преобразования (при запросе данных), составляет 2,5 мА.

И самое приятное, что датчики DHT11 и DHT22/AM2302 являются «взаимозаменяемыми», то есть, если вы создаете свой проект с одним датчиком, вы можете просто отключить его и использовать другой датчик.

Ваш код, возможно, придется немного изменить, но, по крайней мере, схема не изменится!

Для получения более подробной информации обратитесь к техническим описаниям датчиков DHT11 и DHT22/AM2302.

Обзор аппаратного обеспечения

Теперь давайте перейдем к более интересным вещам. Давайте разберем оба датчика DHT11 и DHT22/AM2302 и посмотрим, что внутри.

Корпус состоит из двух частей, поэтому для его вскрытия достаточно просто достать острый нож и разделить корпус на части. Внутри корпуса на стороне датчиков находятся датчик влажности и датчик температуры NTC (термистор).

dht11: подключение к arduino, распиновка, характеристикиРисунок 2 – Внутренности датчиков температуры и влажности DHT11 DHT22/AM2302

Чувствительный к влажности компонент, который используется, разумеется, для измерения влажности, имеет два электрода с влагоудерживающей подложкой (обычно соль или проводящий пластиковый полимер), зажатой между ними.

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

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

dht11: подключение к arduino, распиновка, характеристикиРисунок 3 – Внутренняя структура датчика влажности в DHT11 и DHT22

Кроме того, в этих датчиках для измерения температуры имеется датчик температуры NTC (термистор). Термистор – это терморезистор – резистор, который меняет свое сопротивление в зависимости от температуры. Технически все резисторы являются термисторами – их сопротивление слегка изменяется в зависимости от температуры, но обычно это изменение очень мало и его трудно измерить.

Термисторы сделаны так, чтобы их сопротивление резко изменялось при изменении температуры, и изменение на один градус может составлять 100 Ом или более! Термин «NTC» означает «Negative Temperature Coefficient» (отрицательный температурный коэффициент), что означает, что с ростом температуры сопротивление уменьшается.

dht11: подключение к arduino, распиновка, характеристикиРисунок 4 – График зависимости сопротивления NTC термистора от температуры

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

Распиновка DHT11 и DHT22/AM2302

Датчики DHT11 и DHT22/AM2302 довольно легко подключаются. У них есть четыре вывода:

dht11: подключение к arduino, распиновка, характеристикиРисунок 5 – Распиновка датчиков температуры и влажности DHT11 и DHT22/AM2302

  • Вывод VCC обеспечивает питание датчика. Хотя допускается напряжение питания в диапазоне от 3,3 до 5,5 В, рекомендуется питание 5 В. В случае источника питания 5 В, вы можете держать датчик на расстоянии до 20 метров от источника питания. Однако при напряжении питания 3,3 В длина кабеля не должна превышать 1 метра. В противном случае падение напряжения в линии приведет к ошибкам измерения.
  • Вывод Data используется для связи между датчиком и микроконтроллером.
  • NC не подключен
  • GND должен быть подключен к земле Arduino.

Подключение DHT11 и DHT22/AM2302 к Arduino UNO

Теперь, когда у нас есть полное понимание того, как работает датчик DHT, мы можем начать подключать его к нашей плате Arduino!

К счастью, подключение датчиков DHT11, DHT22/AM2302 к Arduino довольно тривиально. У них довольно длинные выводы с шагом 0,1 дюйма (2,54 м), поэтому вы можете легко вставить их в любую макетную плату. Подайте на датчик питание 5 В и подключите землю. Наконец, подключите вывод данных к цифровому выводу 2 на Arduino.

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

dht11: подключение к arduino, распиновка, характеристикиРисунок 6 – Подключение DHT11 к Arduino UNOdht11: подключение к arduino, распиновка, характеристикиРисунок 7 – Подключение DHT22/AM2302 к Arduino UNO

Теперь вы готовы загрузить в Arduino код и заставить ее работать.

Код Arduino. Вывод значений на монитор последовательного порта

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

Сначала скачайте библиотеку, посетив репозиторий на GitHub, или просто нажмите эту кнопку, чтобы скачать архив:

Чтобы установить библиотеку, откройте Arduino IDE, перейдите в «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку» и выберите только что загруженный zip-архив DHTlib.

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

#include
#define dataPin 8 // Определяет номер вывода, к которому подключен датчик
dht DHT; // Создает объект DHT

void setup()
{
Serial.begin(9600);
}

void loop()
{
// Раскомментируйте нужную строку, в зависимости от используемого вами датчика
int readData = DHT.read22(dataPin); // DHT22/AM2302
//int readData = DHT.read11(dataPin); // DHT11

float t = DHT.temperature; // Получить значение температуры
float h = DHT.humidity; // Получить значение относительной влажности

Читайте также:  Подключение термопары к Ардуино: особенности, схема, скетч

// Вывод результатов в монитор последовательного порта
Serial.print(«Temperature = «);
Serial.print(t);
Serial.print(» «);
Serial.print((char)176); // Вывод символа градусов
Serial.print(«C | «);
Serial.print((t * 9.0) / 5.0 + 32.0); // Вывод температуры в Фаренгейтах
Serial.print(» «);
Serial.print((char)176); // Вывод символа градусов
Serial.println(«F «);
Serial.print(«Humidity = «);
Serial.print(h);
Serial.println(» % «);
Serial.println(«»);

delay(2000); // Задержка 2 секунды
}

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

#include
#define dataPin 8 // Определяет номер вывода, к которому подключен датчик
dht DHT; // Создает объект DHT

В функции setup() нам нужно инициировать интерфейс последовательной связи, так как для вывода результатов мы будем использовать монитор последовательного порта.

void setup()
{
Serial.begin(9600);
}

В функции loop() мы будем использовать функцию read22(), которая считывает данные с DHT22/AM2302. В качестве параметра она принимает номер вывода данных датчика. Если вы работаете с DHT11, вам нужно использовать функцию read11(). Вы можете сделать это, раскомментировав вторую строку.

// Раскомментируйте нужную строку, в зависимости от используемого вами датчика
int readData = DHT.read22(dataPin); // DHT22/AM2302
//int readData = DHT.read11(dataPin); // DHT11

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

float t = DHT.temperature; // Получить значение температуры
float h = DHT.humidity; // Получить значение относительной влажности

Объект DHT возвращает значение температуры в градусах Цельсия (°C). Его можно преобразовать в градусы Фаренгейта (°F) по простой формуле:

[T_{^circ F} = T_{^circ C} imes 9/5 +32]

Serial.print((t * 9.0) / 5.0 + 32.0); // Вывод температуры в Фаренгейтах

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

dht11: подключение к arduino, распиновка, характеристикиРисунок 8 – Вывод в мониторе последовательного порта показаний датчика DHT11 или DHT22/AM2302

Код Arduino. Использование DHT11 и DHT22/AM2302 с LCD дисплеем

Иногда может возникнуть идея, контролировать температуру и влажность в инкубаторе. Тогда для отображения условий в инкубаторе вам, вероятно, понадобится символьный LCD дисплей 16×2 вместо монитора последовательного порта. Итак, в этом примере вместе с датчиком DHT11 или DHT22/AM2302 мы подключим к Arduino LCD дисплей.

Если вы не знакомы с LCD дисплеями на 16×2 символов, взгляните на статью «Взаимодействие Arduino с символьным LCD дисплеем».

Далее нам нужно подключиться к LCD дисплею, как показано ниже.

Рисунок 9 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT11Рисунок 10 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT22

Следующий скетч будет выводить значения температуры и относительной влажности на символьном LCD дисплее 16×2. Он использует тот же код, за исключением того, что мы печатаем значения на LCD дисплее.

#include // Включает библиотеку LiquidCrystal
#include
#define dataPin 8

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Создает объект LCD. Параметры: (rs, enable, d4, d5, d6, d7)
dht DHT;
bool showcelciusorfarenheit = false;

void setup()
{
// Инициализирует интерфейс LCD дисплея и указывает разрешение (ширину и высоту) дисплея
lcd.begin(16,2);
}

void loop()
{
int readData = DHT.read22(dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,0); // Устанавливает положение, где будет отображен текст, который будет напечатан
lcd.print(«Temp.: «); // Печатает строку «Temp.» на LCD

// Печатает значение температуры в Цельсиях и Фаренгейтах поочередно
if(showcelciusorfarenheit)
{
lcd.print(t); // Печатает значение температуры с датчика
lcd.print(» «);
lcd.print((char)223);// показывает символ градусов
lcd.print(«C»);
showcelciusorfarenheit = false;
}
else
{
lcd.print((t * 9.0) / 5.0 + 32.0); // Печатает температуру в Фаренгейтах
lcd.print(» «);
lcd.print((char)223);//показывает символ градусов
lcd.print(«F»);
showcelciusorfarenheit = true;
}

lcd.setCursor(0,1);
lcd.print(«Humi.: «);
lcd.print(h);
lcd.print(» %»);
delay(5000);
}Рисунок 11 – Показания температуры и влажности на LCD дисплее

Оригинал статьи:

  • How DHT11 DHT22 Sensors Work & Interface With Arduino

Теги

ArduinoArduino UnoDHT11DHT22/AM2302LCD дисплейДатчикДатчик температурыИзмерениеИзмерение температурыТемпература Arduino Uno

Отладочная плата Arduino Uno построена на микроконтроллере Atmega328P. Она имеет 14 цифровых входных/выходных выводов (6 из которых могут использоваться в качестве ШИМ выходов), 6 аналоговых входов, кварцевый резонатор 16 МГц, подключение USB, разъем питания, разъем ICSP и кнопку перезагрузки. Она содержит всё необходимое для работы с микроконтроллером; для того, чтобы начать работу с ней, просто подключите…

Подключение датчика DHT11 или DHT22 к Ардуино

    • Плата Arduino (или другой микроконтроллер, поддерживающий тайминг в микросекундах);
    • Монтажная (макетная плата);
    • Подтягивающий резистор номиналом в 10 кОм;
    • Светодиоды.
    • Питание;
    • Вывод данных;
    • Не используется;
    • Земля (GND).

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

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

    dht11: подключение к arduino, распиновка, характеристики

    Если у вас в руках готовый модуль датчика, то подключение его к Arduino предельно упрощается: подключаете VCC к +5В,  GND – к земле, третий контакт – к любому свободному пину на плате Arduino.

    Номер пина нужно будет затем указать скетче. Таким образом можно подключить датчика к разным платам Arduino: Uno, Arduino Mega, Arduino Nano, Pro Mini и другим.

    Подключение модуля датчика производится по следующей схеме:

    Датчик DHT22/DHT11 Arduino
    + +5V
    out например, 2
    GND

    Внимание! Обязательно соблюдайте полярность подключения. В случае неправильного подключения датчик почти неминуемо выйдет из строя. Кроме того, при неправильном подключении пластиковый корпус датчик очень сильно нагреется и может обжечь вам руки. Будьте внимательны, не торопитесь!

    Для соответствия схемы примеру скетча, приведенному ниже, рекомендуется подключить сигнал с датчика влажности DHT11/DHT22 ко второму пину. Если у вас иной скетч, можно внести соответствующие правки в коде и изменить пин (пример ниже). Также подключаются дополнительные резисторы (этот шаг можно опустить, так как в плате уже установлен резистор).
    dht11: подключение к arduino, распиновка, характеристики

    Скетч для работы с датчиками DHT11 и DHT22 в Arduino

    Перед написанием скетча давайте убедимся, что у нас установлена библиотека для работы с датчиками влажности и температуры. Скачать ее можно по ссылке https://github.com/adafruit/DHT-sensor-library. Загрузится папка под названием «DHT-sensor-library-master». Ее необходимо переименовать в DHT и переместить в папку libraries, что находится в корневой папке Arduino IDE. Далее необходимо загрузить готовый скетч или написать его самостоятельно, используя примеры. Типичный arduino скетч для работы с DHT11 и DHT22 выглядит следующим образом:

    #include «DHT.h»
    #define DHTPIN 2 // Тот самый номер пина, о котором упоминалось выше
    // Одна из следующих строк закоментирована. Снимите комментарий, если подключаете датчик DHT11 к arduino
    DHT dht(DHTPIN, DHT22); //Инициация датчика
    //DHT dht(DHTPIN, DHT11);
    void setup() {
    Serial.begin(9600);
    dht.begin();
    }
    void loop() {
    delay(2000); // 2 секунды задержки
    float h = dht.readHumidity(); //Измеряем влажность
    float t = dht.readTemperature(); //Измеряем температуру
    if (isnan(h) || isnan(t)) { // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
    Serial.println(«Ошибка считывания»);
    return;
    }
    Serial.print(«Влажность: «);
    Serial.print(h);
    Serial.print(» % «);
    Serial.print(«Температура: «);
    Serial.print(t);
    Serial.println(» *C «); //Вывод показателей на экран
    }

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

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

    Подуйте на него тонкой струйкой – влажность уменьшится и температура вернется в норму.

    На этом этапе вы сможете заметить разницу между реальным значением температуры и показаниями датчика с ардуино. Точность DHT11 гораздо хуже точности DHT22, о чем мы уже говорили в этой статье.

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

    Читайте также:  Тензодатчик Ардуино подключение через hx711 и использование

    Учитывайте это, используя эти датчики в своих проектах.

    Резюме

    Давайте подведем итог. В статье рассмотрены вопросы подключения ардуино датчиков температуры и влажности DHT11 и DHT22 к плате Arduino Uno. Датчики лучше приобретать в виде готовых модулей.

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

    Все полученные результаты мы можем посмотреть в окне монитора порта, сохранить и вывести на ЖК-экран, послать через bluetooth или интернет.

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

    Варианты сфер применения датчиков практически неисчерпаемы, можно найти множество примеров на просторах интернета, в том числе на этом сайте. Надеюсь, с помощью нашей статьи проблем с подключением DHT11 и DHT22 к Arduino у вас не останется.

  • Ардуино датчик влажности и температуры DHT11

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

    О датчике

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

    DHT11 – это недорогой прибор, который обеспечивает высокую надежность и долговременную стабильность.

    В этом проекте построена небольшая схема для интерфейса с датчиком температуры на Arduino. Одним из основных применений подключения данного сенсора к Arduino является мониторинг погоды.

    Виды датчиков

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

    Рассмотрим основные виды приборов, построенных на рассматриваемой платформе:

    1. Вращательный: в основном, резистор, подключенный к потенциометру и трехконтактному разъему, который позволяет подключать аналоговый выход и подавать его VCC и GND. Часто используется для определения положения двигателя, как сервомотора, так и шагового, постоянного тока и других. По-другому можно назвать – Ардуино датчик тока или Аrduino датчик движения.
    2. Звуковой: оснащен микрофоном, операционным усилителем LM386 и потенциометром, позволяющим захватывать любой звук вокруг него и превращать его в аналоговый сигнал с 0V до VCC, который может быть преобразован в сигнал Аrduino от 0 до 1024 в резолюции ADC. Существуют различные приложения для такого типа, которые относятся к аудиозахвату. Также существует ультразвуковой датчик Ардуино.
    3. Обнаружитель дыма: используется в системах обнаружения пожара, является прибором, который выявляет дым и газ, может быть откалиброван с помощью потенциометра, а выходной сигнал подключается к аналоговому входному модулю. Эти Ардуино-датчики имеют, помимо прочего, варианты MQ-2, MQ-3, MQ4 и дифференцируются по типу обнаруженного вещества, метана, спирта, пропана и другие.
    4. Детонация: предназначен для обнаружения сбоев или известен, как перкуссионный. Передает цифровой сигнал, когда обнаруживает изменение. Может быть подключен к цифровому входу на плате разработки Arduino и обнаруживать сигнал, который генерируется при наличии какого-либо удара.
    5. Ардуино-датчик температуры: предназначается для измерения состояния окружающей среды. К таким можно отнести Аrduino dsl8b20.

    Распиновка и принципиальная схема подключения

    Распиновка у датчиков данного типа довольно простая. Независимо от того сколько выводов у вашего сенсора — рабочих выводов всего 3:

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

    Устройство датчиков и схема подключения к Ардуино

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

    DHT11 состоит из 3 основных компонентов. Датчик влажности резистивного типа, термистор NTC и 8-разрядный микроконтроллер, который преобразует аналоговые сигналы и отправляет одиночный цифровой сигнал.

    Схема подключения DHT11 к Ардуино

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

    DHT11 состоит из 4 контактов: VCC, Data Out, Not Connected (NC) и GND. Диапазон напряжения для вывода VCC составляет от 3,5 до 5,5 В. Питание 5 В будет достаточно. Данные на выводе Data Out являются последовательными цифровыми данными.

    DHT11 может измерять значение влажности в диапазоне 20-90 % относительной влажности (RH) и температуру в диапазоне 0-50 0 С. Период выборки составляет 1 секунду.

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

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

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

    Скетч для работы с датчиком

    Давайте посмотрим теперь на код благодаря которому сенсор будет взаимодействовать с нашей платой (схема подключения выше):

    #include «DHT.h»
    #define dht_apin A0 // Аналоговый контакт к которому подключен датчик

    dht DHT;

    void setup(){

    Serial.begin(9600);
    delay(500);//Задержка для загрузки системы
    Serial.println(«DHT11 сенсор влажности и температуры

    «);
    delay(1000);//Подождите, прежде чем обращаться к датчику

    }//end «setup()»

    void loop(){
    //Начало программы

    DHT.read11(dht_apin);

    Serial.print(«Текущая влажность = «);
    Serial.print(DHT.humidity);
    Serial.print(«% «);
    Serial.print(«температура = «);
    Serial.print(DHT.temperature);
    Serial.println(«C «);

    delay(5000);//Подождите 5 секунд, прежде чем снова обратиться к датчику

    //Самый быстрый должен быть раз в две секунды

    }// окончание цикла loop()

    Код получился таким небольшим, т.к. мы в самом начале задействовали библиотеку для сенсора. Скачать библиотеку можно по ссылке или на этой странице в разделе «Библиотеки».

    Arduino DHT11 – относительно дешевый прибор для измерения температуры и влажности. DHT22 похож на DHT11 и имеет большую точность. Однако эта библиотека не подходит для DHT21 или DHT22, поскольку они имеют другой формат данных.

    Проверьте DHTlib на поддержку этих датчиков. Эта библиотека протестирована на MEGA2560 и подтверждена работой на Arduino 2009. Niesteszeck создал библиотеку DHT11, управляемую прерываниями. Энди Дальтон сделал модифицированную версию. Разница в том, что DATAPIN определен в конструкторе, в результате чего полагается один выделенный объект на приспособление.

    С помощью одножильного приспособления DS18B20 мы можем измерять температуру от -55 ℃ до 125 ℃ с точностью ± 5.

    В итоге мы должны на выходе увидеть вот такие данные:

    Получение данных

    1. Рассмотрим данные, полученные от DHT11.
    2. 00100101 00000000 00011001 00000000 00111110.
    3. Эти данные можно разделить на основе указанной выше структуры следующим образом:

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

    00100101 + 00000000 + 00011001 + 00000000 = 00111110

    Это значение совпадает с контрольной суммой и, следовательно, полученные данные действительны. Теперь, чтобы получить значения RH и температуры, просто преобразуйте двоичные данные в десятичные данные:

    • RH = Десятичное значение 00100101 = 37%
    • Температура = Десятичное значение 00011001 = 250C

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

    Дополнительные сенсоры

    Кроме сенсоров, которые мы рассмотрели выше можно присмотреться и к другим датчикам для Ардуино:

    1. Датчик температуры + влажности. Вы можете использовать этот совместимый с Arduino гаджет для контроля температуры окружающей среды или влажности. В качестве основного проекта вы можете подключить ЖК-дисплей к Arduino и отображать температуру в помещении/влажность.
    2. Датчик инфракрасного излучения, также называемый «инфракрасным излучающим диодом». Он работает с 38KHz модулирующим сигналом. Можно использовать для отправки кода в другой Arduino или для управления телевизором.
    3. Фоторезистор. Сопротивление компонента будет варьироваться в зависимости от интенсивности света, которому он подвергается. Является резистором, сопротивление которого падает, когда свет попадает на него.
    4. Ультразвуковой прибор расстояния автоматически отправляет аудиосигнал 40 кГц и определяет, есть ли импульсный сигнал назад. Он посылает сигнал, и если он получает обратно, то вычисляет пройденное расстояние, таким образом, расстояние от приспособления до объекта перед ним. Он может ощущать объект в диапазоне: 2 см ~ 500 см.
    5. Датчик детонации. Проще говоря, это переключатель, который включается, когда он обнаруживает стук. Существует светодиод, который также дает визуальный сигнал состояния, высокий или низкий.
    Читайте также:  Как проверить бронепровода мультиметром: прозвонка на авто

    Подключение DHT11 (DHT22) к Ардуино

    Благодаря аппаратно-программным средствам Arduino можно легко построить автоматизированные или роботизированные системы.

    Используемые в системе элементы — датчики, разрешают оперировать различной информацией и исходя из нее выстраивать цепочку возможных операций, выполняемых в автоматическом или полуавтоматическом режимах.

    В качестве используемых элементов, в рамках публикации, рассматривается датчики температуры и влажности DHT11 и DHT22, подключаемые к Arduino.

    Характеристики и соединение датчиков

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

    Датчик
    DHT11
    DHT22
    Ток потребления 2.5 мА 2.5 мА
    Питание От 3 до 5 В От 3 до 5 В
    Диапазон измерения влажности 20–80 % 0–100 %
    Погрешность 5 % 2–5 %
    Температурный диапазон 0–50 °C −40–125 °C
    Погрешность 2 % 0.5 %
    Частота измерения 1 Гц (1 замер в секунду) 0.5 Гц (1 замер за 2 секунды)
    Коннекторы 4 шт, шаг между ними 0.1 4 шт, шаг – 0.1
    Габариты 15.5×12×5.5 мм 15.1×25×5.5 мм
    Цена 0.6 $ 2.45 $

    Замеры влажности производятся в процентах. Когда сенсор при замере выдает 50 % — это значит, что вокруг места замера в воздухе присутствует 50 % водяного пара.

    При выводе информации о 100 % — вероятно схема неверно подключена или датчик попался бракованный. При 0 % — большой шанс выявления ошибки в обработке информации. Если же ошибки нет, наверное, вы запускаете датчик температуры и влажности DHT11 в космосе на орбите планеты или в пустыне Сахара.

    Разница между датчиками очевидна — DHT11 выдает менее точные значения в более узком диапазоне температур и влажности, но делает замер в два раза быстрее, чем DHT22. Последний довольно часто используют для сбора данных в инкубаторах, теплицах или в домашних метеостанциях. На рынке можно встретить датчики в двух исполнениях:

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

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

    Комплект

    Подключение датчика температуры DHT11 к Ардуино в примере реализовано тремя способами. Для каждого нужно свой комплект. Какую плату будете реализовывать вы – полностью зависит от вас. Реализация доступна на:

    1. Arduino UNO — стандартная плата.
    2. Arduino Nano — для размещения в компактные корпуса.
    3. Arduino MEGA — сложные и большие системы требуют большого количества контактов на плате.

    Первым набором для подключения является:

    1. Ардуино УНО плата.
    2. Датчик DHT11.
    3. Резистор с сопротивлением 4.7 кОм.
    4. Макетная плата.
    5. Проводники для соединения друг с другом всех элементов схемы.

    Второй комплект:

    1. Плата Arduino NANO / UNO.
    2. DHT11.
    3. Проводники со специальными штекерами для УНО.

    Третий комплект подключения:

    1. Плата Уно.
    2. DHT11 модуль.
    3. Дисплей с LCD-экраном.
    4. Проводники штекерные Адруино.
    5. Переходник питания 2 в 1.

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

    Схема соединения

    Подключение датчика влажности к Ардуино рекомендуется делать по макету.

    Миниатюрный сенсор соедините с платой Ардуино по схеме №1:

    1. Вывод DHT11 под номером 1 через проводники к плате +5В (красный).
    2. Вывод второй к контакту digital (синий), он под номером 4.
    3. Третий заводить куда-либо не надо.
    4. Четвертый выводите на землю GND (черный).

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

    Если с подобным монтажом заморачиваться желания нет, используйте датчик DHT11, выполненный в модульном варианте. Он уже поставляется с элементом подтяжки, поэтому лишен всех прелестей «хенд-мейд перемычек».

    Задействуем вторую схему соединения сенсора с платой по такой распиновке:

    1. Красный проводом соедините питание +5В и VCC.
    2. OUT к цифровому пину, отвечающего за данные (зеленый).
    3. Землю завяжите между собой (черный).

    Принципиальная схема элементов соединения вот такая.

    Не забывайте о технике безопасности. Выполняйте подключение элементов к плате с полностью выключенным питанием во избежание повреждений.

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

    1. Контакт SCL экрана к А5 (данные, оранжевый).
    2. SDA к А4 (данные, желтый).
    3. GND завязать с GND (земля, черный).
    4. VCC к 5В (питание, красный).
    5. GND сенсора в GND (земля, черный).
    6. DATA к A0 (данные, фиолетовый).
    7. VCC к 5В (питание, красный).

    Питание LCD-экрана и сенсора реализуйте через единый пин с помощью соединительного контакта (2 in 1).

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

    Программирование

    Перед выполнением каких-либо манипуляций сделайте следующее:

    1. Загрузите с Github библиотеки DHT для сенсора.
    2. И при реализации дисплея — LiquidCrystal_I2C.
    3. Распакуйте с помощью архиватора запакованные библиотеки, и перенесите данные в такой путь на диске Arduinolibraries.
    4. Для датчика переименуйте библиотеку в DHT, для экрана оставьте как есть.

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

    #include // Внедрение в Ардуино IDE библиотек
    #include // Подтягивание для LCD-дисплея
    #include «DHT.

    h» // Подтягивание для используемого сенсора
    #define DHTPIN A0 // А0 к этому разъему подсоединяется DATA-выход сенсора
    //программа определяет подключенный элемент
    #define DHTTYPE DHT11 // выбран сенсор DHT11
    //подготовка к работе
    DHT datchik(DHTPIN, DHTTYPE);
    byte degree[8] = // Перевод градус Цельсия в двоичную систему для обработки.

    {
    B00111,
    B00101,
    B00111,
    B00000,
    B00000,
    B00000,
    B00000,
    };
    // Обращение к экрану
    LiquidCrystal_I2C disp(0x27,16,2); // Размер выводимой информации и адрес экрана
    void setup()
    {
    disp.init(); // Инициализация LCD-экрана
    disp.backlight(); // Активация подсветки
    disp.createChar(1, degree); // Определение градуса как единицы
    Serial.

    begin(9600);
    datchik.begin();
    }
    void loop() {
    // Выставление задержки между измерениями в две секунды
    delay(2000);
    float h = datchik.readHumidity();
    // Чтение t °C.
    float t = datchik.readTemperature();
    // Чтение t как °F.
    float f = datchik.readTemperature(true);
    // Выведение данных на LCD-экран
    disp.

    setCursor(0, 0); // Выставление курсора в самое начало строки
    disp.print(«Humidity = % «); // Вывести данные
    disp.setCursor(7, 0); // Выставление курсора на седьмой символ в этой строке
    disp.print(h, 1); // Показ инфо о влажности на экране
    disp.setCursor(0, 1); // Выставление курсора в самое начало второй строки
    disp.

    print(«Temperature = 1C «); // Вывод данных, 1 – это значение градуса
    disp.setCursor(7, 1); // Перевод курсора на седьмой символ
    disp.print(t,1); // Выставление данных по t °C

    }

    Оставьте комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *