Подключение I2C датчика температуры и влажности DHT12 к Arduino и вывод данных на LCD1602 HD44780

DHT12 — это улучшенная версия датчика температуры и влажности DHT11 с интерфейсом I2C/TWI. Более подробное описание этого модуля можете найти на странице DHT12 — I2C датчик влажности и температуры. А в этом посте мы подключим по I2C датчик DHT12 к Arduino, установим необходимую библиотеку и будем выводить значения в последовательный порт компьютера и на дисплей LCD1602 используя I2C модуль — PCF8574.

Установка библиотеки DHT12

Для работы с датчиком я использую библиотеку DHT12.zip. Библиотеку можно установить из самой среды следующим образом:

  1. В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Добавить .ZIP библиотеку…Подключение I2C датчика температуры и влажности DHT12 к Arduino - Добавить .ZIP библиотеку...
  2. Выбираем .ZIP архив (DHT12.zip) и кликаем Open/Открыть.Подключение I2C датчика температуры и влажности DHT12 к Arduino - Выбор архива .ZIP
  3. Библиотека установлена.Подключение I2C датчика температуры и влажности DHT12 к Arduino - Библиотека Добавлена.

Ещё можно распаковать архив и добавить в папку «libraries» в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления Arduino IDE была открыта.

Описание методов библиотеки DHT12.zip

begin(uint8_t, uint8_t)

Инициализация DHT12 на ESP8266

void begin(uint8_t sda, uint8_t scl);

begin()

Инициализация DHT12

void begin();

read()

Читает, преобразовывает и сохраняет данные с DHT12. Возвращает статус DHT12_OK, если всё прошло нормально или DHT12_ERROR_CHECKSUM, DHT12_ERROR_CONNECT, DHT12_MISSING_BYTES в случае ошибки.

int8_t read();

getHumidity()

Возвращает относительную влажность. Данные обновляются при вызове метода read().

float getHumidity();

getTemperature()

Возвращает температуру. Данные обновляются при вызове метода read().

float getTemperature();

 

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

Подключается датчик температуры и влажности DHT12 к Arduino достаточно просто. Схема подключения показана на рисунке.

Схема подключения DHT12 к Arduino Pro MiniНе нужно забывать про подтягивающие резисторы на 10кОм на линии SDA и SCL.

Arduino DHT12
VCC VCC
A4 SDA
GND GND
A5 SCL

Пример скетча

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

/*
  Добавляем необходимые библиотеки
*/
#include <DHT12.h>
/*
  Создаём экземпляр класса DHT12
*/
DHT12 dht12;

void setup() {
  /*
    Инициализируем DHT12
  */
  dht12.begin();
  Serial.begin(9600);
  delay(2000);
}

void loop() {
  /*
     Читаем данные с DHT12 и получаем статус
  */
  int status = dht12.read();
  switch (status)   {
    case DHT12_OK:
      /*
        Выводим данные в терминал
      */
      Serial.println(F("Status : OK"));
      Serial.print(F("T = "));
      Serial.print(dht12.getTemperature());
      Serial.println(F("*C"));
      Serial.print(F("H = "));
      Serial.print(dht12.getHumidity());
      Serial.println(F(" %"));
      break;
    case DHT12_ERROR_CHECKSUM:
      Serial.print(F("Checksum error"));
      break;
    case DHT12_ERROR_CONNECT:
      Serial.print(F("Connect error"));
      break;
    case DHT12_MISSING_BYTES:
      Serial.print(F("Missing bytes"));
      break;
    default:
      Serial.print(F("Unknown error"));
      break;
  }
  delay(2000);
}

Результат

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

Подключение I2C датчика температуры и влажности DHT12 к Arduino - Результат

Подключение DHT12 к Arduino и вывод на LCD1602

Чтобы сделать устройство автономным, мы будем выводить данные на ЖК дисплей, в моём случае — это LCD1602 (два ряда по 16 символов) который управляется по интерфейсу I2C (PCF8574). Для подключения данного LCD модуля требуется всего 4 линии: питания (Vcc), земля (GND), последовательная линия данных SDA (Serial Data) и последовательная линия тактирования SCL (Serial CLock). Подробнее в статье Подключение LCD1602 к Arduino по I2C (HD44780/PCF8574).

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

Схема подключения ЖК, DHT12 и Arduino Pro Mini выглядит следующим образом:

Схема подключения I2C PCF8574 LCD1602 и DHT12 к ArduinoВ данном случае можно не использовать дополнительные подтягивающие резисторы, так как они присутствуют на модуле PCF8574.

Пример скетча

В приведенном ниже скетче мы будем измерять и отсылать данные о состоянии температуры и влажности по I2C на ЖК дисплей.

/*
  Добавляем необходимые библиотеки
*/
#include <DHT12.h>
#include <LiquidCrystal_I2C.h>

#define DEGREE (char)0

/*
  Создаём знак градуса
  ..OO.
  .O..O
  .O..O
  ..OO.
  .....
  .....
  .....
*/
uint8_t degree[8] = {
  0b00110,
  0b01001,
  0b01001,
  0b00110,
  0b00000,
  0b00000,
  0b00000
};
/*
  Создаём экземпляр класса DHT12
*/
DHT12 dht12;
/*
  Устанавливаем ЖК-дисплей по адресу 0x27, 16 символов и 2 строки
*/
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  /*
    Инициализируем DHT12
  */
  dht12.begin();
  /*
    Инициализируем ЖК-дисплей
  */
  lcd.init();
  /*
    Включаем подсветку дисплея
  */
  lcd.backlight();
  /*
    Добавляем символ градуса
  */
  lcd.createChar(DEGREE, degree);
}

void loop() {
  /*
     Читаем данные с DHT12 и получаем статус
  */
  int status = dht12.read();
  lcd.clear();
  switch (status) {
    case DHT12_OK:
      /*
        Выводим данные на дисплей
      */
      lcd.setCursor(0, 0);
      lcd.print(F("T = "));
      lcd.print(dht12.getTemperature());
      lcd.print(DEGREE);
      lcd.print(F("C"));

      lcd.setCursor(0, 1);
      lcd.print(F("H = "));
      lcd.print(dht12.getHumidity());
      lcd.print(F(" %"));

      break;
    case DHT12_ERROR_CHECKSUM:
      lcd.setCursor(0, 0);
      lcd.print(F("Checksum error"));
      break;
    case DHT12_ERROR_CONNECT:
      lcd.setCursor(0, 0);
      lcd.print(F("Connect error"));
      break;
    case DHT12_MISSING_BYTES:
      lcd.setCursor(0, 0);
      lcd.print(F("Missing bytes"));
      break;
    default:
      lcd.setCursor(0, 0);
      lcd.print(F("Unknown error"));
      break;
  }
  delay(2000);
}

Результат

Подключение DHT12 к Arduino и вывод на LCD1602 - Результат

Материалы

DHT12 — I2C датчик влажности и температуры
Подключение LCD1602 к Arduino по I2C (HD44780/PCF8574)
LiquidCrystal_I2C

Похожие записи

Комментарии 15

  • Не компилирует данный скетч на подключение к LCD1602 i2c.
    Подскажите в чем дело?
    вот вывод:

    /sdk/hardware/tools/avr/bin/avr-g++ -no-canonical-prefixes -std=gnu++11 -c -g -Os -w -mmcu=atmega328p -DF_CPU=16000000L -DUSB_VID=null -DUSB_PID=null -DARDUINO=10812 -DIDE=»ArduinoDroid» -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO /build/dht12 I2C (1).cpp -o /build/dht12 I2C (1).cpp.o dht12 I2C (1).ino: In function ‘void loop()’:
    dht12 I2C (1).ino:36:14: error: ‘DHT12_OK’ was not declared in this scope
    dht12 I2C (1).ino:39:17: error: ‘class DHT12’ has no member named ‘getTemperature’
    dht12 I2C (1).ino:45:17: error: ‘class DHT12’ has no member named ‘getHumidity’
    dht12 I2C (1).ino:49:6: error: ‘DHT12_ERROR_CHECKSUM’ was not declared in this scope
    dht12 I2C (1).ino:53:6: error: ‘DHT12_ERROR_CONNECT’ was not declared in this scope
    dht12 I2C (1).ino:57:6: error: ‘DHT12_MISSING_BYTES’ was not declared in this scope
    Return code is not 0

  • Всё получилось, удал л лишние библиотеки и заново установил, всё поехало. Теперь другая проблема, почему при отключении и включении питания, всё показания пропадают и приходится загружать скетч заново?

    • Добавьте небольшую задержку в void setup() , чтобы ЖК дисплей успел настроиться, думается в этом проблема.

  • If medical, legal, or other expert assistance is required, the service of a competent professional should be sought.
    Many replace their trip to the pharmacy by buying banfield online pharmacy is easy.
    Daily SMBG is especially important for patients treated with insulin to monitor for and prevent asymptomatic hypoglycemia.

  • And more than 50,000 people die every year.
    More people are using the internet to look for a cialis vs viagra at cost-effective prices when you get it from good online
    Pediatric Allergy and Immunology.

  • Walker D, Gill TJ III, Corson JM.
    Fear no more with percocet internet pharmacy at greatly reduced prices
    Estrogen Estrogens can be produced in the brain from steroid precursors.

  • If you think you’re tired now, just wait until you’re chasing around after a toddler all day.
    is not such a good ideaPeople look for the cheapest price of https://cilisfastmed.com/ what does cialis look like from reliable pharmacies
    There are two potential scenarios when it comes to water temperature: the water can be too hot or the water can be too cold.

  • Heart attacks cause stress on the heart and it tells the brain, which leads to the «fight or flight» stress response.
    I used more than the recommended dosage of https://ivermectinfastmed.com/ ivermectin 50 as it is modestly-priced and effectively works to relieve
    However, the beginning stages of colon cancer may not have any symptoms at all.

  • the best dealDon’t let your age control your sex life. Visit reputable online pharmacy levitra when they are buying it online.
    Blood in the urine may be a sign of bladder or kidney cancer.

  • Will using codeine pharmacy australia Online pharmacies are a great way to
    In Goldman L, SchaferAI, eds.

  • in sex.The efficiency of the medicines when you silk road online pharmacy , check bargain deals available online..
    EnlargeHow it worksPatients who indicate at registration that they have URI symptoms are given the encounter form folded in half and are asked to complete the patient questionnaire side.

  • Is there a way to tell if a pharmacy rx by crystal zamudio pills when you buy here
    Once infected by TB, most people remain healthy and develop only latent infection.

  • Consumers are aware of low price of pioneer rx pharmacy software reviews is 24/7.
    Either way, germs bacteria may then thrive and cause inflammation behind the blockage in the dead end of the appendix.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *