Arduino для начинающих. урок 9. подключение датчика температуры и влажности dht11 и dht22

Подключение датчика 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

Создание веб-сервера NodeMCU ESP8266 с использованием режима WiFi Station (STA)

Как следует из заголовка, мы собираемся настроить наш ESP8266 NodeMCU в режим Station (STA) и создать веб-сервер для обслуживания веб-страниц для любого подключенного клиента в существующей сети.

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

const char* ssid = "YourNetworkName";  // Введите SSID
const char* password = "YourPassword";  //Введите пароль

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

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "DHT.h"

// Раскомментируйте одну из строк ниже для того типа DHT датчика, который вы используете!
//#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

/*Укажите SSID & пароль*/
const char* ssid = "YourNetworkName";  // Enter SSID here
const char* password = "YourPassword";  //Enter Password here

ESP8266WebServer server(80);

// DHT датчик
uint8_t DHTPin = D8; 
               
// Инициализация датчика DHT
DHT dht(DHTPin, DHTTYPE);                

float Temperature;
float Humidity;
 
void setup() {
  Serial.begin(115200);
  delay(100);
  
  pinMode(DHTPin, INPUT);

  dht.begin();              

  Serial.println("Connecting to ");
  Serial.println(ssid);

  // подключаемся к локальной сети Wi-Fi
  WiFi.begin(ssid, password);

  // проверка подключения Wi-Fi 
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected..!");
  Serial.print("Got IP: ");  Serial.println(WiFi.localIP());

  server.on("/", handle_OnConnect);
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("HTTP server started");

}
void loop() {
  
  server.handleClient();
  
}

void handle_OnConnect() {

 Temperature = dht.readTemperature(); // Получает значения температуры
  Humidity = dht.readHumidity(); // Получает значения влажности
  server.send(200, "text/html", SendHTML(Temperature,Humidity)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat,float Humiditystat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>ESP8266 Weather Report</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>ESP8266 NodeMCU Weather Report</h1>\n";
  
  ptr +="<p>Temperature: ";
  ptr +=(int)Temperaturestat;
  ptr +="°C</p>";
  ptr +="<p>Humidity: ";
  ptr +=(int)Humiditystat;
  ptr +="%</p>";
  
  ptr +="</div>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

Принцип процесса

Принцип работы (действия) датчика измерения влажности воздуха

Существует 5 типов гигрометров, различающихся по принципу действия:

Емкостные. Это простые модели, представляющие собой конденсаторы с воздухом как диэлектриком. Диэлектрическая проницаемость воздуха напрямую связана с влажностью, а при изменении влажности меняется и емкость воздушного конденсатора. Также есть модели с содержанием диэлектрика в воздушном зазоре: они срабатывают лучше, чем «просто воздушные». Такими устройствами уже можно измерять содержание воды в твердых веществах (позволяет измерить влажность исследуемого образца, помещенного между обкладками конденсатора, в том случае, если она превышает 0,5%).к этой категории относятся и тонкопленочные гигрометры с гребенчатыми электродами вместо обкладок. В них также присутствуют термодатчики, обеспечивающие компенсацию.
Резистивные. Конструкционно эти датчики влажности представляют собой два электрода на подложке, причем поверх электродов наносится материал с малым сопротивлением (величина сопротивления сильно меняется в зависимости от влажности). Часто в качестве покрытия используют оксид алюминия, который хорошо поглощает влагу из окружающей среды. Резистивные датчики измеряют величину протекающего тока и стоят недорого.
Термисторные или психометрические. Устройства представляют собой пару одинаковых термисторов (нелинейных электронных компонентов с сопротивлением, сильно зависящим от температуры). Работает следующим образом: один термистор размещают в герметичной камере, заполненной сухим воздухом, второй – в камере с отверстиями, через которые проходит воздух для измерений. Термисторы соединены по мостовой схеме: если на выходе получается нулевое напряжение, то влажность в камерах одинакова, если нет – то разность показателей влажности в камерах можно измерить в соответствии со значением полученного напряжения.
Оптические, также носят название конденсационные. Это – самый точный тип устройств, основанный на таком физическом понятии как «точка росы». В процессе определяется температура, при которой на поверхности материала выпадает конденсат. В зависимости от температуры точки росы измеряется влажность окружающей среды. В простейшем случае такие конструкции представляют собой светодиод, подсвечивающий зеркальную поверхность, после чего луч света меняет направление и попадает на фотодетектор. Зеркало подогревается или охлаждается высокоточным температурным регулятором (термоэлектрическим насосом), а в момент выпадения конденсата температуру фиксируют соответствующим датчиком

Для работы важно, чтобы зеркало было чистым: в конденсированных каплях воды световые лучи преломляются, и величина тока в цепи фотодетектора падает.
Электронные. Основной принцип действия этого устройства – измерение концентрации электролита, которым покрыт электроизоляционный материал

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

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

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

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

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

Android

Теперь напишем простое приложение для Андроид, которое запрашивает, получает, декодирует JSON-данные и отображает информацию на экране.

Наше Android-приложение будет простым насколько это возможно, только сама суть технологии. Далее вокруг этого «скелета» уже можно будет наворачивать различные «красивости».

Вот скриншот того, что должно получиться в итоге

Как видим UI просто спартанский, основан на LinearLayout, ничего лишнего.

В верхней части TextView показывает ID датчиков и их метео-данные. Кнопка «Обновить» инициирует повторный запрос к веб-серверу. Далее в EditText расположена единственная настройка программы — это URL запроса в виде

Что необходимо отметить?

В манифест добавьте строки разрешающие интернет и проверку состояния сетевого соединения :

Работа с сетью и получение данных с веб-сайта происходит следующим образом.

Используем AsyncTask, чтобы создать фоновую задачу отдельно от главного потока пользовательского интерфейса. Эта фоновая задача берет URL запроса и использует его для создания .

После того, как соединение установлено, AsyncTask загружает содержимое веб-страницы (JSON) как InputStream. Далее InputStream преобразуется в строку, которая декодируется с помощью JSONObject и отображается в пользовательском интерфейсе методом .

В MainActivity.java измените URL на ваш :

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

Протокол датчика DHT

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

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

Благодаря тому, что сенсор делает измерения только по запросу, достигается энергоэффективность: пока общения нет, датчик потребляет ток 100 мкА.

Датчик DHT21

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

Сенсор включает в себя ёмкостной компонент измерения влажности и резистивный компонент измерения температуры с отрицательным температурным коэффициентом (NTC), которые подключены к высокопроизводительному АЦП.

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

Контакты подключения трёхпроводного шлейфа

Модуль подключается к управляющей электронике по трём проводам.
Назначение контактов 3-проводного шлейфа:

  • Питание () — красный провод. На него должно подаваться напряжение питания от 3,3 до 5 В;
  • Земля () — чёрный провод. Должен быть соединён с землёй микроконтроллера;
  • Сигнальный () — жёлтый провод. Подключается к цифровому выходу микроконтроллера. Через него сенсор общается с микроконтроллером по собственному протоколу.

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

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

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

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

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

Исходный код программы

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

Для выполнения математических операций в программе мы должны подключить заголовочный файл библиотеки “#include <math.h>”, а для работы с ЖК дисплеем – подключить библиотеку “#include <LiquidCrystal.h>». Далее в функции setup() мы должны инициализировать ЖК дисплей.

Arduino

Void setup(){
lcd.begin(16,2);
lcd.clear();
}

1
2
3
4

Voidsetup(){

lcd.begin(16,2);

lcd.clear();

}

Значение температуры мы будем рассчитывать в программе с помощью рассмотренного выше уравнения Стейнхарта-Харта.

Arduino

float a = 1.009249522e-03, b = 2.378405444e-04, c = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) {
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Stein-Hart
Tc = T — 273.15; // переводим температуру из кельвинов в градусы Цельсия
Tf = (Tc * 1.8) + 32.0; // переводим температуру в шкалу Фаренгейта
return T;
}

1
2
3
4
5
6
7
8
9

floata=1.009249522e-03,b=2.378405444e-04,c=2.019202697e-07;

floatT,logRt,Tf,Tc;

floatThermistor(intVo){

logRt=log(10000.0*((1024.0Vo-1)));

T=(1.0(A+B*logRt+C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Stein-Hart

Tc=T-273.15;// переводим температуру из кельвинов в градусы Цельсия

Tf=(Tc*1.8)+32.0;// переводим температуру в шкалу Фаренгейта

returnT;

}

Также в программе мы считываем значение с аналогового входа платы Arduino.

Arduino

lcd.print((Thermistor(analogRead(0))));

1 lcd.print((Thermistor(analogRead())));

Внешний вид работы нашего проекта показан на следующем рисунке – на ЖК дисплее выводятся значения температуры в кельвинах, градусах Цельсия и по шкале Фаренгейта.

Схему можно запитать по кабелю USB или использовать адаптер на 12 В.

Далее представлен полный текст программы.

Arduino

#include <math.h>
#include «LiquidCrystal.h»
LiquidCrystal lcd(44,46,40,52,50,48);
float A = 1.009249522e-03, B = 2.378405444e-04, C = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) { // функция для расчета значения температуры
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt)); // рассчитываем значение температуры в кельвинах по формуле Стейнхарта-Харта
Tc = T — 273.15; // переводим температуру из кельвинов в градусы
Tf = (Tc * 1.8) + 32.0; // переводим температуру в шкалу Фаренгейта
return T;
}
void setup(){
lcd.begin(16,2);
lcd.clear();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print(«Temp:»);
lcd.print((Thermistor(analogRead(0))));
lcd.print(«k «);

lcd.setCursor(0,1);
lcd.print((Tc));
lcd.print(» C ;»);
lcd.setCursor(9,1);
lcd.print((Tf));
lcd.print(» F»);
delay(800);
}

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

#include <math.h>
#include «LiquidCrystal.h»

LiquidCrystallcd(44,46,40,52,50,48);

floatA=1.009249522e-03,B=2.378405444e-04,C=2.019202697e-07;

floatT,logRt,Tf,Tc;

floatThermistor(intVo){// функция для расчета значения температуры

logRt=log(10000.0*((1024.0Vo-1)));

T=(1.0(A+B*logRt+C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Стейнхарта-Харта

Tc=T-273.15;// переводим температуру из кельвинов в градусы

Tf=(Tc*1.8)+32.0;// переводим температуру в шкалу Фаренгейта

returnT;

}

voidsetup(){

lcd.begin(16,2);

lcd.clear();

}

voidloop()

{

lcd.setCursor(,);

lcd.print(«Temp:»);

lcd.print((Thermistor(analogRead())));

lcd.print(«k «);

lcd.setCursor(,1);

lcd.print((Tc));

lcd.print(» C ;»);

lcd.setCursor(9,1);

lcd.print((Tf));

lcd.print(» F»);

delay(800);

}

Принцип работы датчика

DHT22 (AM2302) использует упрощенную технологию единой шины для связи, в которой для обмена и управления данными в системе применяется только одна линия данных. В приложениях обычно требуется внешний подтягивающий резистор, около 5,1 кОм. Когда шина свободна, ее статус переключится на HIGH. SDA используется для передачи данных и синхронизации между микропроцессором и AM2302. Он принимает формат данных с одной шиной, 40 бит данных в одной передаче, старший бит первым. Соответствующая временная диаграмма показана ниже.

Название Данные по одной шине и формат сигнала
Start signal (Стартовый сигнал ) Микропроцессор устанавливает SDA на LOW на период времени (не менее 800 мкс), чтобы информировать датчик для подготовки данных.
Response signal (Ответный сигнал) Датчик устанавливает SDA на LOW на 80 мкс, а затем на HIGH на 80 мкс, чтобы ответить на сигнал запуска.
Data format (Формат данных) После получения сигнала запуска датчик считывает строку данных (40 бит) через SDA, старший бит выводится сначала.
Humidity (Влажность) Разрешение по влажности 16 бит, старший бит первым; Значение, считываемое датчиком, в 10 раз превышает фактическую влажность.
Temp. (Температура) Разрешение по температуре составляет 16 бит, старший бит первый; Значение, считываемое датчиком, в 10 раз превышает фактическую температуру. Когда MSB (бит 15) равен «1», это указывает на отрицательную температуру; Когда MSB (бит 15) равен «0», это указывает на положительную температуру; Другие биты (бит 14 ~ бит 0) указывают на обнаруженное значение температуры.
Parity bit (Бит четности) Бит четности = влажность высокая + влажность низкая + температура высокая + температура низкая

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

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

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

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

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

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

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

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

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

Обзор датчиков

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

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

Устройство состоит из трех компонентов:

  • погружной щуп с электродами;
  • комплект проводов;
  • управляющий блок.

Щуп соединяется с платой, а последняя подключается непосредственно к мини контроллеру Arduino. Все подобные модули имеют три или четыре выхода:

  • S — сигнальный (цифровой/аналоговый);
  • VCC — питание;
  • GND — заземление.

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

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

Подключение к Orange Pi

Для подключения будем использовать контакты GPIO. Orange Pi имеет 40 контактов GPIO. Можно использовать контакты GPIO для связи и передачи питания на светодиоды, датчики, двигатели и даже другие микроконтроллеры, такие как Arduino. Расположение выводов для Orange Pi, более подробно описано здесь .

Прежде всего, отключим питание Orange Pi при подключении датчиков. С помощью соединительных проводов соединим следующие контакты (датчик с пи):

  • DOUT к PIN 7 (GPCLK)
  • GND к PIN 6 (GND)
  • VCC к PIN 1 (VCC-3.3V)

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

Настроив аппаратное обеспечение, нам нужно настроить программную часть.

Создание метеостанции на базе Arduino и датчика температуры и влажности DHT22

Для создания метеостанции нам необходимо:

  • Arduino
  • Датчик температуры и влажности DHT22 (существуют модификации DHT11 или DHT21, но они имеют меньшую точность измерений)

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

Двухстрочный дисплей  LCD 1602А

Его подключение вы можете найти в предыдущей статье.
Начнем, пожалуй, с подключения нашего датчика температуры и влажности к Arduino. Две крайние ножки датчика это питание: крайняя левая +5V, крайняя правая — GND (земля). Ножка, отмеченная на схеме голубым проводом – сигнал (S), ее мы подключаем к порту на плате и обязательно подтягиваем резистором к питанию (10 кОм). Именно его в дальнейшем и пропишем в программе как пин, с которого мы будем считывать данные.  Отлично, теперь датчик подключен, перейдем к программированию.
Так как DHT22 является конденсационным, да и в своем устройстве он не так уж прост, для работы будем использовать готовую библиотеку, с помощью которой работа с датчиками сводится к использованию готовых функций.Итак, подключаем библиотеку DHT-master.

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

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

Проверяем, получаем ли мы данные и, если все идет по плану, то выводим эти показания в монитор порта.

Загружаем программу в плату и, чтобы увидеть показания, которые нам присылает DHT22, открываем монитор порта (Ctrl+Shift+M или Инструменты — Монитор порта) следим за изменениями температуры и влажности в комнате.Итак, LevelUP: теперь давайте освоим вывод показаний на двухстрочный дисплей.Для того, чтобы компьютер (ноутбук) не использовался исключительно как монитор для вывода показаний с датчика, мы будем использовать двухстрочный дисплей LCD 1602А, как устройство внешнего вывода.Для этого обратимся к статье подключение двухстрочного дисплея.Добавим пару элементов в программе, которые позволят нам использовать для вывода именно дисплей: подключим библиотеку для работы с дисплеем, и также, как и DHT22, создадим класс LiquidCrystal, в котором в качестве параметров указаны пины, используемые, как сигнальные для дисплея.

Далее в теле функции void setup() инициализируем дисплей: lcd.begin(16, 2) т.е. определяем максимальное количество символов в строке и количество строк и выводим название нашего мини-проекта.

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

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

Arduino

  • 60

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

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

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

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

Разновидности гигрометров и особенности

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

Волосяной

Это самый распространенный измеритель механического типа. Он способен фиксировать показания в диапазоне от 30 до 80%. К основным компонентам устройства относятся:

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

Пленочный

Пленочный гигрометр

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

Весовой

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

Конденсационный

Психрометрический гигрометр

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

Психрометрический

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

Существуют следующие типы приборов:

  1. Психрометры для метеостанций, смонтированные на штативе. Их устанавливают непосредственно в будку. Минус такой схемы состоит в том, что данные «мокрого» градусника зависят от скорости потока воздуха.
  2. Аспирационные модели, в которых термометры в защитной оправе из никеля обдуваются вентиляционным механизмом с одной и той же скоростью.
  3. Дистанционные приборы. Вместо градусников в них применяются датчики из кремния. Как и у остальных типов устройств, один из элементов подвергается смачиванию.

Электронный

Электронный гигрометр показывает самые точные результаты

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

Вводная информация

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

Один из них и наиболее популярный, что естественно, — Ардуино. Конструктор моментальной сборки электронных автоматических устройств любой степени сложности: высокой, средней и низкой. Эту платформу называют иначе «physical computing» за плотное взаимодействие с окружающей средой. Печатная плата с микропроцессором, открытый программный код, стандартные интерфейсы и подключение датчиков к Ардуино — слагаемые его популярности.

Система Ардуино — плата, которая объединяет все нужные компоненты, обеспечивающие полный цикл разработки. Сердце этой платы — микроконтроллер. Он обеспечивает управление всей периферией. Датчики, подключаемые к системе, позволяют системе «общаться» и взаимодействовать с окружением: анализировать, отмечать изменять.

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

Сегодня производитель 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.

Перспективы использования рассмотренных датчиков

Датчики DHT11 и DHT22 редко используют для одиночного подключения к плате Arduino. Наиболее часто эти датчики можно встретить в составе погодных станций. Например, статью по сборке такой станции можно найти на официальном сайте https://create.arduino.cc/projecthub/GeekRex/10-portable-arduino-weather-station-aws-ccf41f. В этой статье пользователю объясняют, как собрать погодную станцию из таких компонентов:

  • Arduino Nano R3 — компактная плата Ардуино с микроконтроллером ATmega328;
  • DHT22 — датчик влажности и температуры воздуха;
  • BMP180 — датчик атмосферного давления;
  • Adafruit Standard LCD-16×2 White on Blue — дисплей для вывода информации с датчиков.

Сама погодная станция собрана по такой схеме.

Принцип действия этой станции основан на снятии показаний с датчиков и их выводе на дисплей Adafruit Standard LCD-16×2 White on Blue.

Датчик влажности почвы также можно использовать в составе готовых автоматизированных систем, построенных на Ардуино. Например, на Github можно найти готовый проект под названием «irrigator». Этот проект позволяет создать на Arduino автополивщик растений.

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

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