Архівний пост
Це один з найстаріших моїх постів, що писався спеціально для YouTube відео. Оригінал нажаль був російською, як і відос. Тому залишу тут чисто для історії його переклад.
Сьогодні я розповім про датчик вологості й температури DHT11 і просту схему термометра-гігрометра на базі Arduino.
Компоненти і схема підключення
У проєкті я використав такі компоненти:
- дроти;
- Arduino;
- датчик температури й вологості DHT11;
- LCD-дисплей;
- плата I2C;
- макетна плата.

Програма для Arduino
Завантажити скетч (програму):
Завантажити бібліотеки:
//===============================================================
//----------------------- WEATHER STATION -----------------------
//===============================================================
// Список компонентів і збирання -
// https://sites.google.com/view/diyle/проекты/thermometer
//===============================================================
// © Diyle 2017
//===============================================================
// Тестувалося на Arduino IDE 1.0.5 і 1.8.3
#include <Wire.h> // Підключаємо потрібні бібліотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT; // Оголошення змінної класу dht11
#define DHT11_PIN 4 // Датчик DHT11 підключений до цифрового піна 4
byte degree[8] = // Бітова маска символу градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
LiquidCrystal_I2C lcd(0x27, 16, 2); // Задаємо адресу й розмір дисплея
void setup()
{
lcd.begin(); // Ініціалізація 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(500);
}
Відео з інструкціями
Результат
