Search Code

د ESP32 ټیوټوریل 25/55 - د NTC او LCD په کارولو سره د تودوخې اندازه کول | د SunFounder د ESP32 IoT زده کړې کټ

د ESP32 ټیوټوریل 25/55 - د NTC او LCD په کارولو سره د تودوخې اندازه کول | د SunFounder د ESP32 IoT زده کړې کټ

په دې ټیوټوریل کې به موږ زده کړو چې څنګه د منفي تودوخې ضریب (NTC) ترمیسټر په کارولو سره تودوخه اندازه کړو او د ESP32 مایکروکنټرولر په کارولو سره لوستل د LCD سکرین باندې وښیو. دا پروژه به د NTC ترمیسټر له ESP32 سره نښلول او د LCD په کارولو سره د تودوخې لوستل په دواړو سیلسیس او فارنهایټ کې ښودل شامل وي. دا د ESP32 پلیټ فارم په کارولو سره د تودوخې احساس او نندارې تخنیکونو سره پیل کولو لپاره یوه غوره لار ده.

ESP32-25-NTC_thermometeLCD

موږ به د SunFounder د ESP32 پراختیا بورډ څخه ګټه اخلو، کوم چې د جوړ شوي Wi-Fi او Bluetooth سره د ESP32 وړتیاوې لوړوي. دا بورډ په اسانۍ سره د مختلفو سینسرونو او نندارو سره مدغم کیدی شي، چې دا د IoT پروژو لپاره مثالی کوي. NTC ترمیسټر به د خپل مقاومت پر بنسټ د تودوخې لوستل چمتو کړي، کوم چې د تودوخې سره په معکوس ډول توپیر کوي. د تنظیم او کوډ په اړه د نورو روښانتیا لپاره، ډاډ ترلاسه کړئ چې ویډیو وګورئ (په ویډیو کې په 00:00 کې).

هارډویر تشریح شوی

په دې پروژه کې کارول شوي اصلي اجزا کې ESP32 مایکروکنټرولر، یو NTC ترمیسټر، یو ریزسټر، او د LCD نندارې شامل دي. ESP32 د مرکزي پروسس واحد په توګه کار کوي، د ترمیسټر څخه ډاټا اداره کوي او د LCD نندارې کنټرولوي. NTC ترمیسټر د تودوخې سره سم خپل مقاومت بدلوي، چې موږ ته اجازه راکوي چې د ثابت ریزسټر سره د ولټاژ ویشونکي ترتیب پر بنسټ تودوخه محاسبه کړو.

NTC_thermistor

د LCD نندارې به د تودوخې لوستل په دواړو سیلسیس او فارنهایټ کې وښیي. موږ به د LCD سره د اړیکو لپاره د I2C پروتوکول وکاروو، کوم چې د اړتیا وړ پنونو شمیر کمولو سره تارونه ساده کوي. NTC ترمیسټر یو ځانګړتیا لري چې د هغې مقاومت د تودوخې په زیاتوالي سره کمیږي، کوم چې زموږ د محاسبې لپاره خورا مهم دی.

ډیټاشیټ تفصیلات

جوړونکی SunFounder
د پرزې شمېره NTC ترمیسټر
نومیالی مقاومت 10 kΩ
بیټا ارزښت 3950 K
د تودوخې حد -40°C تر 125°C
بسته محوری

 

  • ډاډ ترلاسه کړئ چې ترمیسټر د تمه شوي تودوخې حد لپاره درجه بندي شوی دی.
  • د ولټاژ ویشونکي لپاره د 10 kΩ ریزسټر وکاروئ؛ په بل صورت کې لوستل به ناسم وي.
  • د لنډ سرکټ څخه مخنیوي لپاره اړیکې تایید کړئ.
  • د LCD د I2C پته سمه وساتئ (معمولا 0x27).
  • د ESP32 او پردیو لپاره د بریښنا مناسبې کچې وکاروئ.
  • وګورئ چې د سیریل مانیټر باؤډ ریټ د کوډ تنظیماتو سره سمون لري (115200).
NTC_formula

د تارونو لارښوونې

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

د اجزاو د تارونو لپاره، د 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؟

Images

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
NTC_thermistor
NTC_thermistor
ESP32-25-NTC_thermometer_schematic
ESP32-25-NTC_thermometer_schematic
ESP32-25-NTC_thermometer_wiring
ESP32-25-NTC_thermometer_wiring
NTC_formula
NTC_formula
ESP32-25-NTC_thermometeLCD
ESP32-25-NTC_thermometeLCD
824-ESP32 Tutorial 25/55- SunFounder doc page NTC Thermometer
Language: C++
// 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
}
825-ESP32 Tutorial 25/55- Arduino code for LCD with NTC thermistor
Language: C++
/*
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
}

Resources & references

Files📁

No files available.