Подключение датчиков dht11 и dht22 к arduino

Модуль датчика температуры KY-001

Модуль состоит из датчика температуры воздуха с цифровым представлением данных. Основной компонент – микросхема DS18B20, преобразующая температуру корпуса в информацию передаваемую по последовательной двухпроводной шине данных 1-Wire. На шину данных можно установить несколько датчиков. Можно применять для измерения температуры воздуха в помещении и на открытом воздухе.

Также на модуле установлен резистор сопротивлением 4,7 кОм и светодиодный индикатор включения питания.

Технические характеристики

  • Питание: напряжение 3…5,5 В, ток 10 мА
  • Диапазон измерения температуры -55…125 °С/-57°F to 257°F
  • Разрешающая способность: 9…12 бит
  • Точность ±0,5 °С в диапазоне -10…+85 °С
  • Время измерения при разрешающей способности 12 бит составляет 0,75 с

Имеет три вывода:

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

Подключение датчика температуры DS18B20 к Arduino

Достаточно теории, давайте практиковаться! Давайте подключим DS18B20 к Arduino.

Подключение довольно простое. Начните с подключения VDD к 5V выходу на Arduino, и GND – к земле.

Затем подключите оставшийся цифровой сигнальный вывод DQ к цифровому выводу 2 на Arduino. Вам также необходимо добавить подтягивающий резистор 4,7 кОм между сигнальным выводом и выводом питания, чтобы обеспечить стабильную передачу данных (внутренние подтягивающие резисторы на ардуино не работают).

Будьте осторожны, чтобы правильно подключить DS18B20. Если вы сделаете это неправильно, он нагреется, а затем выйдет из строя.

Рисунок 3 – Подключение датчика температуры DS18B20 к Arduino

Если вы используете водонепроницаемую версию DS18B20, подключите красный провод к 5V, черный провод соединится с землей, а желтый провод – данные, которые поступают на цифровой вывод 2 на Arduino. Вам всё еще нужно подключить подтягивающий резистор 4,7 кОм между линией данных и шиной 5 В.

Рисунок 4 – Подключение водонепроницаемого датчика температуры DS18B20 к Arduino

Как работает датчик влажности почвы?

Работа датчика влажности почвы довольно проста.

Вилка в форме зонда с двумя открытыми проводниками действует как переменный резистор (потенциометр), сопротивление которого изменяется в зависимости от содержания воды в почве.

Рисунок 1 – Работа датчика влажности почвы

Это сопротивление обратно пропорционально влажности почвы:

  • большее количество воды в почве означает лучшую проводимость и приводит к снижению сопротивления;
  • меньшее количество воды в почве означает худшую проводимость и приводит к повышению сопротивления.

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

Модуль датчика температуры KY-013

Датчик является аналоговым, но использовать его нужно не для измерения конкретных температур, а для слежения за превышением пороговых значений. В модуле используется PTC-термисторы — при повышении температуры растёт и сопротивление.

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

В целом использовать аналоговый датчик температуры KY-013 как термометр проблематично. Больше подходит для случаев, когда нужно включить прибор при определённой температуре и выключить при другой. Сначала нужно выяснить какое напряжение подаётся на аналоговый вход при нужной вам температуре, а затем написать код на основе полученных значений.

Характеристики модуля KY-001.

Модуль датчика температуры KY-001 состоит из цифрового датчика температуры DS18B20, светодиода и резистора. Модуль совместим с популярными электронными платформами, такими как Arduino, Raspberry Pi и Esp8266.

  • Собран на цифровом сенсоре DS18B20, напряжение питания от 3.0 V до 5.5 V.
  • Измеряемая температура -55 ° C до +125 ° C, по Фаренгейту — 67 ° F до 257 ° F.
  • В диапазоне от -10 °C до +85 ° C точность измерения ± 0.5 ° C.
  • Время измерения не более 750 миллисекунд.

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

Схема подключения модуля KY-001 (DS18B20) к Arduino.

Схема подключения модуля KY-001 (DS18B20) к Arduino NANO.

Схема подключения модуля KY-001 (DS18B20) к Arduino.

Подключите линию питания (посередине) c к +5 Arduino, землю (-) и GND соответственно. Подключите сигнал (S) к контакту 2 на Arduino.

Подключение (слева направо)

  • GND
  • +5V
  • S — Signal, в примере подключаем ко 2 выводу arduino

Скетч вывода температуры с модуля KY-001 (DS18B20) в монитор порта.

Код ниже будет выводить показания температуры с модуля KY-001 (DS18B20) в монитор последовательного порта каждую секунду.

#include <OneWire.h>
OneWire ds(2);
void setup() {
    Serial.begin(9600);
}
void loop() {
    byte i;
    byte data;
    byte addr;
    float celsius;
    // поиск датчика
    if ( !ds.search(addr)) {
        ds.reset_search();
        delay(250);
        return;
    }
    ds.reset();
    ds.select(addr);
    ds.write(0x44, 1); // измерение температуры
    delay(1000);
    ds.reset();
    ds.select(addr); 
    ds.write(0xBE); // начало чтения измеренной температуры
    //показания температуры из внутренней памяти датчика
    for ( i = 0; i < 9; i++) {
        data = ds.read();
    }
    int16_t raw = (data << 8) | data;
    // датчик может быть настроен на разную точность, выясняем её 
    byte cfg = (data & 0x60);
    if (cfg == 0x00) raw = raw & ~7; // точность 9-разрядов, 93,75 мс
    else if (cfg == 0x20) raw = raw & ~3; // точность 10-разрядов, 187,5 мс
    else if (cfg == 0x40) raw = raw & ~1; // точность 11-разрядов, 375 мс
    // преобразование показаний в градусы Цельсия 
    celsius = (float)raw / 16.0;
    Serial.print("t=");
    Serial.println(celsius);
}

Вот такой результат мы увидим в мониторе порта.

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

С библиотекой DallasTemperature устанавливаются примеры. Вы можете воспользоваться любым из них.

Мы рассмотрим более простотой пример, который я взял из библиотеки, и немного его упростил.

#include <OneWire.h>
#include <DallasTemperature.h>
// контакт 2 на Arduino:
#define ONE_WIRE_BUS 2
// создаем экземпляр класса OneWire, чтобы с его помощью
// общаться с однопроводным устройством
OneWire oneWire(ONE_WIRE_BUS);
// передаем объект oneWire объекту sensors:
DallasTemperature sensors(&oneWire);
void setup(void)
{
  Serial.begin(9600);
  // запускаем библиотеку:
  sensors.begin();
}
void loop(void){
  // вызываем функцию sensors.requestTemperatures(),
  // которая приказывает всем устройствам, подключенным к шине
  sensors.requestTemperatures();
  Serial.print("Celsius temperature: ");
  //  в Цельсиях:
  Serial.print(sensors.getTempCByIndex(0));
  Serial.print(" - Fahrenheit temperature: ");
  //  в Фаренгейтах:
  Serial.println(sensors.getTempFByIndex(0));
  delay(1000);
}

В данном примере температура выводится 1 раз в секунду, и при этом выводится температура в Цельсиях и Фаренгейтах в монитор последовательного порта.

Как видите, данный пример намного меньше и более понятен для новичка.

KY-001датчик температуры DS18B20 к ArduinoKY-001

Купить модуль KY-001 можно тут:

Описание всех датчиков из набора «37 in 1 Sensors Kit for Arduino» вы можете посмотреть на странице описания данного набора модулей для Arduino.

Понравился Урок KY-001 модуль температуры на базе DS18B20. Подключение Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

Модуль KY-001 датчика температуры DS18B20.pdf 82 Kb 39 Скачать
Скетч вывода температуры с модуля KY-001 .ino 1 Kb 39 Скачать
Код с использованием бмблиотеки DallasTemperature.h.ino 1 Kb 40 Скачать
Библиотека DallasTemperature .zip 31 Kb 47 Скачать

Подключение датчика DHT11, DHT22/AM2302 к плате ESP8266 NodeMCU

Подключить датчик DHT11/DHT22/AM2302 к ESP8266 NodeMCU довольно просто. Начните с установки NodeMCU на макетную плату, чтобы каждая сторона платы NodeMCU была на отдельной стороне макетной платы.

Теперь установите датчик на макетную плату, в стороне от NodeMCU. Подключите вывод VCC датчика к выводу 3,3V на NodeMCU и соедините выводы земли датчика и платы. Также подключите вывод данных датчика к выводу D8 платы ESP8266 NodeMCU. Наконец, нам нужно установить подтягивающий резистор 10 кОм между линией VCC и линией данных, чтобы на ней поддерживался высокий логический уровень для корректной связи между датчиком и NodeMCU. Если у вас датчик установлен на отдельную плату, возможно, вам не нужно добавлять какие-либо внешние подтягивающие резисторы. В этом случае датчик поставляется уже со встроенным подтягивающим резистором.

Когда вы закончите, у вас должно получиться что-то похожее на рисунок ниже.

Рисунок 1 – Подключение DHT11, датчика температуры и влажности, к ESP8266 NodeMCUРисунок 2 – Подключение DHT22, датчика температуры и влажности, к ESP8266 NodeMCU

О датчике DHT11

Этот датчик включает в себя гигрометр и термометр, что дает ему возможность узнавать температуру и влажность воздуха:

  • Что касается точности прибора, то тут все в порядке, учитывая его низкую цену. Процент максимальных отклонений — всего 5 %.
  • Измеряет температуру в диапазоне от 0 °С до +50 °С. Как можно заметить, при морозах с этим датчиком не поработаешь, к сожалению.
  • Что касается гигрометра внутри DHT11, он тоже неплохой, измеряет влажность в диапазоне от 20 до 80 %.
  • Скорость работы средняя, можно отправлять не более 1 запроса в секунду. Много или это мало — зависит от проекта. В большинстве случае этот датчик используют для обучения или для мелких проектов, например, измерения температуры в автоматической теплице. Там нет необходимости измерять температуру и влажность быстрее 1 раза в секунду, скорее наоборот, нужно заботиться об экономии энергии, чтобы ваш проект как можно больше работал от портативного источника питания.
  • При запросе DHT11 потребляет 2.5 мА.

Библиотека для DHT

Измерим температуру и влажность воздуха при помощи датчика DHT11.

Следует подключить подтягивающий резистор на 10 кОм между питанием и сигналом. У меня такого не оказалось, я подключил резистор на 2.2 кОм, вроде не сгорело. Для датчика DHT22 резистор не обязателен.

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

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

У меня получилась следующая схема.

Первую ножку датчика соедините с питанием на 5В (красный провод), вторую — с пином номер 2, третью пропускаем, а четвёртую соединяем с GND (чёрный провод). Также вставляем на плату резистор — одна ножка соединяется с первой ножкой датчика, а вторая со второй.

Следующий шаг — установка библиотеки. В сети существует много библиотек для данного датчика. Популярна библиотека GitHub — adafruit/DHT-sensor-library: Arduino library for DHT11DHT22, etc Temp & Humidity Sensors. Скачиваем архив и переименовываем папку в DHT, папку размещаем в общей папке для библиотек Arduino libraries.

Второй и удобный способ — установка через менеджер библиотек. Открываем Tools | Manage Libraries… и в поиске диалогового окна вводим DHT. Найдётся несколько библиотек, выбираем библиотеку от Adafruit. Устанавливайте версию 1.2.3. Если вы будете устанавливать версию 1.3.0 или выше, то вам придётся также установить ещё библиотеку Adafruit Unified Sensor, без неё скетч не будет компилироваться.

После установки библиотеки, запускаем IDE и находим пример File | Examples | DHT sensor library | DHTtester.

Скетч по умолчанию рассчитан на датчик DH22, поэтому вам нужно сначала закомментировать строчку #define DHTTYPE DHT22 и снять комментарий с строчки #define DHTTYPE DHT11.

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

Запускаем скетч и наблюдаем за результатами в Serial Monitor. Датчик считается очень медленным, поэтому не следует делать слишком маленькую задержку, в примере используется пауза на две секунды.

Пример проверялся летом в жаркий день. Результаты вполне правдоподобны. Если подышать на датчик (помните в детстве мы дышали на стекло?), то влажность увеличится (и температура). Через какое-то время показания будут медленно возвращаться к первоначальным.

В составе библиотеки также есть файл с именами функций.

DHT
Класс датчика. Объявляем объект класса: DHT dht(DHTPIN, DHTTYPE);. В первом параметре объявляем пин, во втором — тип датчика
begin()
Запускаем датчик
readTemperature()
Без параметров функция измеряет в градусах Цельсия. Вызов readTemperature(true) вернёт значения в градусах Фаренгейта
convertCtoF()
Конвертирует из одной системы в другую
convertFtoC()
Конвертирует из одной системы в другую
computeHeatIndex()
Выводит индекс жары. По умолчанию используется индекс на основе градусов Фаренгейта, где нужно указать градусы и влажность. Для температуры по Цельсию нужно указывать три параметра computeHeatIndex(t, h, false)
readHumidity()
Функция для измерения влажности
read()
Что-то считывает

Дополнительные материалы для DHT

Fritzing-Library/DHT11 Humitidy and Temperature Sensor.fzpz at master · adafruit/Fritzing-Library · GitHub — в составе Fritzing нет датчика DH11. Скачайте данный файл и перетащите его на окно программы. Теперь вы сможете составлять схемы с его участием (смотри мой скриншот выше). В программе он будет находиться в разделе MINE.

Датчик температуры и влажности DHT11 (DHT22) — здесь дана дополнительная информация о работе датчика в модульном исполнении, ссылка на даташиты, примеры кода без библиотеки, графики.

winlinvip/SimpleDHT: Simple, Stable and Fast Arduino Temp & Humidity Sensors for DHT11 and DHT22 — ещё одна библиотека. Доступна через менеджер библиотек.

Подключение датчиков DHT к Arduino

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

Подключаются датчики легко. Так как у них достаточно длинные коннекторы 0.1″, можно устанавливать их непосредственно на макетную или монтажную плату (смотрите на рисунке ниже).

Непосредственное подключение к Arduino тоже простое. На сенсоре 4 коннектора:

  • Питание (VCC) — от 3 до 5 В.
  • Вывод данных.
  • Не подключается.
  • Земля.

Коннектор 3 просто игнорируйте, он не подключается. Желательно подключить подтягивающий резистор на 10 кОм между питанием и сигналом. На Arduino есть встроенные резисторы, но их номинал 100кОм нам не подойдет.

На рисунке ниже приведена схема подключения DHT11 к Arduino. Подключите сигнал с датчика к пину 2, чтобы схема соответствовала примеру скетча, который приведен ниже. Этот пин можно изменить с соответствующими правками в коде.

Распиновка датчика влажности почвы

Датчик влажности почвы очень прост в использовании и содержит только 4 вывода для связи с внешним миром.

Рисунок 5 – Распиновка датчика влажности почвы

AO (аналоговый выход) выдает аналоговый сигнал с напряжением в диапазоне между напряжением питания и 0 В и будет подключен к одному из аналоговых входов нашей платы Arduino.

Вывод DO (цифровой выход) выдает цифровой выходной сигнал со схемы встроенного компаратора. Вы можете подключить его к любому цифровому выводу на Arduino или напрямую к 5-вольтовому реле или подобному устройству.

Вывод VCC подает питание на датчик. Рекомендуется питать датчик напряжением от 3,3 до 5 В

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

GND для подключения земли.

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

Принцип соединения гигрометра с Arduino общий для всех видов сенсоров.

  • Выход VCC подключается к Arduino на 5В-контакт.
  • GND соединяется с соответствующим контактом Ардуино.
  • Сигнальный выход — с сигнальным входом (аналоговым или цифровым, в зависимости от ситуации).

Возможности платы Ардуино позволяют реализовать различные способы считывания. Можно, например, выводить показатели на небольшой LCD-дисплей, включать или выключать диоды, инициировать отправку иных сигналов или запуск автоматической «поливалки». Все зависит от желания владельца и заложенных в программу контроллера директив.

Цифровой режим

Для подключения датчика влажности почвы FC-28 в цифровом режиме мы подключим цифровой выход датчика к цифровому контакту Arduino.

Модуль датчика содержит потенциометр, который использован для того чтобы установить пороговое значение. Пороговое значение после этого сравнивается со значением выхода датчика используя компаратор LM393, который помещен на модуле датчика FC-28. Компаратор LM393 сравнивает значение выхода датчика и пороговое значение, и после этого дает нам выходное значение через цифровой вывод.

Когда значение датчика больше чем пороговое значение, цифровой выход передаст нам 5В, и загорится светодиод датчика. В противном случае, когда значение датчика будет меньше чем это пороговое значение на цифровой вывод передастся 0В и светодиод не загорится.

Электрическая схема

Соединения для датчика влажности почвы FC-28 и Ардуино в цифровом режиме следующие:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • D0 FC-28 → Пин 12 Arduino
  • Светодиод положительный → Вывод 13 Ардуино
  • Светодиод минус → GND Ардуино

Код для цифрового режима

Код для цифрового режима ниже:

int led_pin =13;
int sensor_pin =8;
void setup() {
pinMode(led_pin, OUTPUT);
pinMode(sensor_pin, INPUT);
}
void loop() {
if(digitalRead(sensor_pin) == HIGH){
digitalWrite(led_pin, HIGH);
} else {
digitalWrite(led_pin, LOW);
delay(1000);
}
}

Объяснение кода

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

int led_pin = 13;
int sensor_pin = 8;

В функции setup мы объявляем пин светодиода как пин выхода, потому что мы включим светодиод через него. Мы объявили пин датчика как входной пин, потому как Ардуино будет принимать значения от датчика через этот вывод.

void setup() {
pinMode(led_pin, OUTPUT);
pinMode(sensor_pin, INPUT);
}

В функции цикла, мы считываем с вывода датчика. Если значение более высокое чем пороговое значение, то включится светодиод. Если значение датчика будет ниже порогового значения, то индикатор погаснет.

void loop() {
if(digitalRead(sensor_pin) == HIGH){
digitalWrite(led_pin, HIGH);
} else {
digitalWrite(led_pin, LOW);
delay(1000);
}
}

На этом вводный урок по работе с датчиком FC-28 для Ардуино мы завершаем. Успешных вам проектов.

Соединяемся с Ubuntu

Но мы не может посмотреть температуру, которую выдаёт наш собранный прибор. Для этого в Ubuntu можно установить специальную программу, которая считывает данные, поступающие на последовательный порт. Эта программа называется CuteCom.

CuteCom

Через «Центр приложений Ubuntu» ищем данную программу и устанавливаем на компьютер. После этого запускаем её и вводим в поле Device: «/dev/ttyACM0». После нажимаем кнопку «Open Device» и наблюдаем данные, которые получает компьютер через USB.

Если всё было подключено правильно и в программе не было ошибок, то можно увидеть показания температуры, которые обновляются каждые 2 секунды. Это значение можно изменить при желании. Но можно увидеть показания неправильной температуры и влажности, когда вместо 24 градусов устройство выдаёт 616 градусов. А вместо 50% влажности — видим 1777%.

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

Тут всё обстоит совершенно по другому. Библиотека DHT рассчитана на то, что она обрабатывает показания как термодатчиков DHT11, так и DHT22. По умолчанию в примере программы незакомментированной является строка для датчика DHT22, и если Вы использовали DHT11, то будут неправильные показания. Всё, что осталось сделать — это закомментировать строку для DHT22 и раскомментировать для DHT11. После этого загрузить новый скетч на плату Arduino и наблюдать в программе CuteCom правильные показания.

Подключение датчика влажности почвы V1.2 к Arduino

Чтобы подключить датчик к плате нам нужно только три провода, GND, VCC и AOUT. Датчик прост в использовании, поскольку он связывается с платой через аналоговый вывод, и нет необходимости использовать какие-либо библиотеки.

Для чтения данных с нашего датчика мы будем использовать контакт A0, а схема соединения будет следующей:

Первая программа – проверка датчика

Чтобы проверить, работает ли датчик, нам понадобится лишь немного переработанная программа «AnalogReadSerial», которая представлена ​​ниже:

void setup() {
  Serial.begin(9600);
}
void loop() {
  int wilg = analogRead(A0);
  int wil = map(wilg,310,570, 100, 0);
  Serial.println(wil);
  delay(500); 
}

Программа призвана отобразить данные, полученные с датчика в монитор последовательного порта. Если данные стабильны (допустимы колебания в размере 0.5%), то значит датчик работает.

По умолчанию программа “AnalogReadSerial” возвращает считанное значение на пин A0 в диапазоне 0-1024, но мы внесли небольшую модификацию, которая позволяет отображать данные в диапазоне 0-100. Это позволит оценивать степень влажности почвы в процентах.

Датчик выдает напряжение в диапазоне 0-3В, так что с помощью функции map() мы эффективно выделили только диапазон, который использует датчик.

Результаты, отображаемые на мониторе последовательного порта, приведены ниже:

Работу датчика можно очень легко проверить. Если в мониторе последовательного порта значения сухого датчика составляют 0…2, а погруженного в стакан с водой 98…100, то это значит, что датчик работает правильно!

Вторая программа – автоматический полив

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

Для этого мы используем Arduino Pro Mini, водяной насос, светодиод и, конечно же, датчик влажности почвы.

В дополнение к ранее упомянутым элементам, для управления насосом потребуется MOSFET-транзистор. Вам понадобится резистор 220 Ом для светодиода и 10 кОм для транзистора, программатор FTDI для загрузки программы в Pro Mini, панель блока питания для макетной платы пластины, к которой мы подключим блок питания.

Зачем нужен отдельный источник питания? Так как насос потребляет гораздо больше энергии, чем может обеспечить нас Arduino и FTDI преобразователь, то питание всего устройства только через порт USB может привести к сгоранию платы, преобразователя или даже материнской платы.

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

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

Краткое пояснение: датчик подключен к контакту А0, транзистор управления насосом вместе со светодиодом подключен к контакту 11. Программатор для Pro Mini подключен — GND к GND, VCC к VCC, RX к TX и TX к RX.

Когда мы обсудили подключение всех элементов, мы можем перейти к самой программе.

Программа предназначена для включения водяного насоса при падении влажности почвы ниже 60%. О работе насоса будет сигнализировать светодиод, а измерение влажности должно выполняться каждые 30 минут.

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

void setup() {
  pinMode(11,OUTPUT);//установка контакта 11 в качестве выходного контакта
}
void loop() {
  int wilg = analogRead(A0);//переменная для влажности
  int wil = map(wilg,310,570, 100, 0);//пересчитать значение в проценты

  if(wil < 60)//если влажность менее 60%
  {
    pinMode(11,HIGH);//насос включается 
    delay(5000);//на 5 секунд
    pinMode(11,LOW);//насос выключается
  }
  else// если нет
  {
    pinMode(11,LOW);//насос отключен
  }
  delay(1800000);//ждем 30 минут для следующего измерения
}

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

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

Профессиональный цифровой осциллограф
Количество каналов: 1, размер экрана: 2,4 дюйма, разрешен…

Подробнее

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

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

К счастью, нам не нужно беспокоиться об этом, потому что мы собираемся использовать библиотеку DHT от Adafruit, которая позаботится за нас обо всем. Библиотека настолько мощная, что работает как на архитектуре Arduino, так и на архитектуре ESP.

Чтобы установить библиотеку, перейдите в раздел « Эскиз»> «Включить библиотеку»> «Управление библиотеками…». Подождите, пока менеджер библиотеки загрузит индекс библиотек и обновит список установленных библиотек.

Плата разработки ESP8266 ESP8266 NodeMcu V3 — расширенный API для аппаратного ввода, который …

Данные от датчика (40 бит) имеет следующую структуру:

Для датчика DHT11, десятичные байты измерения температуры и влажности всегда равны нулю. Таким образом, первый и третий байт полученных данных фактически дают числовые значения измеренной относительной влажности (RH) и температуры (Temp).

Последний байт является байтом контрольной суммы, который используется, чтобы убедиться, что передача данных произошло без каких-либо ошибок. Если все пять байтов передаются успешно, то байт контрольной суммы должен быть равен последним 8 битам суммы первых четырех байтов, т.е.

Теперь давайте поговорим о важной вещи, а именно о сигналах для передачи «0» и «1». Чтобы отправить бит данных, датчик сначала переводит линию в низкий уровень на 50 мс

Затем если нужно отправить «0», то датчик переводит линию в высокое положение на 26-28 мкс, или 70 мкс, если необходимо передать «1».

Таким образом ширина положительного импульса несет в себе информацию о «0» и «1».

«Разница в сигналах «1» и «0»

«Обобщенная картина обмена данными»

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

После окончания передачи данных и отпускании линии данных, датчик DHT11 переходит в режим низкого энергопотребления, пока новый сигнал «Пуск» не поступит от микроконтроллера.

Терморезистор NTC

Как было сказано выше, термистор — это температурный детектор, который преобразует тепловые показания в уровень сопротивления.

Существует два типа таких датчиков:

  • PTC – positive temperature coefficient – измеритель, в котором уровень сопротивления повышается вместе с ростом температурных показателей;
  • NTC – negative temperature coefficient – датчик, снижающий показатель сопротивления при повышении уровня тепла.

В случае с Arduino датчик температуры подобного типа, который можно было бы привести в качестве примера — это NTC MF 58 100K.

Технические характеристики данного прибора:

  1. сопротивление 100 кОм;
  2. температурный диапазон -30/+300 градусов Цельсия;
  3. погрешность не более 1%.

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

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

Характеристики датчиков

Остановимся на основных характеристиках обоих датчиков.

DHT11

  • Питание от 3 до 5В.
  • Максимально потребляемый ток – 2.5мА при преобразовании (при запросе данных).
  • Рассчитан на измерение уровня влажности в диапазоне от 20% до 80%. При этом точность измерений находится в диапазоне 5%.
  • Измеряет температуру в диапазоне от 0 до 50 градусов с точностью плюс-минус 2%.
  • Частота измерений не более 1 Гц (одно измерение в секунду).
  • Размер корпуса: 15.5 мм x 12 мм x 5.5 мм.
  • 4 коннектора. Расстояние между соседними – 0.1″.

DHT22

  • Питание от 3 до 5В.
  • Максимально потребляемый ток – 2.5мА при преобразовании (при запросе данных).
  • Рассчитан на измерение уровня влажности в диапазоне от 0% до 100%. При этом точность измерений находится в диапазоне 2%-5%.
  • Измеряет температуру в диапазоне от -40 до 125 градусов с точностью плюс-минус 0.5 градусов по Цельсию.
  • Частота измерений до 0.5 Гц (одно измерение за 2 секунды).
  • Размер корпуса: 15.1 мм x 25 мм x 7.7 мм.
  • 4 коннектора. Расстояние между соседними – 0.1″.

DHT22 более точный и имеет больший диапазон измеряемых значений.

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий