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

Самые частые измеряемые параметры в промышленности и быту — это температура и влажность. Эти значения очень важны в сушке древесины, выпечке кондитерских изделий, в холодильных камерах. В быту измеряют в теплицах и в контурах отопления и горячего водоснабжения. Датчик DHT11 Ардуино прекрасно справляется со своими задачами и определяет более-менее точно температуру и влажность.

Из этой статьи вы узнаете:

Приветствую Вас! За клавиатурой Гридин Семён и в этом посте я покажу вам, как подключается датчик температуры и влажности DHT11, продемонстрирую работу кода и библиотеки.

Датчик DHT11

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

  1. Микроконтроллер запрашивает показания и меняет сигнал с 0 на 1.
  2. Датчик видит запрос, и отвечает ему, меняя битовый сигнал с 0 на 1.
  3. Когда они договорились между собой, датчик выдаёт ему пакет данных в размере 5 байт(40 бит), при чем в двух первых байтах температура, в третьем и четвертом влажность. Пятый байт — контрольная сумма для исключения ошибок измерения.

Характеристики сенсора температуры и влажности DHT11

  • Определение влажности в диапазоне 20-80%
  • Определение температуры от 0°C до +50°C
  • Частота опроса 1 раз в секунду

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

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

Промышленные датчики обычно выдают аналоговый сигнал на 4-20 мА или 0-10 В. Это такие сенсоры которые измеряют два параметра в паре. Например продукция компании ОВЕН ПВТ10:

Напишите в комментариях, какие вы применяете в своих проектах? Очень интересно ваше мнение...

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

  • определение влажности в диапазоне 0-100%
  • определение температуры от -40°C до +125°C
  • частота опроса 1 раз в 2 секунды

Подключение датчика DHT11

Датчики зачастую изготавливают в виде готовых шильдов. На выходе он имеет 3 пина:

  • Питание 5 В
  • Сигнал (S)
  • Земля GND

Сопротивление в 10 кОм ставить не нужно, так как оно уже впаяно в плату. Схема подключений датчика и Ардуино 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"); } }

#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" ) ;

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

В программе можно включить один интересный инструмент для просмотра графики. Его можно включить так Инструменты — Плоттер по последовательному соединению. Не знаю, у меня он отображает только температуру. Если кто знает, как можно задействовать несколько графиков, поделитесь в комментариях. Вот такая картинка получилась:

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

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

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

С уважением, Гридин Семён.

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

Для удобства использования, мы в RobotClass сделали модуль в форм-факторе 23×23мм, на котором датчик DHT11 уже имеет необходимый для правильной работы резистор подтяжки и штыревой трёхконтактный разъём.


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

  • напряжение питания: от 3 до 5 В;
  • потребляемый ток: 2,5 мА в момент опроса (в остальное время меньше);
  • диапазон измерений влажности: от 20 до 80%, при точности — 5%;
  • диапазон измерений температур: от 0 до 50°C, при точности ±2°C;
  • частота опроса: 1 Гц (раз в секунду).

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

Кроме DHT-11, существует множество аналогичных датчиков, которые отличаются точностью, энергопотреблением, интерфейсом. Например, у датчика DHT-22 диапазон измерений влажности составляет от 0 до 100%, а температуры от -40 до 125°C.

У датчика DHT11 есть четыре вывода, один из которых (№3) не используется.

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

Датчик DHT11 1 2 4
Ардуино Уно +5V 2 GND

Принципиальная схема

Внешний вид макета


Важно отметить, что второй вывод датчика мы подключаем не только ко второй линии GPIO на Ардуино, но еще и к плюсу питания через резистор подтяжки 4,7 кОм. Таким образом, мы, что называется, «подтягиваем» линию данных датчика к плюсу. Это необходимо для правильного функционирования DHT11.

Подключение модуля DHT11 ROC к Ардуино

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

Принципиальная схема

Внешний вид макета


Программа для работы с DHT11

Теперь, когда датчик подключен, приступим к программированию контроллера. Первое, что нам следует сделать — установить в Arduino IDE дополнительную библиотеку. Существует множество библиотек для работы с DHT, но мы выберем вариант с портала Adafruit. Ссылка на библиотеку имеется в конце урока.

Устанавливаем библиотеку и составляем тестовую программу:

#include
#include
#include

// датчик подключен к контакту №2
#define DHTPIN 2

// выбираем модель датчика, раскомментировав нужную строку
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// создаем объект dht, с которым будем работать
DHT_Unified dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
// инициализируем датчика
dht.begin();
}
void loop() {
sensors_event_t event;
// получаем значение температуры
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
// в случае проблем с датчиком температуры выводим следующий текст
Serial.println("Error reading temperature!");
}
else {
// вывод в COM порт текста Temperature: xxx°C
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println("°C");
}
// получаем значение влажности
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
// в случае проблем с датчиком влажности выводим следующий текст
Serial.println("Error reading humidity!");
}
else {
// вывод в COM порт текста Humidity: xxx%
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
delay(1000); // пауза 1 сек перед следующим опросом датчика
}

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

Загружаем программу в Ардуино Уно, открываем монитор последовательного порта (Tools/Serial Monitor) и наблюдаем результаты измерений!

Задания

  1. Автоматическая теплица. Требуется собрать автоматический регулятор влажности, состоящий из контроллера Ардуино Уно, датчика влажности DHT11 и реле. Программа регулятора должна каждые 3 секунды проверять значение влажности и температуры. В случае, если во время очередной проверки влажность опускается ниже 50% при температуре не ниже +20 градусов, с помощью реле включается вентилятор. Для простоты, к реле можно подключить обычный светодиод.

Заключение

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

Полезные материалы

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

Также библиотеку можно установить через менеджер библиотек в Arduino IDE. В поисковой строке менеджера необходимо ввести «DHT sensor library by Adafruit «.

Продолжаем серию уроков . Сегодня мы разберем подключение к Arduino датчиков температуры и влажности DHT11 и DHT22.

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

Список деталей для сборки модели

Для сборки проекта, описанного в этом уроке, понадобятся следующие детали:

  • плата Arduino (подробнее, о том как выбрать Arduino );
  • датчик DHT11 или DHT22 (можно купить, например, или );
  • Breadboard;
  • резистор на 10 кОм;
  • программа Arduino IDE, которую можно скачать с сайта Arduino .

Датчики DHT11 и DHT22

Чем отличаются датчики DHT11 и DHT22?

Две версии сенсоров DHT похожи друг на друга и имеют одинаковую распиновку. Их отличия в характеристиках. Спецификации:

Сенсор DHT11:

  • определение влажности в диапозоне 20-80%
  • определение температуры от 0°C до +50°C
  • частота опроса 1 раз в секунду

Сенсор DHT22:

  • определение влажности в диапазоне 0-100%
  • определение температуры от -40°C до +125°C
  • частота опроса 1 раз в 2 секунды

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

Подключение сенсоров DHT к Arduino

Датчики DHT имеют стандартные выводы и их просто установить на breadboard.

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

  1. питание.
  2. вывод данных
  3. не используется.
  4. GND (земля).

Между выводами питания и вывода данных нужно разместить резистор номиналом 10 кОм.

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

Схема подключения датчика с резистором:

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

Arduino скетч

Воспользуемся библиотекой DHT.h, созданной специально для датчиков DHT. Ее можно скачать . Для использования нужно поместить скачанную папку в в папку /libraries.

Пример программы для работы модели с датчиком DHT22 (можно просто скопировать в Arduino IDE):
#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(2000);
//Считываем влажность
float h = dht.readHumidity();
// Считываем температуру
float t = dht.readTemperature();
// Проверка удачно прошло ли считывание.
if (isnan(h) || isnan(t)) {
Serial.println("Не удается считать показания");
return;
}
Serial.print("Влажность: "+h+" %\t"+"Температура: "+t+" *C ");
}
При использовании датчика DHT11 закомментируйте строку:
DHT dht(DHTPIN, DHT22);
И раскомментируйте строку:
//DHT dht(DHTPIN, DHT11);
Загрузите скетч в контроллер и проверьте правильность работы при помощи Сервис->Монитор порта:

Показания температуры и влажности (Монитор порта)

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

Посты по урокам:

  1. Первый урок:
  2. Второй урок:
  3. Третий урок:
  4. Четвертый урок:
  5. Пятый урок:
  6. Шестой урок:
  7. Седьмой урок:
  8. Восьмой урок:
  9. Девятый урок:

Новые статьи

● 4.3. Подключаем датчик влажности почвы

Домашний уют — это атмосфера тепла в вашей квартире, желание возвращаться туда после трудного дня. Уют и комфорт в вашем доме оказывают непосредственное влияние на ваше самочувствие и настроение. Необходимое условие в создании уюта имеет использование комнатных цветов. Они доступны каждому из нас и при этом лучше любой мебели помогут создать уют и комфорт, и как ни что другое просто вдохнуть в ваш дом чистую энергию.
Но чтобы домашние цветы радовали вас красотой, следует выполнять общие правила по уходу за комнатными растениями - необходимо создать благоприятный для них режим температуры воздуха, влажности и освещения.
Модуль влажности почвы (рис. 4.12) предназначен для определения влажности земли, в которую он погружен. Он позволяет узнать о недостаточном или избыточном поливе ваших домашних или садовых растений. Модуль состоит из двух частей: контактного щупа YL-28 и датчика YL-38, щуп YL-28 соединен с датчиком YL-38 по двум проводам. Между двумя электродами щупа YL-28 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная — сопротивление меньше, ток — чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности.
Подключение данного модуля к контроллеру позволяет автоматизировать процесс полива ваших растений (своего рода "умный полив").

Рис. 4.12. Датчик увлажненности почвы Soil Moisture

Кроме контактов соединения с щупом, датчик YL-38 имеет четыре контакта для подключения к контроллеру.

Vcc - питание датчика;
. GND - земля;
. A0 - аналоговое значение;
. D0 - цифровое значение уровня влажности.

Датчик YL-38 построен на основе компаратора LM393, который выдает напряжение на выход D0 по принципу: влажная почва - низкий логический уровень, сухая почва - высокий логический уровень. Уровень определяется пороговым значением, которое можно регулировать с помощью потенциометра. На вывод A0 подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений.
Датчик YL-38 имеет два светодиода, сигнализирующих о наличие поступающего на датчик питания и уровня цифрового сигналы на выходе D0. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать модуль автономно, без подключения к контроллеру.
Рассмотрим подключение датчика увлажненности почвы Soil Moisture к плате Arduino Mega и модулю NodeMcu ESP8266.

4.3.1. Подключение датчика Soil Moisture к плате Arduino Mega

Подключение датчика Soil Moisture к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.13.

Рис. 4.13. Схема подключений датчика Soil Moisture к Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика температуры DS18B20 и вывода в последовательный порт Arduino. Получение данных влажности оформим в виде отдельной процедуры get_data_soilmoisture(). Содержимое скетча представлено в листинге 4.5.
Листинг 4.5

#// интервала измерений, мс #define SOILMOISTUREPIN A8 // пин подключения контакта A0 // значение полного полива # # void setup (void ) { Serial.begin(9600 ); } void loop (void ) { if (millis()-millis_int1 >= INTERVAL_GET_DATA) { Serial.print("soilmoisture =" );Serial.println(moisture); Serial.println(" %" ); // старт интервала отсчета millis_int1=millis(); } } { int avalue=analogRead(SOILMOISTUREPIN);

Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика Soil Moisture (рис. 4.14). Подберите практическим путем аналоговые значения для констант MINVALUESOILMOISTURE (полный полив) и MINVALUESOILMOISTURE (критическая сухость).

Рис. 4.14. Вывод данных с датчика Soil Moisture в монитор последовательного порта

Скачать данный скетч можно на сайте www..

4.3.2. Расширение аналоговых входов - мультиплексор CD4051

Модуль Node Mcu имеет один канал АЦП доступный для пользователей. Однако нам понадобится их гораздо больше. Как увеличить количество аналоговых входов? Для этого будем использовать мультиплексор CD4051 (см. рис. 4.15).


Рис. 4.15. Мультиплексор CD4051

Микросхема 4051 является 8-канальным аналоговым мультиплексор/ демультиплексором, имеющим 8 входов (y0 - y7) и 1 выход Z (см. рис. 4.16). Выбор считываемого входа осуществляется подачей цифровых сигналов на выходы s0 - s2. Т.е. для подключения к модулю Node Mcu 8 аналоговых датчиков необходимо задействовать 3 цифровых выхода модуля и 1 аналоговый вход.

Рис. 4.16. Контакты мультиплексора CD4051

И в листинге 4.6. представлен скетч циклического опроса 8 аналоговых датчиков, подключенных к 8 входам мультиплексора и через вход Z к аналоговому входу A0 модуля Node Mcu.
Листинг 4.6

// список пинов для подключения к s0, s1, s2 мультиплексора // D5, D7, D8 (GPIO 14, 13, 15) int pins={14 , 13 , 15 }; // Массив двоичных числ определяющих номер выбранного входа/выхода // микросхемы 4051, с 1 по 8. int bin = { B000, B001, B010, B011, B100, B101, B110, B111 } ; // служебные переменные int row; int r0 = 0 ; int r1 = 0 ; int r2 = 0 ; int avalue =0 ; void setup (void ) { // входы подключения к мультиплексору как OUTPUT for (int i=0 ;i<3 ;i++) { pinMode(pins[i],OUTPUT); } // запуск последовательного порта Serial.begin(9600 ); } void loop (void ) { for (int i=0 ;i<8 ;i++) { // выбор входа мультиплексора row = bin [i] ; r0 = row & 0x01 ; r1 = (row >> 1 ) & 0x01 ; // r2 = (row >> 2 ) & 0x01 ; // digitalWrite (pins[i], r0) ; digitalWrite (pins[i], r1) ; digitalWrite (pins[i], r2) ; // получение данных c A0 avalue= analogRead(A0); // вывод в монитор последовательного порта Serial.print("analog input =" );Serial.print(i); Serial.println(" = " ); Serial.println(avalue); } // пауза delay(2000 ); }

4.3.3. Подключение датчика Soil Moisture к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика Soil Moisture к модулю NodeMcu ESP8266. Датчик Soil Moisture подключаем к входу y0 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.17.

Рис. 4.17. Схема подключений датчика Soil Moisture к NodeMcu ESP8266

Загрузим на модуль Node Mcu скетч получения данных с датчика Soil Moisture и вывода в последовательный порт Arduino. Получение данных влажности оформим в виде отдельной процедуры get_data_soilmoisture(). Для выбора аналогового входа мультиплексора y0 подаем на контакты D5, D7, D8 сигнал низкого уровня LOW. Содержимое скетча представлено в листинге 4.7.
Листинг 4.7

#define INTERVAL_GET_DATA 2000 // интервала измерений, мс #define SOILMOISTUREPIN A0 // аналоговый вход // значение полного полива #define MINVALUESOILMOISTURE 220 // значение критической сухости #define MAXVALUESOILMOISTURE 900 // переменная для интервала измерений unsigned long millis_int1=0 ; void setup (void ) { // входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15) // как OUTPUT pinMode(14 ,OUTPUT); pinMode(13 ,OUTPUT); pinMode(15 ,OUTPUT); // запуск последовательного порта Serial.begin(9600 ); } void loop (void ) { if (millis()-millis_int1 >= INTERVAL_GET_DATA) { // получение данных c датчика SoilMoisture float moisture= get_data_soilmoisture(); // вывод в монитор последовательного порта Serial.print("soilmoisture =" );Serial.print(moisture); Serial.println(" %" ); // старт интервала отсчета millis_int1=millis(); } } // получение данных с датчика SoilMoisture float get_data_soilmoisture () { // выбор входа мультиплексора CD4051 - y0 (000) digitalWrite(14 ,LOW); digitalWrite(13 ,LOW); digitalWrite(15 ,LOW); // получение значения с аналогового вывода датчика int avalue=analogRead(SOILMOISTUREPIN); Serial.print("avalue =" );Serial.println(avalue); // масштабируем значение в проценты avalue=constrain(avalue, MINVALUESOILMOISTURE,MAXVALUESOILMOISTURE); int moisture=map (avalue, MINVALUESOILMOISTURE, MAXVALUESOILMOISTURE,100 ,0 ); return (float )moisture; }

Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика Soil Moisture (рис. 4.18). Подберите практическим путем аналоговые значения для констант MINVALUESOILMOISTURE (полный полив) и MINVALUESOILMOISTURE (критическая сухость).

Рис. 4.18. Вывод данных Soil Moisture в монитор последовательного порта

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

Компоненты для повторения (купить в Китае):

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

Напряжение питания: 3 - 5В
. Определяемая влажность: 20 - 80% ± 5%
. Определяемая температура: 0 - 50º ± 2%
. Частота опроса: ≤ 1Гц
. Размеры: 30 x 14 x 6мм

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

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

Модуль оборудован трех пиновым разъемом стандарта 2.54мм

G - Подключается к выводу GND

V - Подключается к выводу +5V

S - Подключается к цифровому выводу (в примере D4)

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

Библиотека необходимая для работы с модулем dht11

Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

Пример программного кода

#include // Добавляем библиотеку DHT11 dht11 DHT; #define DHT11_PIN 4 void setup (){ Serial .begin (9600); // Скорость работы порта Serial .println ("DHT TEST PROGRAM " ); // Выводим текст Serial .print ("LIBRARY VERSION: " ); // Выводим текст Serial .println (DHT11LIB_VERSION); Serial .println (); // Пустая строка } void loop (){ int chk; ; // Мониторинг ошибок chk = DHT.read (DHT11_PIN); // Чтение данных switch (chk){ case DHTLIB_OK: break ; case DHTLIB_ERROR_CHECKSUM: Serial .println ("Checksum error, \t" ); break ; case DHTLIB_ERROR_TIMEOUT: Serial .println ("Time out error, \t" ); break ; default : Serial .println ("Unknown error, \t" ); break ; } Serial .print ("Humidity = " ); Serial .print (DHT.humidity, 1); Serial .print (", Temp = " ); Serial .println (DHT.temperature,1); delay (1000); }

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


Вывод значений на LCD I2C модуль

Выводить значения на компьютер это конечно отлично, однако в автономном устройстве не всегда позволительно. Как было написано вначале, во второй части статьи приведем пример вывода данных на ЖК дисплей, который в свою очередь управляется по интерфейсу I2C. Для подключения данного LCD модуля требуется всего 4 линии: + питания, земля, последовательная линия данных SDA (Serial DAta) и последовательная линия тактирования SCL (Serial CLock). Более подробно об основах работы с LCD I2C модулем вы сможете прочесть здесь.

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

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

Пример программного кода

//Тестировалось на Arduino IDE 1.0.5 #include // Добавляем необходимые библиотеки #include #include dht11 DHT; // Объявление переменной класса dht11 #define DHT11_PIN 4 // Датчик DHT11 подключен к цифровому пину номер 4 byte degree = // Битовая маска символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея void setup () { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.createChar (1, degree); // Создаем символ под номером 1 } void loop () { // Выводим показания влажности и температуры lcd.setCursor (0, 0); // Устанавливаем курсор в начало 1 строки lcd.print ("Humidity = % " ); // Выводим текст lcd.setCursor (11, 0); lcd.print (DHT.humidity, 1); lcd.setCursor (0, 1); // Устанавливаем курсор в начало 2 строки lcd.print ("Temp = \1C " ); // Выводим текст, \1 - значок градуса lcd.setCursor (11, 1); lcd.print (DHT.temperature,1); int chk; ; // Мониторинг ошибок chk = DHT.read (DHT11_PIN); // Чтение данных switch (chk){ case DHTLIB_OK: break ; case DHTLIB_ERROR_CHECKSUM: lcd.clear (); lcd.print ("Checksum error" ); break ; case DHTLIB_ERROR_TIMEOUT: lcd.clear (); lcd.print ("Time out error" ); break ; default : lcd.clear (); lcd.print ("Unknown error" ); break ; } delay (1000); }

Купить в России