ESP32 ٹیوٹوریل 25/55 - NTC اور LCD کا استعمال کرتے ہوئے درجہ حرارت کی پیمائش | سن فاؤنڈر کا ESP32 IoT لرننگ کٹ
اس ٹیوٹوریل میں، ہم سیکھیں گے کہ منفی درجہ حرارت گتانک (NTC) تھرمسٹر کا استعمال کرتے ہوئے درجہ حرارت کی پیمائش کیسے کی جائے اور ESP32 مائیکروکنٹرولر کا استعمال کرتے ہوئے ریڈنگز کو LCD اسکرین پر کیسے دکھایا جائے۔ اس پروجیکٹ میں NTC تھرمسٹر کو ESP32 سے جوڑنا اور LCD کا استعمال کرتے ہوئے درجہ حرارت کی ریڈنگز سیلسیس اور فارن ہائیٹ دونوں میں دکھانا شامل ہوگا۔ ESP32 پلیٹ فارم کا استعمال کرتے ہوئے درجہ حرارت سینسنگ اور ڈسپلے تکنیکوں کے ساتھ شروع کرنے کا یہ ایک بہترین طریقہ ہے۔
ہم SunFounder کے ESP32 ایکسٹینشن بورڈ کا استعمال کریں گے، جو بلٹ ان Wi-Fi اور بلوٹوتھ کے ساتھ 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");
یہ کوڈ ہر 300 ملی سیکنڈ میں تازہ ترین درجہ حرارت کی ریڈنگز کے ساتھ LCD کو مؤثر طریقے سے اپ ڈیٹ کرتا ہے، جس سے ریئل ٹائم مانیٹرنگ ممکن ہوتی ہے۔
ڈیمونسٹریشن / کیا توقع کریں
کوڈ چلانے اور وائرنگ مکمل کرنے کے بعد، آپ کو 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
فائلیں📁
کوئی فائلیں دستیاب نہیں ہیں۔