Измерване на температура и влажност с DHT11 и Arduino Nano

Измерване на температура и влажност с DHT11 и Arduino Nano

В тази статия ще демонстрираме как да използваме DHT11 сензор за температура и влажност в комбинация с Arduino Nano. Проектът ще включва четене на данни от сензора и визуализацията им в сериен монитор чрез Arduino IDE.

Необходими компоненти:

  1. Arduino Nano – микроконтролерът, с който ще работим. Може да разгледате неговите характеристики и неговта пин-диаграма в статията ни: Arduino Nano.
  2. DHT11 сензор – сензорът за измерване на температура и влажност.
  3. Резистор 4.7kΩ – за стабилизиране на комуникацията между сензора и Arduino.
  4. Кабели – за свързване на компонентите.
  5. Компютър с инсталирана Arduino IDE – за програмиране и наблюдение на резултатите.

Схема на свързване:

Измерване на температура и влажност с DHT11 и Arduino Nano Схема
  1. DHT11 има три пина:
    • VCC (захранване, свържете към 5V на Arduino)
    • GND (земя, свържете към GND на Arduino)
    • Data (свържете към дигитален пин D2 на Arduino Nano).

Можете да използвате резистор от 4.7kΩ между VCC и Data пина за по-стабилен сигнал.

Библиотека за DHT11:

За да използваме DHT11 сензора в проекта, първо трябва да инсталираме библиотеката dht.h, която позволява лесна комуникация със сензора. Тази библиотека може да свалите от тук: DHT_lib. Ако не знаете как да импортирате библиотеката в Arduino IDE може да научите това в статията ни: Arduino IDE бърз преглед.

Код за Arduino Nano и DHT11:

#include <dht.h>

dht DHT;

#define DHT11_PIN 2

void setup() {
  Serial.begin(9600); // Инициализиране на серийната комуникация
}

void loop() {
  int chk = DHT.read11(DHT11_PIN); // Четене на данни от DHT11 сензора

  // Принтиране на температурата
  Serial.print("Температура = ");
  Serial.print(DHT.temperature, 1); // Отпечатване на температурата с 1 знак след десетичната запетая
  Serial.print(" *C");

  Serial.print(" || ");

  // Принтиране на влажността
  Serial.print("Влажност = ");
  Serial.print(DHT.humidity, 1); // Отпечатване на влажността с 1 знак след десетичната запетая
  Serial.print(" %");

  Serial.println(); // Нов ред в серийния монитор

  delay(500); // Забавяне от 500ms преди следващото четене
}

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

  1. Импортиране на библиотеката: #include <dht.h> Библиотеката dht.h съдържа всички необходими функции за работа с DHT11 сензора.
  2. Инициализиране на DHT сензора: dht DHT; Създава обект от класа dht, който ще ни позволи да извикваме методите за четене на температура и влажност.
  3. Дефиниране на пина за DHT11: #define DHT11_PIN 2 Указва на кой пин на Arduino е свързан сензорът DHT11 – в този случай е използван дигитален пин D2.
  4. Инициализация на серийната комуникация: Serial.begin(9600); Тази команда стартира серийния монитор със скорост на предаване от 9600 бода.
  5. Четене на данни от DHT11: int chk = DHT.read11(DHT11_PIN); Методът read11() извършва комуникацията със сензора и връща кода за грешка (ако има). След като данните са прочетени, те се съхраняват в обекта DHT.
  6. Принтиране на температура и влажност: Serial.print("Температура = "); Serial.print(DHT.temperature, 1); Serial.print(" *C"); Температурата, съхранена в DHT.temperature, се отпечатва на сериен монитор с една цифра след десетичната запетая. Същото се отнася и за влажността.
  7. Забавяне: delay(500); Включваме половинсекундно забавяне между всяко измерване, за да не претоварваме процесора с твърде чести обновявания на данните.

Резултати:

След качването на този код в Arduino Nano и отварянето на серийния монитор, ще започнете да виждате стойности за температура и влажност, обновявани на всеки 500 милисекунди. Примерен изход ще изглежда така:

Температура = 24.0 *C || Влажност = 60.0 %
Температура = 24.1 *C || Влажност = 60.1 %
Температура = 24.0 *C || Влажност = 59.9 %

Видео демонстрация:

Заключение:

С този прост проект научихме как да свържем DHT11 сензора към Arduino Nano и как да изчитаме и визуализираме измерените стойности за температура и влажност. Това е само основата за по-сложни IoT приложения, като например система за мониторинг на околната среда или автоматизация на климатични системи.