Главная » Arduino » Arduino и датчик температуры и влажности DHT22

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

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

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

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

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

температура влажность DHT22 Arduino  arduino

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

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

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

  • Вывод 1 - +5V
  • Вывод 2 - данные
  • Вывод 3 - не используется
  • Вывод 4 - GND

температура влажность DHT22 Arduino  arduino

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

температура влажность DHT22 Arduino  arduino

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

температура влажность DHT22 Arduino  arduino    dht.rar (2,9 KiB, 5 866 hits)

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

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

#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 Arduino  arduino

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

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

© meteocenter.net

Похожие записи
Подключение барометра BMP085 к Arduino... В этот раз я опишу процесс подключения цифрового датчика атмосферного давления BMP085 к Arduino. Этот датчик я собираюсь использовать в проекте домаш...
Подключение микрофонного модуля к Arduino... В этой статье я опишу процесс подключение микрофонного модуля к контроллеру Arduino. Данный проект будет использоваться в качестве индикатора акуст...
Bionic Arduino на русском Русский перевод презентаций Bionic Arduino. Часть 1. Введение, цифровые входы, переключатели Часть 2. RGB-светодиоды, аналоговый вход, последовател...
Arduino – передача данных по радиоканалу на ... В этой статье я постараюсь подробно описать процесс организации передачи данных между контролерами Arduino по радиоканалу с использованием передатчика...
This entry was posted in Arduino and tagged , , , . Bookmark the permalink.

31 комментарий: Arduino и датчик температуры и влажности DHT22

  1. Иван говорит:

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

  2. Иван говорит:

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

  3. Олег говорит:

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

    • source говорит:

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

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

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

  4. Олег говорит:

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

    • Андрей говорит:

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

  5. 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?
    Коль беретесь писать для новичков, так потрудитесь подавайть информацию полностью! Это добавит всего-то пяток "лишних" предложений, а "картина" будет понятной!

    • source говорит:

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

      • Сергей говорит:

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

    • Алексей говорит:

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

      • Виктор Глебов говорит:

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

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

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

    • Алексей говорит:

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

    • читатель говорит:

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

  6. Олег говорит:

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

  7. Вася говорит:

    DHT dht(DHTPIN, DHTTYPE);
    error: 'dht' was not declared in this scope

    • AlexeyKr говорит:

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

  8. Вася говорит:

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

  9. Алексей говорит:

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

  10. CoolRoot говорит:

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

  11. александр говорит:

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

  12. Алина говорит:

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

    • Максим говорит:

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

    • source™ говорит:

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

    • Андрей говорит:

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

  13. Андрей говорит:

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

  14. Turok говорит:

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

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

    • Chambo говорит:

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

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

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