Меню

Arduino датчик давления и температуры dht22 подключение к mega 2560

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

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

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

    Диапазон измерения влажности: 0

100% RH ± 2%
Диапазон измерения температуры: -40

125’C ± 0,5 ‘C

  • Напряжение питания: 3,3 — 6 В.
  • На датчике есть 3 вывода для подключения его к внешним устройствам.

    Подключение 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 кОм

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

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

    dht.rar (2,9 KiB, 9 889 hits)

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

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

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

    #define DHTPIN 2
    #define DHTTYPE DHT22

    DHT dht(DHTPIN, DHTTYPE);

    void setup() <
    Serial.begin(9600);
    Serial.println(«DHTxx test!»);

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

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

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

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

    • Автор: source
    • Миниатюра:
    • Рубрика: Arduino от А до ЯArduino, DHT22, влажность, температура —>
    • Опубликовано: 31.01.2018
    • Обновлено: 31.01.2018
    • Комментариев: 31
    • Просмотров: 74 890 searchПоисковые боты

    Похожие записи

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

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

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

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

    Я разобрался ! там все просто!) можно хоть 10 прицепить

    ну и выложи скетч и объясни как..

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

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

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

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

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

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

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

    Читайте также:  Система отопления с принудительной циркуляцией под давлением

    Не буду с вами спорить — всем не угодишь.
    Рекомендую просмотреть видеоуроки по Arduino на русском https://geekelectronics.org/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 «);
    >

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

    // if (isnan(t) || isnan(h)) <
    // Serial.println(«Failed to read from DHT»);
    // >
    // else <

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

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

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

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

    Источник

    Arduino для начинающих. Урок 9. Подключение датчика температуры и влажности DHT11 и DHT22

    Продолжаем серию уроков “Arduino для начинающих”. Сегодня мы разберем подключение к Arduino датчиков температуры и влажности DHT11 и DHT22.

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

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

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

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

    Датчики DHT11 и DHT22

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

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

    • определение влажности в диапозоне 20-80%
    • определение температуры от 0°C до +50°C
    • частота опроса 1 раз в секунду
    • определение влажности в диапазоне 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);
    Загрузите скетч в контроллер и проверьте правильность работы при помощи Сервис->Монитор порта:

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

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

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

    Все посты сайта “Занимательная робототехника” по тегу Arduino.

    Наш YouTube канал, где публикуются видео-уроки.

    Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

    Автор Александр Гагарин. В статье использованы материалы learn.adafruit.com.

    Читайте также

    52 комментария к статье “Arduino для начинающих. Урок 9. Подключение датчика температуры и влажности DHT11 и DHT22”

    При компиляции выдало: Arduino: 1.6.5 (Windows 7), Плата»Arduino Uno»

    Изменена опция сборки, пересобираем все

    sketch_jul16a.ino: In function ‘void loop()’:
    sketch_jul16a:45: error: invalid operands of types ‘const char [21]’ and ‘float’ to binary ‘operator+’
    invalid operands of types ‘const char [21]’ and ‘float’ to binary ‘operator+’
    и розовым цветом выделена строчка Serial.print(«Влажность: «+h+» %\t»+»Температура: «+t+» *C «);
    Эта строка как-то неправильно написана?
    Спасибо всем, кто подскажет

    В Ардуино нормально строка не формируется. Все, что нужно вывести, нужно написать отдельными Serial.print

    Serial.println(«Humidity : «+String(h, 1)+»%\t Temperature : «+String(t, 1)+» *C»);

    Для DHT11 со встроенным резистором на плате рабочая программа будет такой. Вывод с — (правый) от датчика подключаем к GND Arduino, средний вывод (это +) подключаем на разъем 5V, левый вывод (это сигнал) подключаем к цифровому пину с цифрой 2.

    #define DHTPIN 2 // номер пина, к которому подсоединен датчик

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

    //DHT dht(DHTPIN, DHT22);

    DHT dht(DHTPIN, DHT11);

    // Задержка 2 секунды между измерениями

    float h = dht.readHumidity();

    float t = dht.readTemperature();

    // Проверка удачно прошло ли считывание.

    Serial.println(«Не удается считать показания»);

    Serial.print(«Hum: «);
    Serial.print(h);
    Serial.print(» Temp: «);
    Serial.print(t);
    Serial.println(» C»);

    Serial.print((String)»Влажность: «+h+» %\t»+»Температура: «+t+» *C «);

    Serial.println((String)»Влажность: » + h + (String)» %\t» + (String)»Температура: » + t + (String)» *C «);

    У меня датчик DHT11 в виде готового модуля с тремя выводами. ВНИМАНИЕ: левый пин — данные, средний — питание, правый — земля.
    В скачанной бbблиотеке DHT есть скетч с примером использования датчика — работает без изменений. По сравнению с другим прибором температуру DHT11 показывает +/- один градус, а влажность завышает на 6 %.

    Андрей, можно скетч на такой датчик? Пол интернета перерыл, не нашел, у всех без встроенных резисторов.

    Вот здесь более, чем доступно codius.ru/articles/187, ещё и что происходит в библиотеке описано. И пример кстати на модуле с резистором.

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

    Адрюха, респект! В 5 гайдах в интернет говорят что первая ножка — это питание, и только твой коммент помог получить данные с dht11 модуля.

    Спасибо тебе огромное!

    При проверке выдает следующее сообщение :
    E:\Arduino\Dht11\Dht11\examples\TempHumidity\TempHumidity.ino:3:17: fatal error: DHT.h: No such file or directory

    exit status 1
    Ошибка компиляции.
    что делать?

    E:\Arduino\Dht11\Dht11\examples\TempHumidity\TempHumidity.ino:3:17: fatal error: DHT.h: No such file or directory

    exit status 1
    Ошибка компиляции.
    Что делать?

    эта ошибка когда не подключил библиотеку, либо коряво скачалось, у меня все работает на китайском ардуино uno

    все очень понятно написано . а будет продолжение ?

    Скетч не верный!
    Из примера к библиотеке работает. В приведенном примере нет.

    #include «DHT.h»
    //#include «iostream»
    #define DHTPIN 10
    int ledtest = 6;
    DHT dht(DHTPIN, DHT11);

    pinMode(led, OUTPUT);
    pinMode(ledtest, OUTPUT);
    Serial.begin(9600);
    dht.begin();

    delay(1000);
    //setlocale(LC_ALL,»RUS»);
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (isnan(h) || isnan(t))
    <
    Serial.println(«no info»);
    digitalWrite(ledtest, LOW);
    return;
    >
    else
    <
    digitalWrite(ledtest, HIGH);
    //****** НЕФОРМИРУЮЩАЯСЯ СТРОКА ВЫВОДА пришлось писать её раздельно.
    Serial.print(«Humidity: «); Serial.print(h); Serial.print(«% «); Serial.print(«Temp: «); Serial.print(t); Serial.println(«*C» );
    >
    >

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

    у вас в тексте программы ошибки. pinMode(led, OUTPUT) не описана как переменная, вы, наверное, имели ввиду ledtest вместо led

    найти и заменить все « на » . ledtest вместо led

    Как сделать когда выше 25 градусов включался контакт 4 вентилятор. Помогите пожалуйста.

    Kirill, примерно так:

    t — температура, конечно.
    ledPin = вывод для управляющего сигнала (у меня загорается светодиод, например)
    Ну и для контроля вставля дополнительные надписи в порт, их можно убрать.

    if (t > 25)
    <
    analogWrite(ledPin, 255);
    Serial.println(«Warning. »);
    >
    else
    <
    analogWrite(ledPin, 0);
    Serial.println(«NO Warning. »);
    >

    подскажите плис, как вывести данные с датчика на LCD Keypad Shield

    Просто на экран, понятно..

    This report would have more information with
    «Show verbose output during compilation»
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows XP), Board: «Arduino Uno»
    sketch_sep23a.ino: In function ‘void loop()’:
    sketch_sep23a:46: error: invalid operands of types ‘const char [21]’ and ‘float’ to binary ‘operator+’

    Скопировал. Проверку не проходит.

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

    Всем доброй ночи, никак не могу завести dht11, все время не удается считать показания. Пробовал менять местами пины 5В и вывода иноформации, как советовали выше — не помогло.
    Датчик температуры работает отлично.
    Дохлый dht 11 попался?

    поxоже на то. Что вообще выводит в переменной влажности?

    Подключал датчик через дашборд, выдавал нулевые значение в мониторе порта, подключил напрямую провода (от ардуино сразу к датчику), все заработало.

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

    Что за ошибка в библиотеке? При проверке выскакивает. На Ардуино IDE

    In file included from G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    Используем библиотеку DHT-sensor-library-master версии 1.3.0 из папки: G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master
    exit status 1
    Ошибка компиляции для платы Arduino Nano.

    У кого ошибка при компиляции как у Сергея, установите библиотеку версии 1.2.3 .
    И строка вывода:
    Serial.println(«Humidity : «+String(h, 1)+»%\t Temperature : «+String(t, 1)+» *C»);
    как писал koa73

    У кого ошибка как у Сергея, установите версию библиотеки 1.2.3.

    Serial.print(» Hum: «);
    Serial.print(h);
    Serial.print(» %\t»);
    Serial.print(» Temp: «);
    Serial.print(t);
    Serial.println(» *C»);
    //Serial.println(«Humidity : «+String(h, 1)+»%\t Temperature : «+String(t, 1)+» *C»);
    //Serial.println(«Влажность: «+h+» %\t»+»Температура: «+t+» *C «);

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

    Adafruit_Sensor.h: No such file or directory
    #include скачайте библиотеку

    Добрый день, подключил датчик и дисплей, все ок, подскажите пожалуйста как сделать допустим если температура равна х значению то зуммер будет пищать 1раз в 1 минуту?

    640.00 *C температуры и 921.6 % влажности — это нормальные показания? О_О

    если вы в аду, то да.

    У тебя датчик DHT11 а ты выставил DHT22

    Срочно! Как купить электронику из Китая в Томске или в России с бесплатной доставкой курьером? Помогите срочно не могу самому найти интернет магазин…
    Не знаю как выбрать магазин что бы не кинули выручайте!

    Не совсем согласен,

    Здравствуйте,подскажите что вообще значит // Инициируем датчик
    DHT dht(DHTPIN, DHT22);
    //DHT dht(DHTPIN, DHT11);
    И для чего это нужно.

    Говорим ардуине с каким датчиком нужно работать.

    Нит черта не работает , как не качал библиотеку по инструкции без толку — не одного нормального примера с этим датчиком пока не нашел

    Источник

    Adblock
    detector