ESP32 DHT11 Отчитане на температура и влажност в OLED дисплей с помощта на Arduino IDE

Esp32 Dht11 Otcitane Na Temperatura I Vlaznost V Oled Displej S Pomosta Na Arduino Ide



ESP32 е усъвършенствана микроконтролерна платка, която може да изпълнява множество инструкции за генериране на изходи. OLED екран се използва за показване на различни видове данни. Използвайки ESP32 със сензор DHT11, можем да отчитаме температура и влажност. Всички тези данни могат да бъдат представени върху OLED дисплей. Този урок обхваща всички стъпки, необходими за свързване на тези сензори с ESP32.

Този урок обхваща следното съдържание:







1: Въведение в сензора DHT11



2: Pinout на сензора DHT11



2.1: 3-пинов DHT11 сензор





2.2: 4-пинов DHT11 сензор

3: OLED дисплей модул с ESP32



4: Инсталиране на необходимите библиотеки

4.1: Библиотека Arduino за DHT сензор

4.2: Библиотека Arduino за OLED дисплей

5: Взаимодействие на ESP32 със сензор DHT11

5.1: Схематично

5.2: Код

5.3: Резултат

1: Въведение в сензора DHT11

DHT11 е един от често използваните сензори за наблюдение на температура и влажност в общността на електрониката. Той е по-прецизен при даването на температура и относителна влажност. Той извежда калибриран цифров сигнал, който изхвърля две различни показания за температура и влажност.

Той използва техниката за получаване на цифрови сигнали, която осигурява надеждност и стабилност. Сензорът DHT11 съдържа компонент за измерване на влажност от резистивен тип и включва компонент за измерване на температура NTC. И двете са интегрирани в 8-битов високоефективен микроконтролер, който предлага бърза реакция, способност против смущения и рентабилност.

Ето някои основни технически спецификации на DHT11:

    • Сензорът DHT11 работи при напрежение от 5V до 5.5V.
    • Работният ток при измерване е 0.3mA, а в режим на готовност е 60uA.
    • Той извежда серийни данни в цифров сигнал.
    • Температурният диапазон на сензора DHT11 е от 0°C до 50°C.
    • Диапазон на влажност: 20% до 90%.
    • Точност от ±1°C за измерване на температурата и ±1% за отчитане на относителната влажност.

Тъй като разгледахме основното въведение в сензора DHT11, сега нека преминем към разводката на DHT11.

2: Pinout на сензора DHT11

През повечето време сензорът DHT11 се предлага в две различни конфигурации на щифтове. Сензорът DHT11, който се предлага в конфигурация с 4 пина, има 3 пина, които не работят или са обозначени като без връзка.

3-пиновият сензорен модул DHT11 се предлага в три пина, които включват захранване, GND и щифт за данни.

2.1: 3-пинов DHT11 сензор

Даденото изображение показва 3-пинови конфигурации на сензора DHT11.


Тези три щифта са:

1. Данни Изходна температура и влажност в серийни данни
2. Vcc Входяща мощност 3.5V до 5.5V
3. GND GND на веригата

2.2: 4-пинов DHT11 сензор

Следното изображение илюстрира 4-пинов сензорен модул DHT11:


Тези 4 пина включват:

1. Vcc Входяща мощност 3.5V до 5.5V
2. Данни Изходна температура и влажност в серийни данни
3. NC Няма връзка или не се използва
Четири. GND GND на веригата

3: OLED дисплей модул с ESP32

OLED дисплеят се предлага основно с два различни комуникационни протокола. Двата протокола са I2C и SPI. Серийният периферен интерфейс (SPI) обикновено е по-бърз от I2C, но ние предпочетохме I2C пред SPI протокола, тъй като изискваше по-малък брой пинове.

Следното изображение илюстрира схема на свързване на ESP32 с OLED дисплей 128×64 пиксела (0,96’’).


По-долу е таблицата за свързване:


След като ESP32 е свързан с OLED дисплей, следващата стъпка в списъка е инсталирането на всички необходими библиотеки за програмиране на ESP32 с помощта на Arduino IDE.

4: Инсталиране на необходимите библиотеки

Тук ще свържем два различни сензора с ESP32, така че и двата изискват отделни библиотеки за работа. Сега ще инсталираме библиотеки за DHT11 и OLED дисплей.

4.1: Библиотека Arduino за DHT сензор

Отворете Arduino IDE, отидете на: Скица>Включване на библиотека>Управление на библиотеки

Като алтернатива можем също да отворим мениджъра на библиотека от страничния бутон на интерфейса Arduino IDE.

Потърсете DHT библиотеката и инсталирайте последната актуализирана версия. Библиотеката DHT ще помогне за четене на данни от сензори.


След като инсталираме DHT библиотеката, трябва да инсталираме a унифицирана сензорна библиотека от Adafruit.

4.2: Библиотека Arduino за OLED дисплей

В Arduino IDE са налични множество библиотеки за програмиране на ESP32 с OLED дисплей. Тук ще използваме две библиотеки от Adafruit: SSD1306 и GFX библиотека.

Отворете IDE и щракнете върху Library Manager и потърсете библиотеката OLED SSD1306. Инсталирайте библиотека SSD1306 от Adafruit от лентата за търсене.

Като алтернатива можете също да отидете на: Скица>Включване на библиотека>Управление на библиотеки


Следващата библиотека, която трябва да инсталираме, е GFX библиотека от Adafruit.


Инсталирали сме библиотеки както за OLED дисплея, така и за сензора DHT11. Сега можем лесно да взаимодействаме и с двете с ESP32.

5: Взаимодействие на ESP32 със сензор DHT11 и OLED

За свързване на ESP32 със сензор DHT11 се нуждаем от цифров щифт за четене на данни от сензора и за захранване на сензора DHT11 можем да използваме или 3V3 щифта, или Vin щифта на ESP32.

За OLED дисплей ще се използват I2C щифтове SDA и SCL. За захранване можем да използваме Vin или 3V3 щифт на ESP32.

5.1: Схематично

На даденото изображение можем да видим принципната диаграма на ESP32 с DHT11 и за изход се използва OLED екран. Това изображение представлява 3-пиновия сензорен модул, свързващ се с ESP32. Не забравяйте да свържете издърпващ резистор от 10kΩ.


По подобен начин може да се свърже и 4-пинов DHT11, като единствената разлика тук е 3-пиновият, който не е от полза или се нарича Без връзка. Щифтът за данни е на щифт 2 на сензора.

OLED дисплеят е свързан с помощта на I2C SDA и SCL щифтове съответно на D21 и D22.

5.2: Код

Свържете ESP32 с компютър и отворете Arduino IDE. Качете дадения код на платката ESP32.

#include             /*Включете библиотека за кабелна комуникация*/
#include
#include /*OLED дисплей библиотека*/
#include
#include             /*Библиотека със сензори за температура и влажност*/
#define SCREEN_WIDTH 128    /*Ширина на OLED екрана 128 пиксела*/
#define SCREEN_HEIGHT 64 /*OLED височина на екрана 64 пиксела*/
Adafruit_SSD1306 дисплей ( SCREEN_WIDTH, SCREEN_HEIGHT, и Тел, - 1 ) ; /* SSD1306 I2C Инициализация на дисплея */
#define DHTPIN 4          /*Сигнален пин за DHT11 сензор*/
#define DHTTYPE    DHT11
DHT dht ( DHTPIN, DHTTYPE ) ;
void настройка ( ) {
Serial.begin ( 115200 ) ;
dht.започнете ( ) ;
ако ( ! display.begin ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* I2C адрес на който OLED е свързан */
Serial.println ( Е ( „Неуспешно разпределение на SSD1306“ ) ) ;
за ( ;; ) ;
}
забавяне ( 2000 г ) ;
display.clearDisplay ( ) ;
display.setTextColor ( БЯЛ ) ; /* Цвят на изходния текст бял */
}
празен цикъл ( ) {
забавяне ( 5000 ) ;
float t = dht.readTemperature ( ) ; /* Прочети температура */
float h = dht.readHumidity ( ) ; /* Прочети влажност */
ако ( е ( ч ) || е ( T ) ) {
Serial.println ( „Неуспешно четене от DHT сензор!“ ) ;
}
display.clearDisplay ( ) ; /* ясно OLED дисплей преди показване на четене */
display.setTextSize ( 1 ) ; /* OLED текстов шрифт размер */
display.setCursor ( 0 , 0 ) ;
дисплей.печат ( 'Температура:' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , 10 ) ;
дисплей.печат ( T ) ; /* температура на печат в Целзий */
дисплей.печат ( ' ' ) ;
display.setTextSize ( 1 ) ;
display.cp437 ( вярно ) ;
показване.записване ( 167 ) ;
display.setTextSize ( 2 ) ;
дисплей.печат ( '° С' ) ;

display.setTextSize ( 1 ) ;
display.setCursor ( 0 , 35 ) ;
дисплей.печат ( 'Влажност: ' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , Четири пет ) ;
дисплей.печат ( ч ) ; /* отпечатва процент на влажност */
дисплей.печат ( '%' ) ;
дисплей.дисплей ( ) ;
}


Кодът започва с включване на необходимите библиотеки за OLED и DHT11 сензори. След това се определят размерите на OLED дисплея. След това се определя типът DHT сензор, в случай че използвате DHT22, заменете го съответно.

В частта за настройка DHT сензорът и OLED дисплеят се инициализират. OLED екранът е свързан на I2C адрес 0x3C. В случай, че искате да проверите I2C адреса, качете кода, даден в това статия .

Стойностите на температурата и влажността се съхраняват в променливата float T и ч съответно. След това и двете стойности се отпечатват на OLED дисплей.

5.3: Резултат

В изхода можем да видим измерените в реално време температура и влажност, показани на OLED екрана.




Успешно завършихме свързването на ESP32 със сензор DHT11 и OLED екран.

Заключение

OLED дисплеите с ESP32 могат да показват множество данни, които се четат с помощта на външни сензори. Тук тази статия обхваща всички стъпки за свързване на ESP32 със сензор DHT11 за измерване на температурата и влажността на помещението. След това всички прочетени данни се показват на I2C OLED дисплейния модул.