ESP32 Оқулық 28/55 - DHT11 Температура датчигі LCD-мен | SunFounder-дің ESP32 IoT оқу жиынтығы
Бұл оқулықта біз DHT11 температура мен ылғалдылық сенсорын ESP32 микроконтроллерімен қалай қосу керектігін қарастырамыз. Осы қондырғыны пайдаланып, біз қоршаған ортаның температурасы мен ылғалдылығын өлшеп, нәтижелерді сериялық мониторда да, LCD экранда да көрсетеміз. Сонымен қатар, температура белгілі бір шектен асқанда іске қосылатын дыбыстық сигнал құрылғысын (buzzer) енгіземіз.
Бұл жоба DHT11 сенсорын қолдануды ғана емес, сонымен қатар кірістірілген Wi-Fi және Bluetooth мүмкіндіктерін қамтитын ESP32-нің әмбебаптығын көрсетеді. Осы оқулықтың соңында сізде қоршаған орта жағдайларын үздіксіз бақылап, нақты уақыт режимінде кері байланыс беретін жұмыс істейтін қондырғы болады.
Көрнекі нұсқаулық үшін осы оқулыққа қоса берілген бейнені қараңыз (бейнеде 00:00). Бастайық!
Аппараттық құралдар түсіндірмесі
Бұл жобада қолданылатын негізгі компоненттер: ESP32 микроконтроллері, DHT11 сенсоры және LCD дисплей. ESP32 операцияның «миы» ретінде қызмет етеді, DHT11 сенсорынан деректерді өңдейді және LCD шығысын басқарады.
DHT11 сенсоры ылғалдылық пен температураны өлшейді, бір деректер желісі арқылы көрсеткіштерді береді. Ол 3.3V-тен 5.5V-ке дейінгі қуат көзін қажет етеді және ток тұтынуы төмен, бұл оны батареямен жұмыс істейтін қолданбаларға қолайлы етеді. LCD температура мен ылғалдылық мәндерін нақты уақыт режимінде көрсетеді.
Деректер парағының мәліметтері
| Өндіруші | GROVE |
|---|---|
| Бөлшек нөмірі | DHT11 |
| Логика/IO кернеуі | 3.3 – 5.5 В |
| Қуат кернеуі | 3.3 В |
| Шығыс тогы (арнаға) | 0.5 мА тип. |
| Ең жоғары ток (арнаға) | 2.5 мА макс. |
| PWM жиілігі бойынша нұсқау | Жоқ |
| Кіріс логикалық шектері | 0.3 VCC (төмен), 0.7 VCC (жоғары) |
| Кернеудің төмендеуі / RDS(on) / қанығу | Қолданылмайды |
| Жылулық шектер | 0°C-тан 60°C-қа дейін |
| Қаптама | DIP-4 |
| Ескертулер / нұсқалар | Ажыратымдылық: 1°C / 1% RH |
- Деректер желісінде жоғары тарту резисторын (5 кОм ұсынылады) пайдаланыңыз.
- Дәл көрсеткіштерді қамтамасыз ету үшін сенсор сымдарын қысқа ұстаңыз (20 м-ден аз).
- Оңтайлы өнімділік үшін DHT11-ді 3.3V кернеуімен қоректендіріңіз.
- Іріктеу кезеңі 1 секундтан кем болмауы керек.
- Көрсеткіштер сәтсіз болса, сым қосылымдарын тексеріңіз (мысалы, қосылмаған, қате пин).
Сым қосу нұсқаулары


DHT11 сенсорын ESP32-ге қосу үшін алдымен DHT11-дің VCC пинін (ең сол жақ пин) ESP32-нің 3.3V шығысына қосыңыз. Әрі қарай, жер пинін (төртінші пин) ESP32-дегі жер (GND) пиніне қосыңыз. Деректер пині (екінші пин) ESP32-дегі GPIO 14 пиніне қосылуы керек.
LCD үшін VCC пинін ESP32-нің 5V шығысына қосыңыз. Жер пині ESP32-дегі жер пиніне қосылуы керек. LCD-дің SDA және SCL пиндері сәйкесінше GPIO 21 және 22 пиндеріне қосылуы керек. Деректерді оқу кезінде қандай да бір ақауларды болдырмау үшін барлық қосылымдардың сенімді екеніне көз жеткізіңіз.
Код мысалдары және түсіндірме
Кодтың бірінші бөлігінде біз DHT сенсорын инициализациялаймыз және пин нөмірін #define DHTPIN 14 арқылы орнатамыз. Бұл идентификатор бізге код бойына DHT11 деректер желісіне қосылған пинге оңай сілтеме жасауға мүмкіндік береді.
#include "DHT.h"
#define DHTPIN 14 // DHT11 деректер пиніне қосылған пинді орнату
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
setup() функциясында біз қателерді жою үшін сериялық байланысты инициализациялаймыз және DHT сенсорын іске қосамыз. Негізгі цикл сенсорды сұраулармен шамадан тыс жүктемеу үшін 2 секунд кідірісті қамтиды.
Әрі қарай, біз ылғалдылық пен температура мәндерін float humidity = dht.readHumidity(); және float temperature = dht.readTemperature(); арқылы оқимыз. Бұл идентификаторлар кейінірек пайдалану үшін өлшенген мәндерді сақтайды.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Соңында, біз оқу қателерін тексереміз және мәндерді Serial.print() арқылы сериялық мониторға басып шығарамыз. Бұл бізге көрсеткіштерді нақты уақыт режимінде бақылауға мүмкіндік береді.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("DHT сенсорынан оқу сәтсіз аяқталды!");
return;
}
Serial.print("Ылғалдылық: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" *C");
LCD кодында біз LCD-ді инициализациялаймыз және lcd.print() функциясын пайдаланып температура мен ылғалдылықты экранда көрсетеміз. Бұл DHT11 сенсоры жинаған деректердің визуалды көрінісін қамтамасыз етеді.
Демонстрация / Не күтуге болады
Барлығы дұрыс қосылғаннан және код ESP32-ге жүктелгеннен кейін, температура мен ылғалдылық көрсеткіштері сериялық мониторда және LCD экранда көрсетілуі керек. Егер температура 30°C-тан асса, дыбыстық сигнал құрылғысы іске қосылып, естілетін дабыл береді.
Кері қосылымдарға абай болыңыз және сенсордың экстремалды жағдайларға ұшырамауын қамтамасыз етіңіз, себебі бұл көрсеткіштерге әсер етуі мүмкін. Талаптарыңызға байланысты дыбыстық сигналға арналған шекті мәнді реттеу қажет болуы мүмкін (бейнеде 15:30).
Бейне уақыт белгілері
- 00:00 Басталуы
- 1:57 DHT11-ге кіріспе
- 6:18 DHT11-ді ESP32-мен қосу
- 7:67 Arduino коды түсіндірілді
- 11:49 Arduino IDE-де ESP32 платасын және COM портын таңдау
- 13:30 Жобаның демонстрациясы
- 15:32 Фаренгейтті алу
- 16:04 ESP32 көмегімен LCD-де температураны көрсету
- 17:20 ESP32-мен DHT11 және LCD коды
- 19:49 ESP32-мен DHT11 LCD демо
- 21:33 Температура мәні бойынша әрекет ету
#include "DHT.h"
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print the humidity and temperature
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
/*
This is Arduino code to measure temperature and humidity using DHT11/DHT22 and displays it on LCD screen
written by Ahmad Shamshiri for SunFounder's ESP32 IoT learning kit
watch full video https://youtu.be/qRUFZX4eDJg
Full code, wiring diagram and other resources for this tutorial is at https://robojax.com/RJT711
*/
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD object with I2C address 0x27, 16 columns, and 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Begin serial communication at 115200 baud
Serial.begin(115200);
// Initialize the dht11
dht.begin();
// Initialize the LCD
lcd.init();
lcd.backlight();
// Clear the LCD
lcd.clear();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Display temperature and humidity on the LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(223); // Degree symbol
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
}
Common Course Links
Common Course Files
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Ресурстар мен сілтемелер
-
ҚұжаттамаESP32 Tutorial 28/55 - SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Файлдар📁
Fritzing файлы
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Пайдаланушының нұсқаулығы
-
DHT11 пайдаланушы нұсқаулығы
robojax-DHT11_manual.pdf0.82 MB