DHT12 — это улучшенная версия датчика температуры и влажности DHT11 с интерфейсом I2C/TWI. Более подробное описание этого модуля можете найти на странице DHT12 — I2C датчик влажности и температуры. А в этом посте мы подключим по I2C датчик DHT12 к Arduino, установим необходимую библиотеку и будем выводить значения в последовательный порт компьютера и на дисплей LCD1602 используя I2C модуль — PCF8574.
Установка библиотеки DHT12
Для работы с датчиком я использую библиотеку DHT12.zip. Библиотеку можно установить из самой среды следующим образом:
- В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Добавить .ZIP библиотеку…
- Выбираем .ZIP архив (DHT12.zip) и кликаем Open/Открыть.
- Библиотека установлена.
Ещё можно распаковать архив и добавить в папку «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 достаточно просто. Схема подключения показана на рисунке.
Не нужно забывать про подтягивающие резисторы на 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); }
Результат
Открываем монитор порта. В него будут выводиться значения влажности и температуры.
Подключение 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 выглядит следующим образом:
В данном случае можно не использовать дополнительные подтягивающие резисторы, так как они присутствуют на модуле 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 — I2C датчик влажности и температуры
Подключение LCD1602 к Arduino по I2C (HD44780/PCF8574)
LiquidCrystal_I2C
Не компилирует данный скетч на подключение к 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
вот эта библиотека
https://www.arduino.cc/reference/en/libraries/dht12/
Всё получилось, удал л лишние библиотеки и заново установил, всё поехало. Теперь другая проблема, почему при отключении и включении питания, всё показания пропадают и приходится загружать скетч заново?
Thank you for addressing such an important femipro topic so thoughtfully.
online pharmacy prescription
sildenafil dosages
kamagra oral jelly: kamagra 100mg prix — kamagra gel
Achat Cialis en ligne fiable: cialis generique — Acheter Cialis tadalmed.shop
https://pharmafst.shop/# pharmacie en ligne fiable
pharmacie en ligne fiable: Pharmacie en ligne France — pharmacie en ligne sans ordonnance pharmafst.com
Pharmacie en ligne livraison Europe: Medicaments en ligne livres en 24h — п»їpharmacie en ligne france pharmafst.com
Cialis generique prix: Tadalafil achat en ligne — Acheter Viagra Cialis sans ordonnance tadalmed.shop
kamagra livraison 24h: Achetez vos kamagra medicaments — Achetez vos kamagra medicaments
https://pharmafst.com/# pharmacie en ligne france livraison internationale
Acheter Cialis 20 mg pas cher: cialis sans ordonnance — Cialis sans ordonnance 24h tadalmed.shop
Acheter Cialis Achat Cialis en ligne fiable Cialis en ligne tadalmed.com
pharmacie en ligne france livraison belgique: Livraison rapide — trouver un mГ©dicament en pharmacie pharmafst.com
pharmacie en ligne: pharmacie en ligne — trouver un mГ©dicament en pharmacie pharmafst.com
cialis generique: Acheter Viagra Cialis sans ordonnance — cialis sans ordonnance tadalmed.shop
Cialis sans ordonnance 24h: Acheter Cialis — Cialis sans ordonnance 24h tadalmed.shop
Cialis sans ordonnance 24h: Acheter Cialis 20 mg pas cher — Acheter Cialis tadalmed.shop
acheter kamagra site fiable: kamagra oral jelly — kamagra pas cher
Kamagra pharmacie en ligne kamagra pas cher kamagra gel
cialis prix: Cialis en ligne — Pharmacie en ligne Cialis sans ordonnance tadalmed.shop
Medicine From India: Medicine From India — medicine courier from India to USA
https://medicinefromindia.com/# MedicineFromIndia
indian pharmacy online: india online pharmacy — medicine courier from India to USA
mexico pharmacy order online: mexico drug stores pharmacies — mexico pharmacy order online
RxExpressMexico: mexican online pharmacy — RxExpressMexico
indian pharmacy: indian pharmacy online shopping — MedicineFromIndia
certified canadian pharmacy: Generic drugs from Canada — canadian pharmacy checker
https://rxexpressmexico.com/# Rx Express Mexico
canadian pharmacy presription and meds
вавада казино vavada вход vavada casino
pin up вход: пин ап вход — пин ап вход
пин ап зеркало: пинап казино — пин ап казино официальный сайт
https://vavadavhod.tech/# vavada
https://pinupaz.top/# pinup az
pin up вход: пин ап казино — пин ап зеркало
pin-up casino giris: pinup az — pin-up
vavada вход: vavada casino — вавада зеркало
pin up casino: pinup az — pin up
купить аккаунт заработок на аккаунтах
http://vavadavhod.tech/# вавада зеркало
пин ап казино: пин ап зеркало — пин ап казино официальный сайт
https://pinuprus.pro/# пин ап вход
пин ап казино: пин ап зеркало — пин ап зеркало
http://vavadavhod.tech/# вавада
Account Acquisition Sell Pre-made Account
Accounts marketplace Account Selling Service
https://vavadavhod.tech/# vavada вход
вавада: vavada вход — vavada вход
pin up вход: пинап казино — пинап казино
вавада официальный сайт: вавада казино — вавада
pin up: pin-up — pin-up casino giris
http://vavadavhod.tech/# vavada вход
Account Purchase Account Selling Service
пин ап казино официальный сайт: пин ап казино — пин ап казино
https://pinupaz.top/# pin up azerbaycan
pin up pinup az pin up az
prices for viagra
Buy accounts https://buyaccounts001.com
пин ап казино: пин ап зеркало — pin up вход
sildenafil citrate 100mg coupons
viagra reddit
account trading platform account selling service
marketplace for ready-made accounts verified accounts for sale
account trading service ready-made accounts for sale
http://vavadavhod.tech/# вавада
вавада: вавада официальный сайт — vavada casino
buy and sell accounts account buying service
https://pinuprus.pro/# пин ап казино официальный сайт
http://pinupaz.top/# pin up
pin-up casino giris: pin-up casino giris — pin up
secure account purchasing platform social media account marketplace
website for buying accounts account trading platform
pin-up: pin up az — pin-up casino giris
http://pinupaz.top/# pinup az
database of accounts for sale account buying platform
пинап казино: пин ап казино официальный сайт — пин ап зеркало
вавада зеркало: вавада зеркало — vavada casino
account store guaranteed accounts
pin up: pin-up — pin-up casino giris
database of accounts for sale secure account purchasing platform
пин ап вход пинап казино pin up вход