датчик DHT11

Датчик DHT11 не відрізняється високою швидкодією і точністю, проте може знайти своє застосування в електронних проектах через свою невисоку вартість. Датчик DHT11 складається з ємнісного датчика вологості і термістора. Крім того, датчик містить в собі простенький АЦП для перетворення аналогових значень вологості і температури.

Датчик має 4 піни в одну лінію з кроком 2,54 мм:

  • 1 - VCC (живлення 3-5 В);

  • 2 - DATA (передача даних);

  • 3 - не використовується;

  • 4 - GND (земля).

Протокол обміну - однопровідний, за структурою дуже схожий на DS18B20, але з важливими застереженнями:

  • DHT11 не вміє працювати в «паразитному» режимі (живлення по лінії даних);

  • кожен DS18B20 має персональний ідентифікатор, що дає можливість підключення декількох таких датчиків до одного піну Arduino. Однак у DHT11 подібної можливості немає - один датчик буде використовувати строго один цифровий пін.

Завдання.

Зібрати схему за попереднім уроком. DHT11 під'єднати наступним чином:

  • VCC ⇒ 3.3В або 5В на arduino

  • GND ⇒ GND на arduino

  • DATA ⇒ 2 цифровий порт на arduino

Бібліотека DHT

скетч:

#include "DHT.h"

#define DHTPIN 2 // пін під'єднання контакта DATA

#define DHTTYPE DHT11 // DHT 11

#include <LiquidCrystal.h>

// ініціалізація із зазначенням контактів підключення

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

DHT dht(DHTPIN, DHTTYPE);

void setup()

{

lcd.begin(16,2); // режим роботи

dht.begin();

}

void loop()

{

// отримання з датчика даних вологості і температури

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(t) || isnan(h)) // помилка отримання даних

{

lcd.clear();lcd.setCursor(0,0);

lcd.print("Failed to read");

}

else // вивести дані на РКІ

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Humidity: ");lcd.print(h); lcd.println(" %");

lcd.setCursor(0,1);

lcd.print("Temp: "); lcd.print(t);lcd.println(" *C");

}

delay(2000); // пауза перед наступним виміром

}