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


Датчик температуры и влажности DHT22 — это универсальный и экономичный датчик, используемый для измерения температуры и влажности окружающей среды в самых разных областях применения. Он имеет цифровой сигнальный выход и позволяет производить высокоточные измерения с разрешением 0,1 градуса Цельсия для температуры и 0,1% для влажности. Датчик использует емкостной чувствительный элемент влажности и термистор для измерения влажности и температуры соответственно. Датчик DHT22 также имеет относительно малое энергопотребление и может работать в диапазоне напряжений от 3,3 В до 5 В, что делает его подходящим для проектов с питанием от батареек/аккумуляторов. Кроме того, датчик обладает долговременной стабильностью и высокой надежностью, что делает его идеальным выбором для различных приложений, таких как HVAC, метеостанции и системы мониторинга качества воздуха.

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

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

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. Датчик температуры и влажности DHT22 (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с диагональю 0.96 дюйма и интерфейсом I2C (купить на AliExpress).

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

Наиболее распространенные модули DHT22 имеют всего 3 контакта, но базовая модель модуля DHT22 содержит 4 контакта. Но дополнительный 4-й контакт в данном случае имеет обозначение NC и не используется, поэтому не важно какую модификацию данного модуля вы купите - все равно вы будете использовать только три из его контактов.

Распиновка датчика DHT22

Распиновка датчика DHT22 приведена на следующем рисунке.

Распиновка датчика DHT22

DATA - контакт данных для связи по протоколу 1-Wire.

GND - общий провод (земля) датчика, необходимо подключить к общему контакту платы Arduino.

VCC - контакт подачи питания на датчик.

Not Used - не используется в данном датчике.

Компоненты датчика DHT22

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

Компоненты датчика DHT22

Схема датчика

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

Принципиальная схема датчика температуры и влажности DHT22

Выводы VCC и GND модуля датчика подключены напрямую к DHT22, а к его выводу DATA подключен  подтягивающий резистор. Танталовые и многослойные конденсаторы обеспечивают достаточную фильтрацию. В качестве индикации питания на некоторых разновидностях модуля можно найти индикаторный светодиод, но на большей части разновидностей модуля светодиод отсутствует.

Наиболее часто задаваемые вопросы про датчик DHT22

Что такое DHT22 в двух словах?

DHT22 — это более дорогая версия датчика DHT11, которая, очевидно, имеет лучшие характеристики. Его диапазон измерения температуры составляет от -40 до +125 градусов Цельсия с точностью +-0,5 градуса, а диапазон температуры DHT11 составляет от 0 до 50 градусов Цельсия с точностью +-2 градуса.

Является ли DHT22 аналоговым или цифровым датчиком?

DHT-22 (также называемый AM2302) представляет собой датчик относительной влажности и температуры с цифровым выходом.

Является ли DHT22 водонепроницаемым?

Нет. Он не водонепроницаемый.

Какова частота дискретизации датчика DHT11?

DHT22 имеет частоту дискретизации 1 Гц.

Какой протокол использует DHT22?

Датчик DHT22 использует запатентованный (проприетарный) протокол связи с одной шиной, который может отправлять и получать данные с рассчитанными синхронизирующими импульсами.

Как работает датчик DHT22

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

Внешний вид модуля датчика DHT22 изнутри

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

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

Протокол связи с одной шиной DHT22

Протокол связи с одной шиной используется для связи между датчиком DHT22 и микроконтроллером. Передача пакета данных занимает около 4 мс. Эти данные состоят из десятичной и целой частей. Общие данные имеют длину 40 бит и формат MSB. Формат данных следующий: 8-битные целочисленные данные RH + 8-битные десятичные данные RH + 8-битные целочисленные данные T + 8-битные десятичные данные T + 8-битная контрольная сумма. Если передача данных выполнена правильно, контрольная сумма должна быть последними 8 битами «8-битных целочисленных данных RH + 8-битных десятичных данных RH + 8-битных интегральных данных T + 8-битных десятичных данных T».

Когда микроконтроллер (в нашем случае плата Ардуино) отправляет сигнал запуска, датчик DHT22 переходит из режима низкого энергопотребления в рабочий режим и выгружает все 40-битные данные в микроконтроллер, микроконтроллер считывает данные и вычисляет температуру и влажность на основе полученных двоичных данных.

Пример передачи данных между микроконтроллером и датчиком DHT22 показан на следующем рисунке.

Пример передачи данных между микроконтроллером и датчиком DHT22

Схема проекта

Схема подключения датчика DHT22 к плате Arduino приведена на следующем рисунке.

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

Соединения в схеме просты и требуют только трех проводов. Подключите VCC и GND модуля к контактам 5V и GND платы Arduino. Затем подключите контакт DATA к цифровому контакту 2 Arduino. Мы будем общаться с DHT22 через этот контакт.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом установим библиотеку от Adafruit’s DHT sensor library и Adafruit Unified Sensor Driver с помощью менеджера библиотек. Затем подключим используемые библиотеки в программе.

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

Далее, в функции setup(), инициализируем последовательную связь для целей отладки, инициализируем датчик и дисплей. Установим параметры вывода текста на дисплей.

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

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

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
1 579 просмотров

Комментарии

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

  1. а кто может показать как выглядит настоящий DHT22, а то купил на Алике две штуки таких и похоже фигню - температуру врут на 2.5°С +- 0.5

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

  2. парни, не подскажете какой дисплей он использует на фото собранной конструкции проекта? мне очень нужно для своего проекта(((

    • Так по приведенной ссылке на Aliexpress переходите и там увидите этот дисплей. Поскольку используем протокол I2C, а не SPI, то достаточно дисплея всего с 4 контактами. Более подробно о различиях между этими типами дисплеев вы можете прочитать в этой статье.

  3. То, что сфотографировал как внутренности DHT 22 - на самом деле не DHT22, а современная "подделка" под DHT22. Изначально датчик внутри выглядел совсем не так.
    А то что сфотографировано - какой то полностью цифровой сенсор для I2c (типа SHT20) и микросхема конвертер под шину Single Bus.
    Это не хуже. Это может и лучше.
    Но это не DHT22, а его эмулятор

    • Ну я надеюсь эта фотография не портит общего положительного впечатления от статьи

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

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