Подключение датчика температуры и влажности DHT11 к Arduino

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

Основные характеристики датчика DHT11 из даташита:

Диапазон измеряемой температуры: 0 — +50°C,  +/- 2°C.
Диапазон измеряемой влажности: 20 — 80% RH, +/- 5% RH.
Питание: 3 — 5,5В
Потребляемый ток: 0.3мА, в режиме ожидания 60мкА
Обновление: 2 секунды
Габариты: 12х15.5х5.5мм

Типичная схема подключения датчика к ардуино выглядит так:

DHT11

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

Для работы с датчиком в среде написаны несколько библиотек, с разными методами работы, в своих проектах я использую эту.

Ниже пример для вывода данных с датчика на экран lcd keypad shield, который я показывал в видео. Для работы нужна библиотека, ссылка на которую >>ТУТ!<< с другими библиотеками код работать не будет!

#include <LiquidCrystal.h>
#include <dht11.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
dht11 sensor;

#define DHT11PIN 11

byte gradus[8] = {
  0b00110,
  0b01001,
  0b01001,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

void setup() {
  lcd.createChar(1, gradus);
  lcd.begin(16, 2);
  lcd.clear();
  delay(500);  
}

void loop() {
  lcd.setCursor(0, 0);
  switch (sensor.read(DHT11PIN)) {
    case DHTLIB_OK:
                lcd.clear();
                lcd.print("Read OK");                
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                lcd.clear();
                lcd.print("Checksum error");                
                return;
    case DHTLIB_ERROR_TIMEOUT: 
                lcd.clear();
                lcd.print("Time out error");                 
                return;
    default: 
                lcd.clear();
                lcd.print("Unknown error");                 
                return;
  }
  
  lcd.setCursor(0, 1);
  lcd.print(sensor.temperature);
  lcd.write(1);
  lcd.print("C");  
  lcd.print("  ");
  lcd.print(sensor.humidity);
  lcd.print("%"); 
  
  delay(500);   
}