Блог о программировании, электронике и рыбалке

DHT22 подключение к Arduino

dht22Пошаговая инструкция по подключению датчик температуры и влажности DHT22 к Arduino и получению данных с этого датчика.

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

  • Диапазон измерения влажности: 0 ~ 100% RH ± 2%
  • Диапазон измерения температуры:  -40 ~ 125'C ± 0,5 'C
  • Напряжение питания: 3,3 - 6 В.

На датчике есть 3 вывода для подключения его к внешним устройствам.

dht22

Подключение DHT22 к Arduino

  • Вывод 1 на DHT22 к +5V на Arduino
  • Вывод 2 на DHT22 к 2 пину на Arduino
  • Вывод 3 на DHT22 к GND на Arduino
  • Между 1 и 2 выводами необходимо подключить резистор на 10 кОм

Если у вас датчик без переходной платы, то выводы маркируются так:

  • Вывод 1 - +5V
  • Вывод 2 - данные
  • Вывод 3 - не используется
  • Вывод 4 - GND
  • Между 1 и 2 выводами необходимо подключить резистор на 10 кОм

dht22

В результате должно получиться что-то подобное:

dht22

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

dht.rar (2,9 КиБ, 11 820 hits)

Скачайте архив и распакуйте его содержимое в \arduino-1.xx\libraries\

Проверочный скетч для работы с DHT22

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

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
}

void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
}
else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
}

Результат нашей работы:

dht22

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

Датчики температуры и влажности устанавливаются на высоте 2 м над землёй в метеобудке : это небольшой деревянный ящик (размером приблизительно 40*40*40 см) с белыми, отражающими свет перфорированными или жалюзийными стенками, а также солнцеводозащитным козырьком (крышка будки должна быть герметичной и иметь наклон для стекания осадков с будки).

© meteocenter.net

Присоединяйтесь к нашей группе в Telegram @GeekElectronics
  • keyboard_arrow_downDHT22 подключение к Arduino
    • Автор:
    • Миниатюра: DHT22 подключение к Arduino
    • Рубрика: Arduino от А до Я
    • Обновлено: 21.02.2023
    • Комментариев: 31
    • Просмотров: 87 973
  • Оцените пожалуйста статью
    1 Star2 Stars3 Stars4 Stars5 Stars
    Загрузка...
  • Поделитесь с друзьями
Geek Electronics

Комментариев: 31

  • Avatar for source
    Иван:

    как изменить код программы чтобы к Ардуине подключить 2 или 3 датчика DHT22 ?
    к отдельным цифровым входам ? Если не сложно выложите скетч с комментарием. Спасибо

  • Avatar for source
    Иван:

    нужно контролировать температуру и влажность в двух местах с помощью одной Mega2560

    • Avatar for source
      source:

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

  • Avatar for source
    Олег:

    Здравствуйте! Вкраце плата мега 2560 датчик DHT11 и резистор 10 КоМ показывает влажность 1770 температура 742, скетч ваш. Подскажите куда копать или это датчик бракованный.

    • Avatar for source
      source:

      Если у вас датчик без переходной платы, то выводы маркируются так:
      Вывод 1 - +5V
      Вывод 2 - данные
      Вывод 3 - не используется
      Вывод 4 - GND

      Исходя из ваших данных могу предположить, что 1770 - это все-таки температура 17,7
      742 - атмосферное давление
      Правда если скетч действительно не меняли, то не знаю почему так вышло.

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

  • Avatar for source
    Олег:

    Датчик не паял, он с переходной платой с 3 выводами, пишет humidity 1770.00 %, делал все через монтажную плату.

    • Avatar for source
      Андрей:

      DHT11 выдаёт только целые значения влажности и температуры. Вариант 17,70 отпадает. Обратите внимание что объявить надо DHT11 а не DHT22.

  • Avatar for source
    123ksn:

    Не удержался.
    Получил посылку из Китая с датчиками DHT11. Встала задача быстро проверить. В наличие есть Arduino Mega2560. Задал поисковый запрос Яндексу. Попал на ваш сайт. Прочитал статью.
    Извините за прямоту, но очередная дебильная статья. Не потому, что неправильная, а потому, что недоделанная! Увы, таких авторов большинство. Вы для кого пишите? Новичков или профи?
    Если для новичков, то здорово, что есть фотки. НО!
    1)Ардуин есть куча. Ваша статья только для Mega2560 или для других тоже подходит?
    2)"необходимо установить дополнительную библиотеку DHT." Вы думаете новички понимают вашу умную терминологию? Я написал бы так: Что бы "рассказать" Ардуино как общаться с датчиком DHT11 надо установить "объяснялку" (называется "библиотека"). И далее как у вас.
    3)Ну почему надо везде лепить слово "скетч"? Где Вы даете определение этого понятия?
    4)"Теперь загрузим тестовый скетч". Загрузим КУДА? В блокнот, ворд? Я написал бы: Скопируем приведенную ниже текст программы для Ардуино (скетч) в предварительно запущенную на компьютере специальную программу для работы с Ардуино (Arduino IDE).
    5) Где вы указываете на необходимость компиляции?
    6) Где вы указываете на необходимость заливки в Ардуино?
    7)А где должен отобразиться результат работы программы вообще не указываете! Я предполагаю, что у вас картинка гипертерминала?
    8)А почему используется вывод 2 Ардуино? А не 3,4,5...?
    9)Почему +5вольт, а не +3.3? Теперь в интернете много "граматеев", которые пишут просто бред. Стрёмно подавать повышеное питание, когда есть рядом пониженное!!!
    10)Если мои предположения верны, что на картинке гипертерминал виндовс, то его надо настраивать! Где настройки?
    11)Почему COM36?
    Коль беретесь писать для новичков, так потрудитесь подавайть информацию полностью! Это добавит всего-то пяток "лишних" предложений, а "картина" будет понятной!

    • Avatar for source
      source:

      Не буду с вами спорить - всем не угодишь.
      Рекомендую просмотреть видеоуроки по Arduino на русском https://geekelectronics.org/arduino/videouroki-po-arduino-na-russkom.html
      После просмотра у вас появится кое-какой багаж знаний и закроется много вопросов.
      Если что-то не будет получаться - пишите. Попробую помочь.

      • Avatar for source
        Сергей:

        Человек, который начал работать с датчиком температуры и влажности (я купил за 345 рублей) наверное имеет понятие о портах, скетч и т.д. Новички обычно проводят эксперименты со светодиодами за 20 рублей. Немного помучиться тоже не мешает. Когда разжёванное в рот кладут - тоже не айс. Статья классная, у меня всё получилось. Спасибо.

    • Avatar for source
      Алексей:

      Никогда не понимал, таких... Люди делятся знаниями, подсказывают.. Хорошо ли это делают, плохо-ли - но делают. А такие "умники" как ты, не способные понять, почему 5В, и пин 2, а не 3,4,5 лепят целую статью левой критики, вместо того чтобы дельное что-нить написать. Или ты профи и решил над человеком постебаться? Так на кой тебе тогда этот убогий DHT11 и Arduino?
      Не нравится - не читай. Написал что-то дельное? Выкладывай ссылки - почитаем, обсудим. Нет, не написал? Так и тусуйся со своим больным самолюбием!

      • Avatar for source
        Виктор Глебов:

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

        #include "DHT.h"
        #include
        #include
        #include

        #define DHTPIN 2 //пин для датчика DNT22
        #define DHTTYPE DHT22

        BMP085 dps = BMP085();
        LiquidCrystal lcd(11, 10, 9, 8, 7, 6);//распиновка экрана
        long Temperature = 0, Pressure = 0;
        DHT dht(DHTPIN, DHTTYPE);
        float h;
        float t;

        void setup() {
        Serial.begin(9600);
        Serial.println("DHT22 test!");
        dht.begin();
        lcd.begin(16, 2);
        lcd.clear();
        Wire.begin();
        dps.init(MODE_STANDARD, 0, true);
        //dps.init();
        delay(1000);
        }
        void pr (){
        lcd.setCursor(0, 0);
        lcd.print(Pressure/133.3);
        lcd.print("mm");
        lcd.setCursor(10, 0);
        lcd.print(Temperature*0.1);
        lcd.print("C ");

        lcd.setCursor(0, 1);
        lcd.print(h);
        lcd.print("%");
        lcd.setCursor(10, 1);
        lcd.print(t);
        lcd.print("C ");
        }

        void loop() {

        h = dht.readHumidity(); // Назначаем переменную для датчика DNT22
        t = dht.readTemperature();// Назначаем переменную для датчика DNT22

        // if (isnan(t) || isnan(h)) {
        // Serial.println("Failed to read from DHT");
        // }
        // else {

        dps.getPressure(&Pressure);
        dps.getTemperature(&Temperature);

        pr();

        delay(1000);

        // }
        }
        Экран LCD1602.
        Сборка высоту не показывает.Для калибровки давления нужно поправит строчку Место нуля задать высоту в миллиметрах, если не ошибаюсь. Датчик BMP85 подключается на PIN A4,A5 .
        dps.init(MODE_STANDARD, 0, true);

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

    • Avatar for source
      Алексей:

      Очень грубо, дорогой... Статья норм. Да, не всё пояснено.
      Но ты неправ 123ksn. Ардуино это не конструктор для детей. Не понял? Сиди, ищи, разбирайся, изучай. А не гони на других.

    • Avatar for source
      читатель:

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

  • Avatar for source
    Олег:

    Я новичек собрал машину-робота по описанию source, за что ему БОЛЬШОЕ СПАСИБО. Все понятно.
    ИМХО- просто голову включать надо это не просто конструктор для детей от 3 лет.
    P.S. сейчас собираю квадрокоптер - тоже новичек.

    • Avatar for source
      AlexeyKr:

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

  • Avatar for source
    Вася:

    АРдуино Леонардо. Я новичек. Непонятна причина ошибки если честно.

  • Avatar for source
    Алексей:

    Вопрос: Сколько датчиков может повиснуть на одной линии (они же 1-Ware, или я ошибаюсь?) и на каком расстоянии?

  • Avatar for source
    CoolRoot:

    Эй, народ! Все конечно здорово, все должно заработать. Но зачем программа ради программы? Тем более, применяется такая мощная железяка, аж 2560!
    Вот сколько времени уходит на то, чтобы получить с этого датчика значения? А что в это время делает (или все-таки должен!) делать сам контроллер?
    Вопросы к тем, у кого несколько штук таких датчиков на одной линии данных:
    1. сколько времени уходит у процессора на обработку данных с датчиков, на принятие решения?
    2. есть ли возможность насесть на какое-то прерывание или еще как-то, чтобы выполнять нечто полезное между посылкой запроса на датчик и появлением готовых данных у него?
    Хочется верить, что Ардуины у вас не для того, чтобы в ГиперТерминале смотреть на текущие влажность и температуру.

  • Avatar for source
    александр:

    dh11 можно и без библиотеки подключить. код в скетче посложнее просто будет. для корректной работы обращаться к датчику следует не чаще 1 раза в секунду

  • Avatar for source
    Алина:

    объясните пожалуйста, я в ардуино новичок, и не по своему желанию
    У меня такой же датчик DHT22, как собирать я поняла, а вот как запустить программу нет, вопрос вот в чем "Если мне нужно датчик еще с дисплеем собрать, то мне куда писать программу? когда я собрала без дисплея то я заходила в файл - образцы -DHT -DHTtester " а с дисплеем как ?
    Уж простите. за такой банальный вопрос, но не понимаю

    • Avatar for source
      Максим:

      Построил простенькую метеостанцию с дисплеем от Nokia 5110
      За основу взял стандартную программу DHTtester и немного переписал её под работу с дисплеем, разумеется ещё понадобиться библиотека для работы с дисплеем.

    • Avatar for source
      source™:

      я бы все-таки порекомендовал для начала ознакомиться со всеми материалами тут https://geekelectronics.org/arduino/videouroki-po-arduino-na-russkom.html
      Появится первоначальный багаж знаний и многие вопросы отпадут

    • Avatar for source
      Андрей:

      А вы от датчика значение влажности телепатическим путём получали?
      Конечно нет. Не знаю но догадываюсь, что , так сказать, печатали в порт, т.е. смотрели на экране компьютера используя наверное соответствующую команду например такую как Sereal.print(...);
      Для дисплея, который Вы собираетесь использовать, тоже наверняка есть написанная библиотека которую просто надо будет включить в код так же как это делается с библиотекой самого датчика #include "DHT.h"
      Затем использовать команду для печати только уже на дисплей. Как и в библиотеке к датчику, к дисплею должны быть примеры, простейшие типа "hello world". Так собственно можно и подсмотреть как вывести не строку символов (слова) а значение (числовое). Так же обратите внимание что не все библиотеки выводят тип float, как это в примере с датчиком. (Я вот из всех написаных мною библиотек к дисплеям функцию вывода float и тем более word не писал. Проще преобразовать) Нужно будет просто преобразовать тип но это уже совсем другая история. Если чего, обращайтесь, поможем.

  • Avatar for source
    Андрей:

    P.S. Подскажите какой экранчик собираетесь использовать а мы посоветуем библиотеку а может даже из собственного творения поделюсь ;)

  • Avatar for source
    Turok:

    Добрый день Автор,

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

    • Avatar for source
      Chambo:

      Какую плату используешь и с каким рабочим напряжением?
      DHT dht(DHTPIN, DHTTYPE, 3); //Правильно выставить таймаут 3 для частоты контроллера 8МГц, 6 — для 16МГц, 15- для 80МГц

Добавить комментарий

arrow_upward