د ESP32 ټیوټوریل 25/55 - د NTC او LCD په کارولو سره د تودوخې اندازه کول | د SunFounder د ESP32 IoT زده کړې کټ
په دې ټیوټوریل کې به موږ زده کړو چې څنګه د منفي تودوخې ضریب (NTC) ترمیسټر په کارولو سره تودوخه اندازه کړو او د ESP32 مایکروکنټرولر په کارولو سره لوستل د LCD سکرین باندې وښیو. دا پروژه به د NTC ترمیسټر له ESP32 سره نښلول او د LCD په کارولو سره د تودوخې لوستل په دواړو سیلسیس او فارنهایټ کې ښودل شامل وي. دا د ESP32 پلیټ فارم په کارولو سره د تودوخې احساس او نندارې تخنیکونو سره پیل کولو لپاره یوه غوره لار ده.
موږ به د SunFounder د ESP32 پراختیا بورډ څخه ګټه اخلو، کوم چې د جوړ شوي Wi-Fi او Bluetooth سره د ESP32 وړتیاوې لوړوي. دا بورډ په اسانۍ سره د مختلفو سینسرونو او نندارو سره مدغم کیدی شي، چې دا د IoT پروژو لپاره مثالی کوي. NTC ترمیسټر به د خپل مقاومت پر بنسټ د تودوخې لوستل چمتو کړي، کوم چې د تودوخې سره په معکوس ډول توپیر کوي. د تنظیم او کوډ په اړه د نورو روښانتیا لپاره، ډاډ ترلاسه کړئ چې ویډیو وګورئ (په ویډیو کې په 00:00 کې).
هارډویر تشریح شوی
په دې پروژه کې کارول شوي اصلي اجزا کې ESP32 مایکروکنټرولر، یو NTC ترمیسټر، یو ریزسټر، او د LCD نندارې شامل دي. ESP32 د مرکزي پروسس واحد په توګه کار کوي، د ترمیسټر څخه ډاټا اداره کوي او د LCD نندارې کنټرولوي. NTC ترمیسټر د تودوخې سره سم خپل مقاومت بدلوي، چې موږ ته اجازه راکوي چې د ثابت ریزسټر سره د ولټاژ ویشونکي ترتیب پر بنسټ تودوخه محاسبه کړو.
د LCD نندارې به د تودوخې لوستل په دواړو سیلسیس او فارنهایټ کې وښیي. موږ به د LCD سره د اړیکو لپاره د I2C پروتوکول وکاروو، کوم چې د اړتیا وړ پنونو شمیر کمولو سره تارونه ساده کوي. NTC ترمیسټر یو ځانګړتیا لري چې د هغې مقاومت د تودوخې په زیاتوالي سره کمیږي، کوم چې زموږ د محاسبې لپاره خورا مهم دی.
ډیټاشیټ تفصیلات
| جوړونکی | SunFounder |
|---|---|
| د پرزې شمېره | NTC ترمیسټر |
| نومیالی مقاومت | 10 kΩ |
| بیټا ارزښت | 3950 K |
| د تودوخې حد | -40°C تر 125°C |
| بسته | محوری |
- ډاډ ترلاسه کړئ چې ترمیسټر د تمه شوي تودوخې حد لپاره درجه بندي شوی دی.
- د ولټاژ ویشونکي لپاره د 10 kΩ ریزسټر وکاروئ؛ په بل صورت کې لوستل به ناسم وي.
- د لنډ سرکټ څخه مخنیوي لپاره اړیکې تایید کړئ.
- د LCD د I2C پته سمه وساتئ (معمولا 0x27).
- د ESP32 او پردیو لپاره د بریښنا مناسبې کچې وکاروئ.
- وګورئ چې د سیریل مانیټر باؤډ ریټ د کوډ تنظیماتو سره سمون لري (115200).
د تارونو لارښوونې


د اجزاو د تارونو لپاره، د NTC ترمیسټر له ESP32 سره په نښلولو پیل وکړئ. ترمیسټر هیڅ قطبيت نلري، نو دا په هر لوري کې وصل کیدی شي. د ترمیسټر یو لیډ د ESP32 په ځمکني (GND) پن سره وصل کړئ. بل لیډ د 10 kΩ ریزسټر سره وصل کیږي، کوم چې بیا د 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 سره د NTC Arduino کوډ تشریح شوی
- 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
Resources & references
-
DocumentationESP32 Tutorial 25/55- SunFounder doc page for NTS thermometerdocs.sunfounder.com
-
DocumentationLearn about NTC Thermistordocs.sunfounder.com
Files📁
No files available.