ESP32 Оқулық 25/55 - NTC және LCD көмегімен температураны өлшеу | SunFounder ESP32 IoT оқу жиынтығы
Бұл оқулықта біз Теріс Температура Коэффициенті (NTC) термисторын қолданып температураны қалай өлшеуге болатынын және ESP32 микроконтроллерін пайдаланып көрсеткіштерді LCD экранында қалай көрсетуге болатынын үйренеміз. Жоба NTC термисторын ESP32-ге қосуды және температура көрсеткіштерін Цельсий мен Фаренгейтте көрсету үшін LCD қолдануды қамтиды. Бұл ESP32 платформасын пайдаланып температураны сезу және көрсету әдістерімен танысудың тамаша тәсілі.
Біз SunFounder компаниясының ESP32 кеңейту тақтасын қолданамыз, ол ESP32 мүмкіндіктерін кірістірілген Wi-Fi және Bluetooth арқылы кеңейтеді. Бұл тақтаны әртүрлі сенсорлар мен дисплейлермен оңай біріктіруге болады, бұл оны IoT жобалары үшін өте қолайлы етеді. NTC термисторы температураға кері пропорционалды өзгеретін кедергісіне негізделген температура көрсеткіштерін береді. Орнату және код туралы қосымша түсініктеме алу үшін бейнені міндетті түрде қараңыз (бейнеде 00:00).
Аппараттық құрал түсіндірмесі
Бұл жобада қолданылатын негізгі компоненттерге ESP32 микроконтроллері, NTC термисторы, резистор және LCD дисплей жатады. ESP32 орталық өңдеу бірлігі ретінде қызмет етеді, термистордан деректерді өңдейді және LCD дисплейді басқарады. NTC термисторы температураға сәйкес кедергісін өзгертеді, бұл бізге тұрақты резистормен кернеу бөлгіш конфигурациясына негізделген температураны есептеуге мүмкіндік береді.
LCD дисплей температура көрсеткіштерін Цельсий мен Фаренгейтте көрсетеді. Біз LCD-мен байланысу үшін I2C протоколын қолданамыз, бұл қажетті түйреуіштер санын азайту арқылы сымдарды жеңілдетеді. NTC термисторының температура жоғарылағанда кедергісі төмендейтін сипаттамасы бар, бұл біздің есептеулеріміз үшін өте маңызды.
Деректер парағының мәліметтері
| Өндіруші | SunFounder |
|---|---|
| Бөлшек нөмірі | NTC Термистор |
| Номиналды кедергі | 10 кΩ |
| Бета мәні | 3950 K |
| Температура диапазоны | -40°C - 125°C |
| Қаптама | Аксиалды |
- Термистордың күтілетін температура диапазонына сай екеніне көз жеткізіңіз.
- Кернеу бөлгіші үшін 10 кΩ резисторды қолданыңыз; әйтпесе көрсеткіштер дәл болмайды.
- Қысқа тұйықталуды болдырмау үшін қосылымдарды тексеріңіз.
- LCD I2C мекенжайының дұрыс екеніне көз жеткізіңіз (әдетте 0x27).
- ESP32 және перифериялық құрылғылар үшін тиісті қуат көзі деңгейлерін қолданыңыз.
- Тізбекті монитордың бауд жылдамдығы код параметрлеріне сәйкес келетінін тексеріңіз (115200).
Сымдарды қосу нұсқаулары


Компоненттерді қосу үшін NTC термисторын ESP32-ге қосудан бастаңыз. Термистордың полярлығы жоқ, сондықтан оны кез келген бағытта қосуға болады. Термистордың бір ұшын ESP32-дегі жерге (GND) түйреуішіне қосыңыз. Екінші ұшы 10 кΩ резисторға қосылады, ол содан кейін ESP32-дегі 3.3V түйреуішіне жалғанады. Термистор мен резистор арасындағы түйіспе ESP32-дегі 35 түйреуішіне қосылады, ол температураны есептеу үшін кернеуді оқиды.
LCD үшін жерге қосу түйреуішін (әдетте жоғарыдан екінші түйреуіш) ESP32-дегі GND-ге қосыңыз. Содан кейін VCC (көбінесе бірінші түйреуіш) ESP32-дегі 5V түйреуішіне қосыңыз. SDA түйреуіші (әдетте үшінші түйреуіш) ESP32-дегі 21 түйреуішіне, ал SCL түйреуіші (көбінесе төртінші түйреуіш) 22 түйреуішіне қосылуы керек. Барлық қосылымдардың сенімді екеніне көз жеткізіңіз және қателіктерді болдырмау үшін түйреуіш нөмірлерін екі рет тексеріңіз.
Код мысалдары және түсіндірме
Код термистор үшін тұрақтыларды анықтаудан басталады, оның ішінде түйреуіш нөмірі, анықтамалық кернеу және кедергі мәндері. Орнату функциясы тізбекті байланысты инициализациялайды және термистор түйреуішін кіріс ретінде орнатады.
const int thermistorPin = 35; // Термисторға қосылған түйреуіш
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // 'басқа' резистор
Негізгі цикл термистор түйреуішінен аналогтық мәнді оқиды, кедергіні есептейді, содан кейін Бета параметр теңдеуін қолданып температураны Цельсий мен Фаренгейтте есептейді. Есептелген мәндер тізбекті мониторға басып шығарылады.
int adcValue = analogRead(thermistorPin); // ADC мәнін оқу
float voltage = (adcValue * referenceVoltage) / 4095.0; // Кернеуді есептеу
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Термистор кедергісін есептеу
Соңында температура LCD-де көрсетіледі. lcd.print() функциясы температура мәндерін градус белгісімен бірге көрсету үшін қолданылады.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Градус белгісі
lcd.print("C");
Бұл код LCD-ді әр 300 миллисекунд сайын соңғы температура көрсеткіштерімен тиімді жаңартып, нақты уақыттағы бақылауға мүмкіндік береді.
Демонстрация / Не күтуге болады
Кодты іске қосып, сымдарды дұрыс жалғағаннан кейін, LCD дисплейінде температура көрсеткіштері Цельсий және Фаренгейт бойынша көрсетілгенін байқайсыз. Егер термисторды қолыңызда ұстасаңыз, кедергі азайған сайын температураның жоғарылағанын байқайсыз. Полярлықтың ауысуына абай болыңыз және қосылымдардың сенімді екеніне көз жеткізіңіз, себебі дұрыс емес сым жалғау дәл емес көрсеткіштерге әкелуі мүмкін (бейнеде 04:50).
Бейне уақыт белгілері
- 00:00 Басталуы
- 1:50 жобаға кіріспе
- 5:32 сымдарды жалғау түсіндірілді
- 8:20 ESP32 үшін Arduino NTC коды түсіндірілді
- 13:38 Arduino IDE-де ESP32 тақтасын және COM портын таңдау
- 15:20 NTC температураны өлшеу демонстрациясы
- 17:34 ESP32-мен LCD1602-де NTC температурасы
- 18:42 LCD-мен Arduino NTC коды түсіндірілді
- 21:15 LCD-де температураны көрсету демонстрациясы
- 23:13 Жасыл LCD немесе көк LCD1601?
// Define constants
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // the 'other' resistor
const float beta = 3950; // Beta value (Typical Value)
const float nominalTemperature = 25; // Nominal temperature for calculating the temperature coefficient
const float nominalResistance = 10000; // Resistance value at nominal temperature
void setup() {
Serial.begin(115200); // Initialize serial communication
pinMode(thermistorPin, INPUT); // Set pin as input
}
void loop() {
int adcValue = analogRead(thermistorPin); // Read ADC value
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance with updated configuration
// Calculate temperature using the Beta parameter equation
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Get temperature in Celsius
float tempF = 1.8 * tempC + 32.0; // Get temperature in Fahrenheit
//Print temperature
printf("TempC: %.2f C\n", tempC);
printf("TempF: %.2f F\n", tempF);
delay(300); // Wait 1 second
}
/*
This is Lesson 25/55 of SunFounder's ESP32 IoT Learning kit code
displays temperature from NTC on LCD screen
written by Ahmad Shamshiri for SunFounder's ESP32 IoT Learnign kit
watch full video https://youtu.be/zJh-gWY0DmE
download this code, wiring diagram and other resources from https://robojax.com/RJT707
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//SDA->21,SCL->22
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// Define constants
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // Resistance value (10k)
const float beta = 3950; // Beta value (Typical Value)
const float nominalTemperature = 25; // Nominal temperature for calculating the temperature coefficient
const float nominalResistance = 10000; // Resistance value at nominal temperature
void setup() {
lcd.clear();
lcd.init();// initialize the lcd
lcd.backlight(); // Turns on the LCD backlight.
//Serial.begin(115200); // Initialize serial communication
pinMode(thermistorPin, INPUT); // Set pin as input
}
void loop() {
int adcValue = analogRead(thermistorPin); // Read ADC value
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance with updated configuration
// Calculate temperature using the Beta parameter equation
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Get temperature in Celsius
float tempF = 1.8 * tempC + 32.0; // Get temperature in Fahrenheit
//Print temperature
//printf("TempC: %.2f C\n", tempC);
//printf("TempF: %.2f F\n", tempF);
// Display temperature on LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Degree symbol
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.write(223); // Degree symbol
lcd.print("F");
delay(300); // Wait 1 second
}
Common Course Links
Common Course Files
Ресурстар мен сілтемелер
-
ҚұжаттамаESP32 Tutorial 25/55- SunFounder doc page for NTS thermometerdocs.sunfounder.com
-
ҚұжаттамаLearn about NTC Thermistordocs.sunfounder.com
Файлдар📁
Файлдар жоқ.