Обзор и подключение dht11 (dht22) датчика влажности и температуры

Содержание:

3Считывание данных с сенсора DHT11 при помощи Arduino

Давайте пойдём таким путём: скачаем библиотеку для датчика DHT11 (также приложил её в конце статьи, т.к. у обновлённой библиотеки изменились вызываемые функции), установим её стандартным способом (распаковав в директорию \libraries\ среды разработки для Arduino).

Напишем вот такой простенький скетч. Он будет выводить в последовательный порт компьютера каждые 2 секунды сообщения об относительной влажности и температуре, считанные с датчика DHT11.

#include <dht11.h> // подключаем библиотеку
dht11 sensor; // инициализация экземпляра датчика
#define DHT11PIN 8 // вывод 8 будет шиной DATA

void setup() {
  Serial.begin(9600);
}

void loop() {
  int chk = sensor.read(DHT11PIN);

  Serial.print("h=");
  Serial.print(sensor.humidity);
  Serial.print("%\t");

  Serial.print("t=");
  Serial.print(sensor.temperature);
  Serial.println("C");
  
  delay(2000);
}

Загрузим этот скетч в Arduino. Подключимся к Arduino с помощью монитора COM-порта и увидим следующее:

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

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

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

В этой главе мы опишем пример подключения датчика влажности почвы YL-38 к Arduino UNO. Первым делом нам нужно собрать схему, которая изображена ниже.

После этого запустим Arduino IDE и наберем в скетче код, который можно загрузить по этой ссылке: https://cloud.mail.ru/public/ghdN/NKUsNDxPL

После набора кода загрузим его в наш Arduino UNO. Теперь откроем «Монитор порта» и увидим сообщение «Sensor is not in the Soil or DISCONNECTED», которое означает, что сенсор не подключен к почве.

Если мы подключим контактный щуп датчика к сухой почве, то мы увидим такое сообщение «Soil is DRY».

Если контактный щуп сенсора будет находиться во влажной почве, то мы увидим сообщение «Soil is HUMID» в «Мониторе порта».

Если контактный щуп сенсора будет находиться в воде, то мы увидим сообщение «Sensor in WATER» в «Мониторе порта».

Принцип работы этого скетча основан на условных операторах. Например, рассмотрим часть кода, когда в «Мониторе порта» выдается сообщение «Sensor is not in the Soil or DISCONNECTED»:
В этом коде, если значение переменной «SensorValue» меньше 1000, то с помощью команды «Serial.println» мы получаем заданное сообщение на «Монитор порта». На таком же принципе основан вывод остальных сообщений.

Характеристики DHT11 к Arduino

Прибор DHT11 обладает следующими техническими характеристиками:

  • максимальное значение силы тока 2.5 мА;
  • напряжение от 3 до 5 В;
  • для подключения к Ардуино нуждается в резисторе;
  • точность ± 2 градуса;
  • размеры 15.5×12×5.5 мм;
  • частота 1 Гц;
  • однопроводный протокол обмена;
  • не работает в «паразитном» режиме;
  • использует один цифровой пин;
  • библиотека DHT.h.

Датчик DHT22 и одиннадцатая версия часто применяются в проектировании систем «умного» дома и при создании метеостанций. Внутренний чип устройств выполняет преобразование данных, поступающих с датчиков, и передает сигнал микроконтроллеру.

Данные представляют собой сорок бит информации, где:

  • восемь бит отводится на интегральное значение RH;
  • восемь — на десятичное значение RH;
  • восемь для интегрального значения показателя температуры;
  • и оставшиеся восемь для создания контрольной суммы.

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

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

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

Краткий обзор датчика DHT11

Датчик DHT11 может измерять температуру и относительную влажность (RH) окружающего воздуха и обладает следующими техническими характеристиками:

  • диапазон измерения температуры: 0-50°C;
  • точность измерения температуры: ±2 °C;
  • диапазон измерения влажности: 20-90% RH;
  • точность измерения влажности: ±5 %.

Обратите внимание на то, что относительная влажность не совпадает с «реальной» влажностью. Относительная влажность измеряет содержание воды в воздухе относительно температуры воздуха

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

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

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

Для начала необходимо подсоединить датчик DHT11 к плате Arduino по следующей схеме.

  • Как видно, дня наших целей даже не понадобится монтажная плата.
  • Теперь необходимо скачать библиотеку для датчиков температуры из Интернета (https://github.com/adafruit/DHT-sensor-library/archive/master.zip). В данной библиотеке есть уже пример скетча для закачки в Arduino.

  • Полученный файл необходимо распаковать. Программа Arduino IDE может загружать библиотеки из ZIP файлов. Но в нашем случае она не сможет этого сделать, так как в архиве папка содержит недопустимые символы. Поэтому распаковываем архив и полученную папку переименовываем на короткую DHT.
  • После этого можно добавить библиотеку через программу Arduino IDE (Скетч -> Импортировать библиотеку… -> Add Library…). Либо можно вручную добавить папку с файлами в директорию /домашняя_папка/sketchbook/libraries/. Но в этом случае необходимо будет перезапустить Arduino IDE, чтобы та считала доступные библиотеки для использования.

В загруженной на компьютер библиотеке уже имеется готовый пример скетча для загрузки в Arduino. Загрузим данную программу (Файл -> Папка со скетчами -> libraries -> DHT -> DHTtester) в терминал Arduino IDE.

После этого, нажав на стрелочку вправо (загрузить), скомпилируем программу и загрузим её на плату Arduino через USB соединение. Первый раз программа может выдать предупреждение, что последовательный порт COM1 не обнаружен. Жмём «ОК» для использования другого порта (/dev/ttyACM0). Теперь наша программа загружена в Arduino и может считывать температуру и влажность.

Виды датчиков

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

  • DHT11;
  • DHT22;
  • SHT1x.

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

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

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

Датчики линейки SHT1x быстро срабатывают, имеют весьма низкую погрешность, экономичны и умеют «засыпать» при долгой неактивности. Из недостатков выделим:

  • два цифровых интерфейса;
  • невозможность работы без подключения программной библиотеки и диапазон от 0 до 50 градусов — как в других образцах. Его хватает не всегда.

По стоимости все три варианта примерно одинаковы. Для «домашних» установок чаще берут DHT11-22 за их сравнительную простоту в эксплуатации и настройке.

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

Рассмотрим схему подключения датчика температуры и влажности DHT11 к микроконтроллеру, в частности, к Arduino.

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

Давайте посмотрим, что показано на рисунке.

Обозначение на рисунке Описание Примечание
MCU Микроконтроллер или одноплатный компьютер Arduino / Raspberry Pi и др.
DHT11 Датчик температуры и влажности Выводы 1Pin, 2Pin и 4Pin задействованы в схеме, один из выводов датчика – 3-ий пин 3Pin – ни к чему не подключается.
DATA Шина данных Если длина соединительного кабеля от датчика к микроконтроллеру не превышает 20 метров, то эту шину рекомендуется подтянуть к питанию резистором 5,1 кОм; если больше 20 метров – то другой подходящий номинал (меньший).
VDD Питание датчика Допустимы напряжения от ~3,0 до ~5,5 вольт постоянного тока; если используется питание ~3,3 В, то желательно использовать питающий провод не длиннее 20 см.

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

Сенсор температуры и влажности DHT11 подключён к Arduino UNO

Сенсор DHT11 часто продаётся в виде готовой сборки с необходимой обвязкой – подтягивающими резистором и фильтрующим конденсатором (как на предыдущей фотографии). Для экспериментов с Arduino я рекомендую покупать именно такой.

Виды датчиков

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

Рассмотрим основные виды приборов, построенных на рассматриваемой платформе:

  1. Вращательный: в основном, резистор, подключенный к потенциометру и трехконтактному разъему, который позволяет подключать аналоговый выход и подавать его VCC и GND. Часто используется для определения положения двигателя, как сервомотора, так и шагового, постоянного тока и других. По-другому можно назвать – Ардуино датчик тока или Аrduino датчик движения.
  2. Звуковой: оснащен микрофоном, операционным усилителем LM386 и потенциометром, позволяющим захватывать любой звук вокруг него и превращать его в аналоговый сигнал с 0V до VCC, который может быть преобразован в сигнал Аrduino от 0 до 1024 в резолюции ADC. Существуют различные приложения для такого типа, которые относятся к аудиозахвату. Также существует ультразвуковой датчик Ардуино.
  3. Обнаружитель дыма: используется в системах обнаружения пожара, является прибором, который выявляет дым и газ, может быть откалиброван с помощью потенциометра, а выходной сигнал подключается к аналоговому входному модулю. Эти Ардуино-датчики имеют, помимо прочего, варианты MQ-2, MQ-3, MQ4 и дифференцируются по типу обнаруженного вещества, метана, спирта, пропана и другие.
  4. Детонация: предназначен для обнаружения сбоев или известен, как перкуссионный. Передает цифровой сигнал, когда обнаруживает изменение. Может быть подключен к цифровому входу на плате разработки Arduino и обнаруживать сигнал, который генерируется при наличии какого-либо удара.
  5. Ардуино-датчик температуры: предназначается для измерения состояния окружающей среды. К таким можно отнести Аrduino dsl8b20.

Сборка метеостанции с дисплеем 1602 и DHT11

Для этого проекта нам потребуется:

  • плата Arduino UNO (NANO);
  • жидкокристаллический дисплей 1602 с I2C;
  • цифровой датчик DHT11 или DHT22;
  • провода «папа-мама», «папа-папа»;
  • макетная плата (при необходимости).

К Arduino Nano и Uno все датчики и дисплей подключаются по одной схеме — распиновка и подключение уже рассматривались на нашем сайте, поэтому не будем подробно останавливаться на этом моменте. Если у вас есть вопросы, то посмотрите следующие записи: Подключение DHT11 к Ардуино и Подключение LCD 1602 к Ардуино. Соберите метеостанцию на Ардуино с дисплеем 1602 и dht11, как на схеме ниже.

Основные технические характеристики DHT11 и DHT22

Особенности DHT11:

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

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

  1. Диапазон замера влажности 0-100% (погрешность 2-5%).
  2. Диапазон замера температуры от минус 40 °C до плюс 125 °C (точность – 0,5°C).
  3. Питание 3-5 В.
  4. Потребляемый ток 2,5 мА.
  5. Частота 0,5 Гц.
  6. Габариты: 15,1 x 25 x 5,5 мм.
  7. Коннекторы 4 штуки с расстоянием 0,1.

Влажность измеряется в процентах. Когда сделаете замер датчиком и он покажет 55%, это значит, что вокруг места замера в воздухе находится 55% водяного пара.

Если датчик покажет 100% — скорей всего он неисправен или схема подключения неверна. А если он выдаст 0% — скорей всего тоже есть проблемы обработки данных, или же вы находитесь в центре пустыни, или в комическом пространстве.

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

1Технические характеристики датчика температуры и влажности DHT11

Итак, датчик DHT11 имеет следующие характеристики:

  • диапазон измеряемой относительной влажности – 20..90% с погрешностью до 5%,
  • диапазон измеряемых температур – 0..50°C с погрешностью до 2°C;
  • время реакции на изменения влажности – до 15 секунд, температуры – до 30 секунд;
  • минимальный период опроса – 1 секунда.

Габаритные размеры и внешний вид датчика температуры и влажности DHT11

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

Код Arduino. Использование DHT11 и DHT22/AM2302 с LCD дисплеем

Иногда может возникнуть идея, контролировать температуру и влажность в инкубаторе. Тогда для отображения условий в инкубаторе вам, вероятно, понадобится символьный LCD дисплей 16×2 вместо монитора последовательного порта. Итак, в этом примере вместе с датчиком DHT11 или DHT22/AM2302 мы подключим к Arduino LCD дисплей.

Если вы не знакомы с LCD дисплеями на 16×2 символов, взгляните на статью «Взаимодействие Arduino с символьным LCD дисплеем».

Далее нам нужно подключиться к LCD дисплею, как показано ниже.

Рисунок 9 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT11Рисунок 10 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT22

Следующий скетч будет выводить значения температуры и относительной влажности на символьном LCD дисплее 16×2. Он использует тот же код, за исключением того, что мы печатаем значения на LCD дисплее.

Рисунок 11 – Показания температуры и влажности на LCD дисплее

Работа схемы

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

Как можно видеть, соединения на схеме достаточно простые и перечислены в следующих таблицах:

контакт Arduino контакт датчика температуры и влажности DHT11
Vcc 5V
Gnd Gnd
Nc Nc
Pin 7 Out
контакт Arduino контакт DS3231 RTC
5V Vcc
Gnd Gnd
Pin A5 SCL
Pin A4 SDA
контакт Arduino контакт модуля для чтения SD карт
5V Vcc
Gnd Gnd
Pin 12 MISO
Pin 11 MOSI
Pin 13 SCK
CS CS

Вы можете заменить датчик DHT11 в схеме на любой другой аналогичный, например, LM35. Модуль RTC DS3231 подключается к плате Arduino по протоколу I2C (SCL, SDA), а модуль чтения SD карт – по протоколу SPI (MISO, MOSI, SCK, CS). Контакты 4 и 7 платы Arduino подключаются к контактам CS и Out модуля чтения SD карт и датчика DHT11 соответственно, при желании вы их можете сменить на любые другие контакты. Ранее подключение модуля чтения SD карт к плате Arduino мы рассматривали в проекте аудиоплеера на Arduino.

3Считывание данных с сенсора DHT11 при помощи Arduino

Давайте пойдём таким путём: скачаем библиотеку для датчика DHT11 (также приложил её в конце статьи, т.к. у обновлённой библиотеки изменились вызываемые функции), установим её стандартным способом (распаковав в директорию \libraries\ среды разработки для Arduino).

Напишем вот такой простенький скетч. Он будет выводить в последовательный порт компьютера каждые 2 секунды сообщения об относительной влажности и температуре, считанные с датчика DHT11.

#include <dht11.h> // подключаем библиотеку
dht11 sensor; // инициализация экземпляра датчика
#define DHT11PIN 8 // вывод 8 будет шиной DATA

void setup() {
  Serial.begin(9600);
}

void loop() {
  int chk = sensor.read(DHT11PIN);

  Serial.print("h=");
  Serial.print(sensor.humidity);
  Serial.print("%\t");

  Serial.print("t=");
  Serial.print(sensor.temperature);
  Serial.println("C");
  
  delay(2000);
}

Загрузим этот скетч в Arduino. Подключимся к Arduino с помощью монитора COM-порта и увидим следующее:

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

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

How the DHT11 Measures Humidity and Temperature

The DHT11 detects water vapor by measuring the electrical resistance between two electrodes. The humidity sensing component is a moisture holding substrate with electrodes applied to the surface. When water vapor is absorbed by the substrate, ions are released by the substrate which increases the conductivity between the electrodes. The change in resistance between the two electrodes is proportional to the relative humidity. Higher relative humidity decreases the resistance between the electrodes, while lower relative humidity increases the resistance between the electrodes.

The DHT11 measures temperature with a surface mounted NTC temperature sensor (thermistor) built into the unit. To learn more about how thermistors work and how to use them on the Arduino, check out our Arduino Thermistor Temperature Sensor Tutorial.

With the plastic housing removed, you can see the electrodes applied to the substrate:

An IC mounted on the back of the unit converts the resistance measurement to relative humidity. It also stores the calibration coefficients, and controls the data signal transmission between the DHT11 and the Arduino:

The DHT11 uses just one signal wire to transmit data to the Arduino. Power comes from separate 5V and ground wires. A 10K Ohm pull-up resistor is needed between the signal line and 5V line to make sure the signal level stays high by default (see the datasheet for more info).

There are two different versions of the DHT11 you might come across. One type has four pins, and the other type has three pins and is mounted to a small PCB. The PCB mounted version is nice because it includes a surface mounted 10K Ohm pull up resistor for the signal line. Here are the pin outs for both versions:

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

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

Подключение датчика температуры DHT11 к Ардуино, схема №1:

  1. Первый вывод DHT11 к Arduino UNO +5V (красный).
  2. Второй вывод к четвертому контакту Digital (синий).
  3. Третий контакт не задействован.
  4. Четвертый подключается к GND (черный)

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

 Принципиальную схему можно посмотреть ниже.

Лишен таких нюансов модуль датчика, потому как уже включает в себя «элементы подтяжки».

Как подключить датчик температуры и влажности по схеме №2 к Ардуино:

  1. VCC к +5V (питание, красный).
  2. OUT к цифровому разъему (данные, зеленый).
  3. GND к GND (земля, черный).

Принципиальная схема выглядит так.

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

  1. SCL дисплея в A5 (данные, оранжевый).
  2. SDA в А4 (данные, желтый).
  3. GND в GND (земля, черный).
  4. VCC в 5V (питание, красный).
  5. GND датчика в GND (земля, черный).
  6. DATA в A0 (данные, фиолетовый).
  7. VCC в 5V (питание, красный).

Питание с LCD дисплея и датчика подключите к одному разъему через соединительный провод 2 к 1.

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

Динамическая загрузка данных датчика с помощью AJAX

Если ваша веб-страница много весит, то полное ее обновление не слишком практично. Лучше использовать асинхронный Javascript и Xml (AJAX), чтобы мы могли запрашивать данные с сервера асинхронно (в фоновом режиме), не обновляя страницу.

Для выполнения AJAX на веб-страницах в JavaScript обычно используется объект . Он тихо выполняет GET запрос на сервер и обновляет элемент на странице. AJAX – это не новая технология или другой язык, а просто существующие технологии, используемые по-новому. Кроме того, AJAX также позволяет:

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

Ниже приведен скрипт AJAX, который мы будем использовать. Поместите этот скрипт непосредственно перед закрывающим тегом .

Скрипт начинается с тега , так как AJAX-скрипт – это не что иное, как javascript, и поэтому нужно писать его в теге . Чтобы данная функция вызывалась повторно, мы будем использовать функцию javascript . Она принимает два параметра: функцию для выполнения и интервал времени (в миллисекундах), через который выполнять указанную функцию.

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

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

  • 0: запрос не инициализирован;
  • 1: установлено подключение к серверу;
  • 2: запрос получен;
  • 3: обработка запроса;
  • 4: запрос завершен, и ответ готов.

Свойство содержит статус объекта . Возможны следующие значения:

  • 200: OK;
  • 403: запрещено;
  • 404: страница не найдена.

Когда равен 4, а – 200, ответ готов. Теперь обновляется содержимое элемента с webpage (, содержащей значения температуры и влажности).

Затем HTTP запрос инициируется с помощью функций и .

Установка библиотеки Raspberry Pi для работы с ЖК дисплеем

В нашем проекте мы измеренные значения температуры и влажности будем отображать на экране ЖК дисплея 16х2. Соответствующая библиотека для Raspberry Pi от компании Adafruit позволит нам достаточно просто взаимодействовать с ЖК дисплеем в 4-битном режиме. Поэтому откройте в Raspberry Pi окно терминала и выполните следующую последовательность шагов для установки указанной библиотеки.

Шаг 1. Установите git на вашу Raspberry Pi с помощью следующей ниже приведенной команды. Git позволяет клонировать любые файлы с репозитория Github (нужная нам библиотека находится там) и использовать их потом в вашей плате.

Shell

apt-get install git

1 apt-getinstall git

Шаг 2. Клонируйте нужную нам библиотеку с GitHub с помощью инструмента git.

Shell

git clone git://github.com/adafruit/Adafruit_Python_CharLCD

1 git clonegitgithub.comadafruitAdafruit_Python_CharLCD

Шаг 3. Смените каталог на тот, в который вы клонировали библиотеку.

Shell

cd Adafruit_Python_CharLCD

1 cdAdafruit_Python_CharLCD

Шаг 4. Внутри этого каталога будет установочный файл библиотеки с названием setup.py – его необходимо запустить на выполнение чтобы установить библиотеку.

Shell

sudo python setup.py install

1 sudo python setup.pyinstall

Способ 2: чтение датчика DS18B20 по адресу

Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.

Поиск адресов датчиков DS18B20s на шине

Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.

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

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

Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине

Скопируйте все адреса, так как они нам понадобятся в следующем скетче.

Чтение показаний датчиков DS18B20 по адресу

Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.

Вывод вышеприведенного эскиза выглядит так

Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса

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

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

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

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

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

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

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

Скетч для работы с датчиком

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

#include "DHT.h"
#define dht_apin A0 // Аналоговый контакт к которому подключен датчик
 
dht DHT;
 
void setup(){
 
  Serial.begin(9600);
  delay(500);//Задержка для загрузки системы
  Serial.println("DHT11 сенсор влажности и температуры\n\n");
  delay(1000);//Подождите, прежде чем обращаться к датчику
 
}//end "setup()"
 
void loop(){
  //Начало программы 
 
    DHT.read11(dht_apin);
    
    Serial.print("Текущая влажность = ");
    Serial.print(DHT.humidity);
    Serial.print("%  ");
    Serial.print("температура = ");
    Serial.print(DHT.temperature); 
    Serial.println("C  ");
    
    delay(5000);//Подождите 5 секунд, прежде чем снова обратиться к датчику
 
  //Самый быстрый должен быть раз в две секунды
 
}// окончание цикла loop()

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

Проверьте DHTlib на поддержку этих датчиков. Эта библиотека протестирована на MEGA2560 и подтверждена работой на Arduino 2009. Niesteszeck создал библиотеку DHT11, управляемую прерываниями. Энди Дальтон сделал модифицированную версию. Разница в том, что DATAPIN определен в конструкторе, в результате чего полагается один выделенный объект на приспособление.

С помощью одножильного приспособления DS18B20 мы можем измерять температуру от -55 ℃ до 125 ℃ с точностью ± 5.

В итоге мы должны на выходе увидеть вот такие данные:

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

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

Adblock
detector