4. Подключение датчиков
Датчики являются основой любого "умного" дома. Независимо от индивидуальных требований и перечня задач, которые должна решать система в целом, именно датчики обеспечивают необходимую степень автоматизации и передают другим устройствам сигнал о необходимости включения или выключения в определенный момент. Правильный выбор данных приборов становится основой работоспособности и функциональности "умного" дома. В набор " ИНТЕРНЕТ ВЕЩЕЙ ДЛЯ УМНОГО ДОМА" включены следующие датчики:
• датчика температуры DS18B20;
• датчик влажности DHT22;
• датчик увлажненности почвы;
• датчик воды;
• датчик огня;
• датчик пропана;
• датчик движения.
В следующих главах мы рассмотрим подключение данных датчиков к контроллерам Arduino Mega и к модулю NodeMcu ESP8266, а также отправку данных с этих датчиков в сервис Blynk для возможности мониторинга данных датчиков на экране смартфона или телефона.
4.1. Подключение датчика влажности и температуры DHT11 (DHT22)
В повседневной жизни влажность выступает немаловажным параметром, от степени влажности воздуха немало зависит наше самочувствие. Особенно чувствительными к влажности являются метеозависимые люди, а также люди, страдающие гипертонической болезнью, бронхиальной астмой, заболеваниями сердечно-сосудистой системы. При высокой сухости воздуха даже здоровые люди ощущают дискомфорт, сонливость, зуд и раздражение кожных покровов. Часто сухой воздух может спровоцировать заболевания дыхательной системы, начиная с ОРЗ и ОРВИ, и заканчивая даже пневмонией.
Для измерения влажности воздуха умного дома в набор включен модуль датчика влажности и температуры DHT22 (рис. 4.1), который в отличие самого популярного датчика влажности DHT11 измеряет весь диапазон относительной влажности воздуха (0%...100%) и работает при отрицательных температурах(40~80℃).
Рис. 4.1. Модуль датчика влажности и температуры DHT22
Плата модуля содержит основные компоненты: датчик температуры и относительной влажности DHT22 (рис. 4.2) в белом корпусе, светодиод индикации питания и вилка соединителя. Внутри DHT22 небольшая плата с компонентами: емкостным датчиком влажности, терморезистором, имеющим отрицательную характеристику и микроконтроллером.
Рис. 4.2. Датчик DH22
Изготовитель вносит в память МК таблицу корректировки измерений каждого экземпляра для повышения точности работы. Данные модуля передаются в цифровом виде по однопроводному интерфейсу.
Рассмотрим подключение модуля датчика влажности и температуры DHT22 к плате Arduino Mega и модулю NodeMcu ESP8266.
4.1.1. Подключение датчика DHT22 к плате Arduino Mega.
Для подключение модуля датчика влажности и температуры DHT22 к плате Arduino Mega используется однопроводной интерфейс. Питание для датчика берем также с платы Arduino. Для удобного подключения к плате Arduino Mega лучше всего использовать плату расширения MEGA Sensor Shield. Схема соединений представлена на рис. 4.3.
Рис. 4.3. Схема подключений DHT22 к Arduino Mega
Для считывания данных датчика DTH22 с помощью Arduino, существует готовая библиотека DHT. Для её установки необходимо скопировать папку с файлами библиотеки в директорию libraries своего Arduino IDE.
Загрузим на плату Arduino Mega скетч получения данных с датчика DHT11 и вывода в последовательный порт Arduino. Получение данных влажности оформим в виде отдельной процедуры get_data_humidity(). Содержимое скетча представлено в листинге 4.1.
Листинг 4.1
// подключение библиотеки DTH
#include "DHT.h"
// константы
#define DHTPIN 22 // пин подключения контакта DATA
#define DHTTYPE DHT22 // датчик DHT 22
#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// создание экземпляра объекта DHT
DHT dht(DHTPIN, DHTTYPE);
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
Serial.begin(9600); // запуск последовательного порта
dht.begin(); // запуск DHT
}
void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c DHT11
int humidity = get_data_humidity();
// вывод в монитор последовательного порта
Serial.print("humidity=");
Serial.println(humidity);
// запуск отсчета интервала
millis_int1=millis();
}
}
int get_data_humidity() {
int h = dht.readHumidity();
return h;
}
Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика влажности и температуры DHT22 (рис. 4.4).
Рис. 4.4. Вывод данных DHT22 в монитор последовательного порта
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.
4.1.2. Подключение датчика DHT22 к модулю NodeMcu ESP8266
Теперь рассмотрим подключение датчика DHT22 к модулю NodeMcu ESP8266. Схема соединений представлена на рис. 4.5.
Рис. 4.5. Схема подключений DHT22 к NodeMcu ESP8266
Для считывания данных датчика DTH22 с помощью ESP8266, существует готовая библиотека DHT. Заметим, что эта библиотека именно для ESP8266, библиотека для Arduino не подходит. Содержимое скетча представлено в листинге 4.2.
Листинг 4.2
// подключение библиотеки DTH
#include "DHT.h"
// константы
#define DHTPIN 4 // пин (D2) подключения контакта DATA
#define DHTTYPE DHT22 // датчик DHT 22
#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// создание экземпляра объекта DHT
DHT dht(DHTPIN, DHTTYPE);
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
Serial.begin(9600); // запуск последовательного порта
dht.begin(); // запуск DHT
}
void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c DHT11
int humidity = get_data_humidity();
// вывод в монитор последовательного порта
Serial.print("humidity=");
Serial.println(humidity);
// запуск отсчета интервала
millis_int1=millis();
}
}
int get_data_humidity() {
int h = dht.readHumidity();
return h;
}
Загрузим скетч на модуль NodeMcu ESP8266, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика DHT22 (рис. 4.6)
Рис. 4.6. Вывод данных DHT22 в монитор последовательного порта
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .