Как подключить датчик температуры и влажности dht11 к Arduino с дисплеем

Обновлено: 21.11.2024

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

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

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

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

Технические сведения

  • Низкая стоимость
  • Питание и ввод-вывод от 3 до 5 В.
  • Максимальное потребление тока 2,5 мА во время преобразования (при запросе данных)
  • Подходит для показаний влажности 20–80 % с точностью 5 %.
  • Подходит для показаний температуры от 0 до 50 °C с точностью ±2 °C.
  • Частота дискретизации не более 1 Гц (раз в секунду)
  • Размер корпуса: 15,5 x 12 x 5,5 мм.
  • 4 контакта с шагом 0,1 дюйма

Что такое относительная влажность?

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

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

Это Arduino Uno с датчиком температуры/влажности DHT11, ЖК-экраном и питанием от внешнего аккумулятора.

  • 338 143 просмотра
  • 177 комментариев
  • 473 уважения

Компоненты и расходные материалы

Об этом проекте

Я собираюсь показать вам, как я сделал датчик температуры и влажности с помощью Arduino Uno. Моя конечная цель — сделать его на Attiny84 и вытравить для него печатную плату. Хотя у меня есть все необходимое для этого, погода снаружи не способствует этому. Трудно травить доску в моем гараже при температуре ниже 10 градусов по Фаренгейту. Это будет другая инструкция для более поздней даты.

Еще раз спасибо, что нашли время прочитать мой проект.

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

Все детали можно приобрести на сайтах sparkfun или adafruit. Или вы можете поступить так же, как я, и спасти как можно больше от старых устройств.

  • Arduino (я использовал UNO R3, но 5 В подойдет любой)
  • Макет
  • Датчик температуры и влажности DHT11
  • Потенциометр 10 кОм
  • ЖК-экран 16x2
  • тактильная кнопка
  • Кабель USB A-B
  • Банк питания
  • Перемычки

Теперь пришло время подключить все провода к устройствам. Пожалуйста, обратитесь к схеме Fritzing (обратите внимание, что у меня нет перемычек между двумя шинами питания на макетной плате. Они вам понадобятся, если вы используете обе):

ЖК-дисплей, который я использую, был извлечен из старой панели пожарной сигнализации. Контакты 15 и 16 расположены перед контактом 1, и вместо контакта 16 это земля, на самом деле это 5v, а контакт 15 — это земля. Пожалуйста, дважды проверьте свой собственный дисплей и убедитесь, что ваши контакты верны. Поскольку распиновка моего дисплея, скорее всего, отличается от почти всех остальных, я сделал схему Fritzing со «стандартным» дисплеем вместо моей точной распиновки.

Здесь показана наша завершенная сборка с Arduino Nano, ЖК-дисплеем и датчиком DHT11

В этом уроке мы работаем над отдельным проектом по температуре и влажности с использованием датчика DHT11.

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

Наша цель на этом уроке — добавить в проект ЖК-дисплей. В уроке 50 у нас заработал датчик, а здесь мы хотим подключить ЖК-дисплей. Мы работаем с компонентами из набора Elegoo, который вы можете получить ЗДЕСЬ. Кроме того, ваша сборка может быть намного аккуратнее, чище и стабильнее, если вы используете arduino nano вместо стандартного arduino uno. Нано имеет небольшой размер и имеет штыревые контакты, которые позволяют подключать его непосредственно к макетной плате, как показано выше. Я настоятельно рекомендую приобрести Arduino Nano, которую вы можете получить ЗДЕСЬ. Этот урок следует за работой, проделанной в уроке 50. Подводя итог, DHT11 подключается следующим образом:

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

Вам также потребуется добавить ЖК-дисплей, используя следующую схему:

Эта схема позволит вам подключить ЖК-дисплей к

На моей фотографии вверху поста видно, что сборка должна быть аккуратной, так как необходимо выполнить множество соединений. Аккуратная работа облегчается, если вы используете короткие провода-перемычки вместо больших проводов «папа-папа». ЗДЕСЬ вы можете получить набор перемычек, который поможет вам работать аккуратно. Я не пытаюсь продать вам кучу хлама, но по мере усложнения проектов вам действительно нужно использовать короткие прямые провода, иначе ваша сборка превратится в крысиное гнездо.

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

Обратите внимание: это партнерские ссылки. Если вы покупаете компоненты по этим ссылкам, мы можем получить комиссию без каких-либо дополнительных затрат для вас. Мы ценим это.

О DHT11, DHT22 и LCD

Если вы не знаете о датчиках температуры DHT11, DHT22 и ЖК-дисплее (распиновка, как это работает, как программировать...), узнайте о них из следующих руководств:

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

Arduino — подключение ЖК-дисплея модуля DHT11

Изображение разработано с помощью Fritzing. Нажмите, чтобы увеличить изображение

Arduino — подключение ЖК-дисплея модуля DHT22

Изображение разработано с помощью Fritzing. Нажмите, чтобы увеличить изображение

Реальная проводка для DHT11

Изображение разработано с помощью Fritzing. Нажмите, чтобы увеличить изображение

Код Arduino — Датчик DHT11 — LCD I2C

Быстрые действия

Изображение разработано с помощью Fritzing. Нажмите, чтобы увеличить изображение

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

Если на ЖК-дисплее ничего не отображается, см. раздел Устранение неполадок на ЖК-дисплее I2C

Код Arduino — Датчик DHT22 — LCD I2C

※ ПРИМЕЧАНИЕ:

Код для DHT11 и DHT22 идентичен, за исключением одной строки кода. Библиотеки для DHT11 и DHT22 одинаковы.

Видеоруководство

Мы планируем сделать видеоуроки. Если вы считаете, что видеоуроки необходимы, подпишитесь на наш канал YouTube, чтобы мотивировать нас на создание видео.

Лучший стартовый комплект Arduino

См. также

※ НАШИ СООБЩЕНИЯ

Вы можете поделиться ссылкой на это руководство где угодно. Однако, пожалуйста, не копируйте контент для публикации на других сайтах. Мы потратили много времени и сил на создание содержания этого урока, пожалуйста, уважайте нашу работу!

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

Узнайте, как отображать показания температуры и влажности на веб-сервере с помощью плат ESP32 или ESP8266:

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

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

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

Если вы хотите использовать эти датчики с платой Arduino, вы можете прочитать следующее руководство:

DHT11 против DHT22

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

Датчик DHT22 имеет лучшее разрешение и более широкий диапазон измерения температуры и влажности. Однако это немного дороже, и вы можете запрашивать показания только с интервалом в 2 секунды.

Диапазон DHT11 меньше, и он менее точен. Однако вы можете запрашивать показания датчиков каждую секунду. Это также немного дешевле.

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

Распиновка DHT

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

В следующей таблице показана разводка контактов DHT22/DHT11. Когда датчик обращен к вам, нумерация контактов начинается с 1 слева направо

Контакт DHTПодключение к
1 3,3 В
2Любой цифровой GPIO; также подключите подтягивающий резистор 10 кОм
3Не подключать
4 Земля

Необходимые детали

Чтобы следовать этому руководству, вам необходимо подключить датчик температуры DHT11 или DHT22 к ESP32. Необходимо использовать подтягивающий резистор на 10 кОм.

Вот список деталей, необходимых для сборки схемы:

Схема

Подключите датчик DHT22 или DHT11 к макетной плате ESP32, как показано на следующей схеме.

В этом примере мы подключаем вывод данных DHT к GPIO 4 . Однако вы можете использовать любой другой подходящий цифровой PIN-код.

Узнайте, как использовать ESP32 GPIO, из нашего руководства: Справочник по распиновке ESP32: какие контакты GPIO следует использовать?

Установка библиотек

Для чтения с датчика DHT мы будем использовать библиотеку DHT от Adafruit. Чтобы использовать эту библиотеку, вам также необходимо установить библиотеку Adafruit Unified Sensor. Выполните следующие шаги, чтобы установить эти библиотеки.

Откройте IDE Arduino и выберите «Скетч» > «Включить библиотеку» > «Управление библиотеками». Должен открыться диспетчер библиотек.

Найдите «DHT» в поле поиска и установите библиотеку DHT из Adafruit.

После установки библиотеки DHT из Adafruit введите «Adafruit Unified Sensor» в поле поиска. Прокрутите вниз, чтобы найти библиотеку и установить ее.

После установки библиотек перезапустите Arduino IDE.

ESP32 Чтение температуры и влажности

Чтобы считать температуру и влажность с датчика DHT, мы будем использовать пример, основанный на библиотеке Adafruit DHT. Скопируйте следующий код в Arduino IDE.

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

Как работает код

Во-первых, вам необходимо импортировать библиотеку DHT:

Затем определите цифровой контакт, к которому подключен контакт данных датчика DHT. В данном случае он подключен к GPIO 4 .

Затем вам нужно выбрать тип используемого датчика DHT. Библиотека поддерживает DHT11, DHT22 и DHT21. Раскомментируйте тип датчика, который вы используете, и прокомментируйте все остальные. В данном случае мы используем датчик DHT22.

Создайте объект DHT с именем dht на выводе и с типом датчика, который вы указали ранее.

В setup() инициализируйте последовательную отладку со скоростью 9600 бод и распечатайте сообщение в последовательном мониторе.

Наконец, инициализируйте датчик DHT.

Цикл() запускается с задержкой 2000 мс (2 секунды), поскольку максимальный период выборки DHT22 составляет 2 секунды. Таким образом, мы можем получать показания только каждые две секунды.

Температура и влажность возвращаются в формате с плавающей запятой. Мы создаем переменные с плавающей запятой h , t и f для сохранения влажности, температуры в градусах Цельсия и температуры в градусах Фаренгейта соответственно.

Получить влажность и температуру так же просто, как использовать методы readHumidity() и readTemperature() объекта dht, как показано ниже:

Если вы хотите получить температуру в градусах Фаренгейта, вам необходимо передать параметр true в качестве аргумента в метод readTemperature().

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

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

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

Демонстрация

Загрузите код на свою плату ESP32. Убедитесь, что в настройках Arduino IDE выбрана правильная плата и COM-порт.

После загрузки кода откройте Serial Monitor со скоростью 9600 бод. Вы должны получать последние показания температуры и влажности в Serial Monitor каждые две секунды.

Устранение неполадок: не удалось прочитать датчик DHT

Если вы пытаетесь считать температуру и влажность с датчика DHT11/DHT22 и получаете сообщение об ошибке в последовательном мониторе, выполните следующие действия, чтобы проверить, сможете ли вы заставить датчик работать (или прочтите наш специальный раздел DHT). Руководство по устранению неполадок).

«Не удалось прочитать данные с датчика DHT!» или чтения Нан

Если ваш датчик DHT возвращает сообщение об ошибке «Не удалось прочитать данные с датчика DHT!» или показания DHT возвращают «Nan»:

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

  • Проводка: когда вы создаете проект электроники, вам необходимо дважды проверить проводку или назначение контактов. После проверки и проверки правильности подключения вашей схемы, если она по-прежнему не работает, продолжайте читать следующие советы по устранению неполадок.
  • Питание: датчик DHT имеет рабочий диапазон от 3 В до 5,5 В (DHT11) или от 3 В до 6 В (DHT22). Если вы питаете датчик от контакта ESP32 3,3 В, в некоторых случаях питание DHT с помощью 5 В решает проблему.
  • Плохой USB-порт или USB-кабель: иногда питания ESP32 напрямую от USB-порта ПК недостаточно. Попробуйте подключить его к USB-концентратору с питанием от внешнего источника питания. Также может помочь замена USB-кабеля на более качественный или более короткий. Наличие USB-порта, обеспечивающего достаточную мощность, или использование хорошего USB-кабеля часто решает эту проблему.
  • Источник питания: как упоминалось в предыдущем совете, ваш ESP может не обеспечивать достаточную мощность для правильного считывания данных с датчика DHT. В некоторых случаях может потребоваться питание ESP от источника питания с большей силой тока.
  • Тип датчика: еще раз проверьте, что вы раскомментировали/закомментировали в своем коде датчик, подходящий для вашего проекта. В этом проекте мы использовали DHT22:
  • Частота выборки: датчик DHT очень медленно получает показания (показания датчика могут занимать до 2 секунд). В некоторых случаях проблема решается увеличением времени между показаниями.
  • Датчик DHT сгорел или сломался: к сожалению, эти дешевые датчики иногда выглядят совершенно нормально, но они сгорели/сломаны. Таким образом, даже если вы собрали правильную схему и код, он все равно не сможет получить показания. Попробуйте использовать другой датчик, чтобы проверить, решит ли он вашу проблему.
  • Неверная скорость передачи данных или не удалось загрузить код: если вы ничего не видите в последовательном мониторе Arduino IDE, дважды проверьте, правильно ли вы выбрали скорость передачи данных, COM-порт или успешно загрузили код.

При создании наших проектов мы сталкивались с похожими проблемами с DHT, и они всегда решались одним из методов, описанных ранее.

Неустранимая ошибка: Adafruit_Sensor.h: нет такого файла или каталога

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

Необходимо установить библиотеку драйверов Adafruit Unified Sensor. В Arduino IDE введите в поле поиска «Adafruit Unified Sensor», прокрутите вниз до конца, чтобы найти библиотеку и установить ее.

После установки библиотеки перезапустите Arduino IDE, и код должен скомпилироваться без сообщения об ошибке.

Подведение итогов

Из этого руководства вы узнали, как получать показания температуры и влажности от датчика DHT11 или DHT22 с помощью ESP32 с Arduino IDE. Получить показания температуры и влажности с помощью библиотеки Adafruit DHT очень просто: достаточно использовать методы readTemperature() и readHumidity() для объекта DHT.

Теперь вы можете вывести этот проект на новый уровень и отображать показания датчиков на веб-сервере, к которому можно обращаться с помощью браузера смартфона. Узнайте, как создать веб-сервер с помощью ESP32 для отображения показаний датчиков: Веб-сервер ESP32 DHT11/DHT22 — температура и влажность с использованием Arduino IDE.

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