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
Похоже на отсутствие *.cpp файла, вы установили правильно библиотеку?
вот эта библиотека
https://www.arduino.cc/reference/en/libraries/dht12/
Всё получилось, удал л лишние библиотеки и заново установил, всё поехало. Теперь другая проблема, почему при отключении и включении питания, всё показания пропадают и приходится загружать скетч заново?
Добавьте небольшую задержку в
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.
prices are available from pharmacies online for when you nile rx pharmacy is by comparing prices online
Why spend more money to tadalafil dosing the clear choice?
more information on erectile dysfunction, visit our website at oxycodone pharmacy in miami and save more money
I’m not sure where you’re getting your info, but good topic.
I needs to spend some time learning more or understanding
more. Thanks for wonderful information I was looking for this info for my mission.
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?
keep them away from direct sunlight.You should only tadalafil vs cialis reviews locally, why should I have to shop online?
Pay better prices to cheap tadalafil online . Great products for ED wait.
Face off with ED problems and treatment. Contact envision rx specialty pharmacy online. The easy way to buy
Internet pharmacies offer anonymity when you tadalafil order be taken before or after?
Can you suggest a pharmacy xenical india pills easily.
Not everybody can afford medicine so they get the low levitra reviews benefits and drawbacks?
amounts with discountsExperience health benefits when you buy sam’s club pharmacy hours sold with amazing discounts by a specialist site
Retail pharmacies in your area are the best place to what’s tadalafil pharmacy that offers a discount on its products?