Датчик температуры arduino ds18b20

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

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

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

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

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

How do DHT11 and DHT22/AM2302 temperature and humidity sensors work?

If you open up a DHT11 or DHT22/AM2302 sensor, you will see that it contains two sensing elements: a humidity sensing element and an NTC (thermistor).

The humidity sensing element consists of two electrodes with a moisture holding substrate in between. The sensor measures the resistance between the electrodes, which changes depending on the amount of moisture in the air.

On the back of the sensor, you will find a small IC that measures and processes the analog signal. It also stores the calibration coefficients and does the analog to digital conversion.

What is relative humidity?

When you look at the datasheet of the DHTxx sensors, you will see that they measure the relative humidity (RH) of the air and not the absolute humidity. But what’s the difference? The absolute humidity is the amount of water vapor in the air (expressed in g/m³), regardless of temperature. The relative humidity does take temperature into account.

Relative humidity is the ratio between the actual amount of water vapor present in the air and the maximum amount of water vapor that the air can hold at a given temperature.

Warm air can hold more water than cold air. This means that for the same amount of water vapor in the air, the relative humidity in cool air will be higher than that in warm air. At 100 percent relative humidity, the air is saturated and is at its dewpoint.

DHT11 Specifications

Operating voltage 3.3 – 5.5 V
Operating current Measuring: 0.3 mA, standby: 60 μA
Humidity measuring range 5 – 95 % RH ± 5 % RH
Temperature measuring range -20 – 60 °C ± 2 °C
Communication protocol 1-Wire
Sampling period > 2 seconds
Body dimensions 15.5 x 12 x 5.5 mm
Pin dimensions 8 mm length, 2.54 mm spacing
Advantage Ultra low cost
Cost Check price

For more information you can check out the datasheet below:

DHT11 Datasheet

DHT22/AM2302 Specifications

Operating voltage 3.3 – 5.5 V
Operating current Measuring: 0.5 mA, standby: 15 μA
Humidity measuring range 0 – 99.9 % RH ± 2 % RH
Temperature measuring range -40 – 80 °C ± 1 °C
Communication protocol 1-Wire bus protocol
Sampling period 2 seconds
Body dimensions 25 x 15 x 7 mm, ⌀ 3 mm mounting hole
Pin dimensions 7 mm length, 2.54 mm spacing
Advantage More accurate
Cost Check price

You can download the datasheet for the DHT22/AM2302 below:

DHT22 Datasheet

Note that the AM2302 is simply a wired version of the DHT22 sensor with 3 leads.

As you can see, the specifications of the DHT11 and the DHT22/AM2302 are quite similar. The main difference is that the DHT22 is more accurate and has a larger measuring range.

The DHT11 is a bit smaller than the DHT22 and is also less expensive.

The nice thing about these sensors is that they are interchangeable, meaning that you can just replace the DHT11 with a DHT22 or vice versa, the wiring is exactly the same. You will only have to make a small change in the code setup, as you will see later.

Программирование нашего соединения на Arduino

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

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

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

Диск C Progtam Files
Arduino Libraries

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

Пояснение

Перейдем к объяснению нашего кода, ведь нужно уметь понимать то, что ты делаешь! Первые строки у нас в коде такие:

#define это удобная директива,
которая позволяет дать имя константе перед тем как программа будет скомпилирована.

Синтаксис: #define constantName value

Внимание! Символ # перед словом define обязателен. Следующая строчка :

Следующая строчка :

В этой строчке мы создаем и обозначаем объект «dht»

Затем в нашем коде пишутся такие строчки :

Здесь мы подключаем библиотеку для датчика влажности и температуры и lcd исплея.
Также для lcd дисплея обозначаем порты подключения

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

В этом цикле мы указываем, что на дисплее будет «16» столбцов и «2» строчки.
Также в этом цикле мы заставляем датчик DHT11 работать.

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

В строчках «int h = dht.readHumidity();»
и «int t = dht.readTemperature();»
мы вводим переменные «h» и «t» , в которые будет считываться значение с датчика DHT11.
Это нам понадобится для дальнейших действий.

Далее строчкой «lcd. setCursor(0, 0);» мы ставим курсор нашей программы в ПЕРВУЮ строчку дисплея и в ПЕРВЫЙ столбик.
Будте внимательны, счет ведется с нуля, тоесть значение «0» в коде — это первая строчка или группа .

Рассмотрим следующие 3 строчки:

В строчках lcd. print(«Temp: «); ,
lcd. print(t); и lcd. print(«C»); мы указываем то,
что будет написанно на самом LCD дисплее

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

В следующих строчках все аналогично.

Обратите внимание что в строчке
«setCursor(0,1);» мы указываем курсор программы на экране в ПЕРВЫЙ столбик,
но во ВТОРУЮ строчку.

Ну а завершающей строкой нашего кода является:

Смысл этой строки очень прост, мы даем программе время «передохнуть».
Delay это время, которое программа будет бездействовать, ждать, ничего не делая.
В нашем скетче мы указали 200 мс (значение всегда задается в «мс»)

Ну что, мы справились! В конце у нас должно получиться вот так!

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

Функционально схема устройства состоит из 3-х основных блоков: первый блок измеряет температуру и влажность с помощью датчика DHT11, второй блок считывает эти значения с выхода датчика и преобразует их в форму, удобную для восприятия, а третий блок отображает значения влажности и температуры на ЖК дисплее. Функциональная взаимосвязь этих блоков представлена на следующем рисунке.

Работа нашей схемы будет основана на последовательной передаче данных по одиночному проводнику. Вначале Arduino передает стартовый сигнал (то есть чтобы DHT модуль начал работу) DHT модулю, а затем DHT модуль (то есть модуль измерения температуры и влажности) выдает Arduino ответный сигнал, содержащий данные о температуре и влажности. Arduino собирает эти данные, обрабатывает и передает на ЖК дисплей 16×2.

В этом проекте мы будем использовать датчик DHT11. Этот модуль способен измерять температуру и влажность и выдавать их значения на выход в виде калиброванного цифрового сигнала. Этот датчик обеспечивает высокую точность измерений, высокую надежность и стабильность измерений. Принцип действия данного датчика основан на резистивном типе измерения влажности и NTC-типе (NTC — отрицательный температурный коэффициент) измерения температуры. Данный датчик имеет встроенный 8-битный микроконтроллер, что обеспечивает ему быстрый отклик на изменения окружающей среды и приемлемую стоимость. Датчик имеет 4 выходных контакта.

Модуль DHT11 работает по принципу последовательной связи по одиночному проводнику. Этот модуль передает данные в виде последовательности импульсов с определенным периодом. Но прежде чем он начнет передавать данные ему нужно подать команду инициализации с Arduino. Весь этот процесс занимает примерно 4 мс. Процесс передачи 40 бит данных будет включать в себя:

8-bit integral RH data + 8-bit decimal RH data + 8-bit integral T data + 8-bit decimal T data + 8-bit check sum (проверочная сумма).

Станция с датчиком давления

Следующая модель будет уметь определять:

  • влажность и температуру;
  • уровень высоты;
  • атмосферное давление.

Компоненты

Для сборки потребуются:

  • сенсор DHT22;
  • датчик давления BMP180;
  • плата Ардуино Нано;
  • lcd-экран с блоком I2C;
  • резистор 10 кОм;
  • плата макетная;
  • припой;
  • 40-контактный однорядный разъем;
  • соединительные провода.

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

Сенсор давления

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

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

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

Еще один важный момент — светочувствительность. Благодаря силикону в конструктиве BMP180 он способен улавливать попадающий через отверстие в корпусе микрочипа свет и нагреваться. Максимально точные измерения потребуют изоляции от окружающего света.

BMP180 соединяется через шину I2C по следующей схеме:

A4 — SDA;

A5 — SCL;

3.3V — VCC;

GND — GND.

Сборка

Процесс сборки начинается с монтажа однорядных разъемов для DHT22 и Arduino:

От вывода DATA к GND припаян резистор на 10 кОм.

Далее монтируется разъем для BMP180 (питаться датчик будет от линии 3.3 В). Компоненты соединяются шиной I2C.

На последнем этапе та же шина соединяется с дисплеем.

Так выглядит домашняя метеостанция в сборе:

Пример вывода информации об атмосферном давлении:

Программный код

Для работы понадобятся скетч Ардуино и библиотеки датчиков. Все они доступны в приложениях к статье.

Текст скетча можно скачать здесь: https://cloud.mail.ru/public/piwT/gew8pPv7M

Подключение нескольких датчиковoв DS18B20+

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

Запускаем среду программирования IDE Arduino, копируем пример кода в в окно программы и загружаем в контроллер.

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 12.11.2016г.
*/

#include <OneWire.h> // Подключаем библиотеку OneWire
#include <DallasTemperature.h> // Подключаем библиотеку DallasTempature

#define ONE_WIRE_BUS 2 // Указываем, к какому выводу подключена DQ

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
Serial.begin(9600); // Задаем скорость передачи данных
sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит
}

void loop(void)
{
Serial.print(» Reading Temperature…»);
sensors.requestTemperatures(); // Запрос на считывание температуры
Serial.println(«Read»);
Serial.print(» Sensor Temperature 1: «);
Serial.print(sensors.getTempCByIndex(0)); // Отображение температуры датчика 1
Serial.print(» Reading Temperature…»);
Serial.println(«Read»);
Serial.print(» Sensor Temperature 2: «);
Serial.print(sensors.getTempCByIndex(1)); // Отображение температуры датчика 2
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 12.11.2016г.

*/

 
 
#include <OneWire.h>                        // Подключаем библиотеку OneWire
#include <DallasTemperature.h>              // Подключаем библиотеку DallasTempature
 
#define ONE_WIRE_BUS 2                      // Указываем, к какому выводу подключена DQ
 

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

voidsetup(void)

{

Serial.begin(9600);// Задаем скорость передачи данных

sensors.begin();// Запуск библиотеки, по умолчанию 9 бит

}

voidloop(void)

{

Serial.print(» Reading Temperature…»);

sensors.requestTemperatures();// Запрос на считывание температуры

Serial.println(«Read»);

Serial.print(» Sensor Temperature 1: «);

Serial.print(sensors.getTempCByIndex());// Отображение температуры датчика 1

Serial.print(» Reading Temperature…»);

Serial.println(«Read»);

Serial.print(» Sensor Temperature 2: «);

Serial.print(sensors.getTempCByIndex(1));// Отображение температуры датчика 2

}

Ссылки  Документация к DS18B20+  Скачать библиотеку DallasTemperature  Скачать библиотеку OneWire v.2.2

Купить на Aliexpress  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  Датчик температуры DS18b20

Купить в Самаре и области  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  Датчик температуры DS18b20

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

Для работы Arduino UNO с нашим датчиком требуется подключение специальной библиотеки. Она называется DHT.h. Скачать можете вот по этой ссылке.

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

Arduino

#include «DHT.h» #define DHTPIN 2 // номер пина, к которому подсоединен датчик // Раскомментируйте в соответствии с используемым датчиком // Инициируем датчик //DHT dht(DHTPIN, DHT22); DHT dht(DHTPIN, DHT11); void setup() { Serial.begin(9600); dht.begin(); } void loop() { // Задержка 2 секунды между измерениями delay(1000); //Считываем влажность float h = dht.readHumidity(); // Считываем температуру float t = dht.readTemperature(); // Проверка удачно прошло ли считывание. if (isnan(h) || isnan(t)) { Serial.println(«Не удается считать показания»); } else { Serial.print («Humidity: «); Serial.print (h); Serial.print («%\t»); Serial.print («Temperature: «); Serial.print (t); Serial.println (» *C»); } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

#include «DHT.h»
 
#define DHTPIN 2 // номер пина, к которому подсоединен датчик
 
// Раскомментируйте в соответствии с используемым датчиком
 
// Инициируем датчик
 
//DHT dht(DHTPIN, DHT22);
 

DHTdht(DHTPIN,DHT11);

voidsetup(){

Serial.begin(9600);

dht.begin();

 
}
 

voidloop(){

 
// Задержка 2 секунды между измерениями
 

delay(1000);

 
//Считываем влажность
 

floath=dht.readHumidity();

 
// Считываем температуру
 

floatt=dht.readTemperature();

 
// Проверка удачно прошло ли считывание.
 

if(isnan(h)||isnan(t)){

Serial.println(«Не удается считать показания»);

}else{

Serial.print(«Humidity: «);

Serial.print(h);

Serial.print(«%\t»);

Serial.print(«Temperature: «);

Serial.print(t);

Serial.println(» *C»);

}

}

Загрузите скетч в контроллер и проверьте сенсор при помощи сервис — монитор.

Вот что у меня получилось:

Мониторинг порта в Arduino IDE:

Если кому-то не совсем понятно, есть шикарный видеоурок от ребят.

На этом я заканчиваю свой пост. В следующей статье я напишу о корейском таймере AT8N. Пишите комментарии, задавайте вопросы, подписывайтесь!

Успехов вам!!!

Проблемы, возникающие при подключении

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

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

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

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

Понимая, как подключить DHT 11, легко справиться и со «старшей» версией. Особенно ценно то, что оба варианта датчика прекрасно заменяют друг друга.

Программирование

Перед тем, как начать кодирование, требуется проверить наличие библиотеки, которая позволяет работать с датчиками температуры и влажности. Если таковой нет, рекомендуется сначала загрузить ее. Папка должна иметь наименование «DHT», корректное расположение — в корневой «Arduino IDE», в папке «libraries».

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

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

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

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

Loop () подключает функцию read11(), принимающую вывод  полученных данных. Если применяется 22-я версия, то функция соответствующим образом меняется — на read22().

Доступ к показателям обеспечивается параметрами:

  • t = DHT.temperature;
  • h = DHT.humidity.

Этот тип данных подходит для хранения чисел, имеющих десятичный разделитель.

Serial.print () позволяет вывести показания без переноса строчек, а Serial.println () учитывает перенос.

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

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

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

Возможно применение DHT11 для контроля показателей в инкубаторе. В такой ситуации датчик должен подключаться к LCD-дисплею, а не экрану последовательного порта. Подходят версии 16×2 символов. В код требуется внести соответствующие изменения — данные должны выводиться на LCD. Для этого требуется инициализировать дисплей через LCD.init () и обеспечить вывод данных через  LCD.setCursor () и LCD.print ().

Используется также команда LCD.clear (), которая подготавливает экран для вывода новых показателей.

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 я рекомендую покупать именно такой.

Дополнительные сенсоры

Кроме сенсоров, которые мы рассмотрели выше можно присмотреться и к другим датчикам для Ардуино:

  1. Датчик температуры + влажности. Вы можете использовать этот совместимый с Arduino гаджет для контроля температуры окружающей среды или влажности. В качестве основного проекта вы можете подключить ЖК-дисплей к Arduino и отображать температуру в помещении/влажность.
  2. Датчик инфракрасного излучения, также называемый «инфракрасным излучающим диодом». Он работает с 38KHz модулирующим сигналом. Можно использовать для отправки кода в другой Arduino или для управления телевизором.
  3. Фоторезистор. Сопротивление компонента будет варьироваться в зависимости от интенсивности света, которому он подвергается. Является резистором, сопротивление которого падает, когда свет попадает на него.
  4. Ультразвуковой прибор расстояния автоматически отправляет аудиосигнал 40 кГц и определяет, есть ли импульсный сигнал назад. Он посылает сигнал, и если он получает обратно, то вычисляет пройденное расстояние, таким образом, расстояние от приспособления до объекта перед ним. Он может ощущать объект в диапазоне: 2 см ~ 500 см.
  5. Датчик детонации. Проще говоря, это переключатель, который включается, когда он обнаруживает стук. Существует светодиод, который также дает визуальный сигнал состояния, высокий или низкий.
  6. Звуковой будет обнаруживать окружающий звук. Это лучше всего использовать для таких проектов, как голосовые чейнджеры.
  7. Обнаружение напряжения (выше/ниже). Определяет уровень напряжения любого поставщика постоянного тока, до 25 вольт. Критические точки перенапряжения/пониженного напряжения могут быть отрегулированы.
  8. Определитель влажности и температуры. Arduino датчик влажности почвы помогает определить условия для комфортного существования комнатных и тепличных растений.

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

Объяснение работы проекта

Работа нашего регистратора данных (логгера) на Arduino достаточно проста. После того как вы соберете всю схему и загрузите программу в плату Arduino значения даты, времени, температуры и влажности начнут сохраняться в файл на SD карте. Для того, чтобы задействовать PLX-DAQ для записи данных в лист Excel на вашем компьютере, вы должны выполнить следующую последовательность действий.

Шаг 1: Откройте файл “Plx-Daq Spreadsheet” который был создан на вашем рабочем столе во время установки этого программного обеспечения.

Шаг 2: Если Excel показывает вам ограничение на запись данных, то кликните Options->Enable the content -> Finish -> OK чтобы получить следующий экран.

Шаг 3: Выберите бодовую скорость “9600” на том последовательном порту, к которому подключена плата Arduino и нажмите на Connect. Ваши данные должны начать записываться как показано на следующем рисунке.

Вы можете оставить этот лист Excel открытым и смотреть как записываются данные. Те же самые данные в это же время записываются и на SD карту. Чтобы проверить это извлеките SD карту из собранного устройства и вставьте ее в ваш компьютер. Вы должны найти на ней файл “LoggerCD.txt”. Когда вы откроете его, он будет выглядеть примерно так, как показано на следующем рисунке:

Но в таком виде их трудно будет анализировать. Поэтому мы можем открыть этот файл в Excel в формате CSV (Comma separated values – данные, разделенные запятыми) чтобы сделать анализ этот данных более удобным. Чтобы открыть его в Excel выполните следующую последовательность действий:

  1. Откройте Excel. Кликните на File->Open и выберите “All file” в правом нижнем углу, затем выберите файл “LoggerCD” на вашей SD карте. Запустится мастер импорта текста.
  2. Кликните на “Next” и выберите запятую (comma) в качестве разделителя. Кликните на “Next” снова, затем на Finish.
  3. После этого ваши данные будут открыты в Excel файле как показано на следующем рисунке:

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

Беспроводная регистрация данных (лог) с помощью Arduino

Если у вас все получилось, то вы можете внести ряд усовершенствований в этот проект. Просто подсоедините к плате Arduino Bluetooth устройство (например, модуль HC-05) и передавайте данные в программу PLX-DAQ при помощи технологии Bluetooth, а не по последовательному порту. В этом случае в программе вам необходимо заменить Serial.print(parameter); на BluetoothName.print(parameter); и соединить ваш компьютер/лэптоп к HC-05 по Bluetooth – для этого необходимо будет выбрать COM порт, к которому подсоединен Bluetooth на вашем компьютере/лэптопе. И все – ваш беспроводной логгер (регистратор) данных на основе Arduino будет готов.

Подключение DHT11 и DHT22/AM2302 к Arduino UNO

Теперь, когда у нас есть полное понимание того, как работает датчик DHT, мы можем начать подключать его к нашей плате Arduino!

К счастью, подключение датчиков DHT11, DHT22/AM2302 к Arduino довольно тривиально. У них довольно длинные выводы с шагом 0,1 дюйма (2,54 м), поэтому вы можете легко вставить их в любую макетную плату. Подайте на датчик питание 5 В и подключите землю. Наконец, подключите вывод данных к цифровому выводу 2 на Arduino.

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

Рисунок 6 – Подключение DHT11 к Arduino UNOРисунок 7 – Подключение DHT22/AM2302 к Arduino UNO

Теперь вы готовы загрузить в Arduino код и заставить ее работать.

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

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

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

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

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

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

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

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

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

Код Arduino. Вывод значений на монитор последовательного порта

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

Сначала скачайте библиотеку, посетив репозиторий на GitHub, или просто нажмите эту кнопку, чтобы скачать архив:

Чтобы установить библиотеку, откройте Arduino IDE, перейдите в «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку» и выберите только что загруженный zip-архив DHTlib.

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

Скетч начинается с включения библиотеки DHT. Затем нам нужно определить номер вывода Arduino, к которому подключен вывод данных нашего датчика, и создать объект . Так мы сможем получить доступ к специальным функциям, связанным с библиотекой.

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

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

После расчета значений влажности и температуры мы можем получить к ним доступ:

Объект возвращает значение температуры в градусах Цельсия (°C). Его можно преобразовать в градусы Фаренгейта (°F) по простой формуле:

\[T_{^\circ F} = T_{^\circ C} \times 9/5 +32\]

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

Рисунок 8 – Вывод в мониторе последовательного порта показаний датчика DHT11 или DHT22/AM2302

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

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

Adblock
detector