Dht22 подключение к ардуино

Надо сразу признать, что первая версия заоконного (удаленного) датчика получилась не совсем удачной в плане электропитания и энергопотребления. Как я уже писал, у меня под рукой был только модуль Arduino Pro Mini на 5 В. И я использовал Ni-MH аккумуляторы.

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

Чтобы у вас всё работало гораздо дольше, произведите следующие замены:

  • Купите Arduino Pro Mini на 3,3В
  • Используйте Li-ion аккумулятор типа Panasonic NCR18650A на 3,7 В, 2 шт. примерно за $14 на 3100mAh. Можете попробовать CR123, CR123A батареи. И помните о том, что 9В батарея (типа «Крона») плохой источник питания.

Главное, что надо помнить, это то, что ваши аккумуляторы будут работать на улице, т.е. при отрицательных температурах, которые замедляют химические процессы происходящие внутри них и, тем самым, сильно снижают их ёмкость.

Датчик DHT22 сможет работать и от 3,3 В, так что тут всё путём.

Вышеописанные перестановки не повлекут переделки или замены других компонент.

Питание

Первоначально я использовал 4 шт. Ni-MH аккумулятора соединённых последовательно с отводом от 3-его, так что получилось два питающих напряжения: на 4,8 В для датчика DHT22 и 3,6 В для всего остального. Я не применял понижающие (точнее уничтожающие энергию) или повышающие электронные схемы, только экологически чистые напряжение и ток.

Питание

Солнечная панель подключена как показано на рисунке. Solar панель 1.6W 5.5V 266mA покупалась за $6,64.

В схеме использован диод Шоттки типа 1N914 и электролитический конденсатор 50—100мкФ.

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

КАК ИЗМЕРИТЬ ТЕМПЕРАТУРУ И ВЛАЖНОСТЬ. ДАТЧИКИ DHT11 И DHT22 [Уроки Ардуино #13]

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

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

Проверочный скетч для работы с 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

Скетч

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

#include «DHT.h» #define DHTPIN 2 // вывод, к которому подключается датчик #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); void setup() Serial.begin(9600); dht.begin(); > void loop() delay(250); // считывание температуры или влажности занимает примерно 250 мс! // считанные показания могут отличаться от актуальных примерно на 2 секунды (это очень медленный датчик) float h = dht.readHumidity(); // Считывание температуры в цельсиях float t = dht.readTemperature(); // проверяем, были ли ошибки при считывании и, если были, начинаем заново if (isnan(h) || isnan(t)) Serial.println(«Failed to read from DHT sensor!»); return; > //выводим информацию в Монитор последовательного порта Serial.print(«Humidity: «); Serial.print(h); Serial.print(» %t»); Serial.print(«Temperature: «); Serial.print(t); Serial.println(» *C «); >

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

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

Подавляющее большинство проектов начинающих на Arduino так или иначе связаны с получением данных об окружающей среде – вроде метеостанций. Обычно в них используется сверхдешёвый низкоточный DHT11, который нормально меряет только температуру, а влажность лишь косвенно зависит от окружающей среды. Поэтому, если вам нужны действительно точные измерения, лучше использовать датчик DHT22, о котором и пойдёт речь!

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

  • Arduino Uno R3
  • DHT22 (AM2302) – модуль температуры и влажности
  • Макетная плата на 170 точек
  • Набор макетных проводов “папа-папа”

Краткий обзор

Датчик может питаться от 3.3-6 В, то есть спокойно может применяться со всеми типами Arduino. Для связи используется однопроводной протокол, несовместимый с DHT11. Диапазоны измерения – температуры от -40 до 80°С, относительной влажности от 0 до 100%. Типичная погрешность – ±2% влажности и менее 0.5 °С температуры.

Каждые 2 секунды датчик способен выдавать обновлённую информацию. Время передачи одного пакета данных – 5 мс.

Размеры датчика – 21×15 мм, шаг контактов – 2 мм, то есть их можно вставить в беспаечную макетку, но придётся подгибать ножки.

Скетч для датчика DHT22 Arduino с дисплеем

#include «DHT.h» DHT dht(2, DHT11); #include «OLED_I2C.h» OLED myOLED(SDA, SCL, 8); extern uint8_t BigNumbers[]; void setup() < dht.begin(); myOLED.begin(); >void loop()

Заключение. В этом обзоре мы рассмотрели, как подключить DHT22 к Arduino и основные характеристики сенсора. Мы представили несколько примеров программ для передачи информации с цифрового датчика на аппаратный монитор порта Arduino IDE и дисплей OLED 0,96 i2c. Существует множество проектов метеостанций с сенсором температуры и влажности вре22 (AM2302), которые можно сделать самостоятельно.

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

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

Наиболее распространенные модули 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

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

Характеристики:

  • Питание: 3,3 … 6 В постоянного тока
  • Потребляемый ток: 1 … 1,5 мА во время измерений
    40…50мкА в режиме ожидания
  • Диапазон влажности: 0 … 100 % разрешение 0,1% точность ±2%
  • Диапазон температуры: -40 … 80 °C разрешение 0,1°C точность ±0,5°C
  • Период измерений: 2 сек. между измерениями
  • Выходной сигнал: Цифровой

Датчик DHT22 имеет 4 вывода:

2 – Вывод данных

3 – Не используется

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

Для подключения датчика нам необходимы:

  • Любая Arduino-совместимая плата
  • Резистор 10 КОм
  • Компьютер с установленной средой Arduino IDE.
  • USB кабель для подключения Arduino к персональному компьютеру

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

Принципиальная схема подключения компонентов:

Скетч для Arduino:

Для считывания показаний с датчика необходимо использовать библиотеку*

DHT sensor library.

Скачать её можно здесь.

*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.

#include // Подключение библиотеки #define DHTPIN 2 // Выбираем цифровой pin, к которому подключается информационный выход датчика #define DHTTYPE DHT22 // Указываем тип датчика DHT dht(DHTPIN, DHTTYPE); void setup() Serial.begin(9600); Serial.println(F(«DHT test!»)); dht.begin(); > void loop() // Обеспечиваем интервал в 2 секунды между измерениями delay(2000); // Переменная для считывания значения влажности float h = dht.readHumidity(); // Переменная для считывания значения температуры (в градусах Цельсия) float t = dht.readTemperature(); // Переменная для считывания значения температуры (в Фаренгейтах) float f = dht.readTemperature(true); // Проверка подключения датчика. if (isnan(h) || isnan(t) || isnan(f)) Serial.println(F(«Failed to read from DHT sensor!»)); return; > float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print(F(«Humidity: «)); Serial.print(h); Serial.print(F(«% Temperature: «)); Serial.print(t); Serial.print(F(«°C «)); Serial.print(f); Serial.print(F(«°F Heat index: «)); Serial.print(hic); Serial.print(F(«°C «)); Serial.print(hif); Serial.println(F(«°F»)); >

Оцените статью
TutShema
Добавить комментарий