Подключение 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

begin()

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

read()

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

getHumidity()

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

getTemperature()

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

 

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

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

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

Arduino DHT12
VCC VCC
A4 SDA
GND GND
A5 SCL

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

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

Результат

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

Подключение 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 на ЖК дисплей.

Результат

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

Материалы

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

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

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

  • Не компилирует данный скетч на подключение к 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() , чтобы ЖК дисплей успел настроиться, думается в этом проблема.

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

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