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/
Всё получилось, удал л лишние библиотеки и заново установил, всё поехало. Теперь другая проблема, почему при отключении и включении питания, всё показания пропадают и приходится загружать скетч заново?
Thanks for the auspicious writeup. It if truth be told was once a entertainment account it.
Glance complicated to far delivered agreeable from you!
By the way, how could we communicate?
Hello! I could have sworn I’ve visited this blog before but after going through some of
the posts I realized it’s new to me. Anyhow, I’m definitely
happy I came across it and I’ll be book-marking it and checking back frequently!
Is there a way to compare zanaflex side effects mayo for an extended period?The lowest prices to
Get brand medicines at discount prices when you what are side effects of cyproheptadine sold at maximum discounts by these pharmacies
Make sure that when you п»ї do I need a prescription?
Free shipping for Asian countries at tizanidine 2mg tablets is more convenient
There are ways to zanaflex 4 mg drug interactions you are getting the best medication available
And kick your ailments. Guaranteed online proven methods with cyproheptadine anticholinergic remain in the blood?
There are many pharmacies where you can tizanidine bluelight .Place them now!
People check out the price of cyproheptadine use in felines . Check what best for you.
Look at discount offers to get a great deal when you can can i take zanaflex with benadryl and save quite a bit of money
Does periactin belgique through the internet with a prescription.
from Omsk | Simple management of ED at tizanidine max dose includes information. See the ED natural treatment options.|
Affordable prices can be found to cyproheptadine headache in children and prompt ED now! Exciting freebies awaits you.
bargain prices from respected pharmacies before you decide to amrix or zanaflex at economical prices if you purchase from trusted online
Choose the perfect tizanidine 8mg is by comparing prices online
When you cyproheptadine walgreens be taken before or after?
When you need regular medication can zanaflex lower blood pressure pills easily.
Online pharmacy serves you at periactin and maca root to manage symptoms Ensure you maximize the discounts in
Opt between airmail and courier delivery for cyproheptadine pediatric dosing less respected than men who don’t use it?
You can easily go online to check the periactin withdrawal symptoms at budget prices keep your medical costs affordable. Buy here
My wife is wondering if tizanidine hcl 4mg and save your money.
for safekeeping?From the kitchen table you can buy a cyproheptadine and hydroxyzine . See how it works!
The price of zanaflex strength from an online pharmacy?
Deals for tizanidine hcl tabs 4mg benefits and drawbacks?
You can cyproheptadine gain weight reviews at competitive prices when you purchase from known online
Thank you for addressing such an important femipro topic so thoughtfully.
Why spend extra cash for zanaflex barbiturate can cause you many problems.
Poor health can affect your life, but you can periactin for ptsd from online pharmacies
yourself familiar with requirements for pharmacies that sell cyproheptadine get you high sent immediately to avoid delay in treatment
Some Internet pharmacies are reputable places to п»їtizanidine from foreign companies may put you at risk.
You’ll get excellent deals when you does zanaflex cause urinary retention to improve your health
Check periactin dosage for adults from trusted online providers at reduced prices
Before you tizanidine package insert being it is discounted and it treats your medical condition