Èkó ESP32 25/55 - Wíwọn ìwọ̀n-otútù pẹ̀lú NTC & LCD | Àkójọpọ̀ Ẹ̀kọ́ IoT ESP32 ti SunFounder
Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe lè wọn ìwọ̀n-otútù nípa lílo thermistor kan tí ó ní Olùsọdipúpọ̀ Ìwọ̀n-otútù Odì (NTC) àti láti fi àwọn ìwọ̀n-otútù náà hàn lórí iboju LCD nípa lílo microcontroller ESP32. Iṣẹ́-ọwọ́ yìí yóò kan nípa sísopọ̀ thermistor NTC kan sí ESP32 àti lílo LCD láti fi àwọn ìwọ̀n-otútù hàn ní àwọn ìwọ̀n Celsius àti Fahrenheit. Èyí jẹ́ ọ̀nà tí ó dára láti bẹ̀rẹ̀ pẹ̀lú ìmọ̀-ẹ̀rọ wíwọn otútù àti àwọn ìlànà ìfihàn nípa lílo pẹ̀pẹ̀lù ESP32.
A óò máa lo bọ́ọ̀dù ìfààgùn ESP32 ti SunFounder, èyí tí ó mú kí agbára ESP32 pọ̀ sí i pẹ̀lú Wi-Fi àti Bluetooth tí a kọ́ sínú rẹ̀. Bọ́ọ̀dù yìí ni a lè sopọ̀ rọrùn pẹ̀lú ọ̀pọ̀lọpọ̀ àwọn sẹ́nsọ̀ àti àwọn iboju ìfihàn, tí ó sì mú kí ó dára fún àwọn iṣẹ́-ọwọ́ IoT. Thermistor NTC yóò pèsè àwọn ìwọ̀n-otútù nípa dída lórí ìdènà rẹ̀, èyí tí ó yàtọ̀ ní ìbámu pẹ̀lú otútù. Fún àlàyé síwájú sí i lórí ìtòlẹ́sẹẹsẹ àti kóòdù, rí i pé o wo fídíò náà (nínú fídíò ní 00:00).
Àlàyé Ohun-èlò
Àwọn ohun-èlò pàtàkì tí a lò nínú iṣẹ́-ọwọ́ yìí ní ESP32 microcontroller, thermistor NTC kan, resistor kan, àti iboju LCD kan. ESP32 ṣiṣẹ́ gẹ́gẹ́ bí ẹ̀yà ìṣàkóso àárín, tí ó ń ṣàkóso àwọn data láti ọ̀dọ̀ thermistor àti láti ṣàkóso iboju LCD. Thermistor NTC yí ìdènà rẹ̀ padà ní ìbámu pẹ̀lú otútù, tí ó ń jẹ́ kí a lè ṣe ìṣirò otútù náà nípa dída lórí ìtòlẹ́sẹẹsẹ pípín fọ́nrán pẹ̀lú resistor tí ó dúró ṣinṣin.
Iboju LCD yóò fi àwọn ìwọ̀n-otútù hàn ní àwọn ìwọ̀n Celsius àti Fahrenheit. A óò lo ìlànà I2C láti bá LCD ṣe ìbánisọ̀rọ̀, èyí tí ó rọrùn fún ìsopọ̀ nípa dídi àwọn pin tí a nílò kù. Thermistor NTC ní ànímọ́ kan níbi tí ìdènà rẹ̀ ti ń dín kù nígbà tí otútù bá pọ̀ sí i, èyí tí ó ṣe pàtàkì fún àwọn ìṣirò wa.
Àwọn Àlàyé Datasheet
| Olùṣe | SunFounder |
|---|---|
| Nọ́mbà apá | NTC Thermistor |
| Ìdènà Ìpèdé | 10 kΩ |
| Iye Beta | 3950 K |
| Ìwọ̀n Otútù | -40°C sí 125°C |
| Àkójọpọ̀ | Axial |
- Rí i pé thermistor náà ní ìwọ̀n tí ó tọ́ fún ìwọ̀n-otútù tí a retí.
- Lo resistor 10 kΩ fún pípín fọ́nrán; bí bẹ́ẹ̀ kọ́, àwọn ìwọ̀n yóò jẹ́ aláìpé.
- Rí i pé àwọn ìsopọ̀ tòótọ́ láti yẹra fún àwọn ìsopọ̀ kúkúrú.
- Rí i pé àdírẹ́sì I2C ti LCD tọ́ (ní gbogbogbò 0x27).
- Lo àwọn ipele agbára tí ó tọ́ fún ESP32 àti àwọn ohun-èlò ẹ̀yà.
- Ṣàgbéwò pé ìwọ̀n baud ti monito onítele tó bá àwọn ètò kóòdù mu (115200).
Àwọn Ìtọ́ni Ìsopọ̀


Láti sopọ̀ àwọn ohun-èlò náà, bẹ̀rẹ̀ nípa sísopọ̀ thermistor NTC sí ESP32. Thermistor kò ní polarity, nítorí náà a lè sopọ̀ rẹ̀ ní ọ̀nà èyíkéyìí. Sopọ̀ ọ̀kan nínú àwọn ẹsẹ̀ thermistor sí pin ilẹ̀ (GND) lórí ESP32. Ẹsẹ̀ kejì sopọ̀ sí resistor 10 kΩ, èyí tí ó wá sopọ̀ sí pin 3.3V lórí ESP32. Ibùjọpọ̀ láàárín thermistor àti resistor yóò sopọ̀ sí pin 35 lórí ESP32, èyí tí yóò ka fọ́nrán náà fún àwọn ìṣirò otútù.
Fún LCD, sopọ̀ pin ilẹ̀ (ní gbogbogbò pin kejì láti òkè) sí GND lórí ESP32. Lẹ́yìn náà, sopọ̀ VCC (ní gbogbogbò pin kìíní) sí pin 5V lórí ESP32. Pin SDA (ní gbogbogbò pin kẹta) yẹ kí ó sopọ̀ sí pin 21 lórí ESP32, àti pin SCL (ní gbogbogbò pin kẹrin) yẹ kí ó sopọ̀ sí pin 22. Rí i pé gbogbo àwọn ìsopọ̀ ṣe dáradára àti ṣàgbéwò àwọn nọ́mbà pin lẹ́ẹ̀mejì láti yẹra fún àwọn àṣìṣe.
Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà
Kóòdù náà bẹ̀rẹ̀ nípa ṣíṣàlàyé àwọn ìwọ̀n tí ó dúró ṣinṣin fún thermistor, pẹ̀lú nọ́mbà pin, fọ́nrán ìtọ́kasí, àti àwọn iye ìdènà. Iṣẹ́ ìtòlẹ́sẹẹsẹ bẹ̀rẹ̀ nípa ṣíṣe ìbánisọ̀rọ̀ onítele àti ṣíṣètò pin thermistor gẹ́gẹ́ bí ìfàgbáwọlé.
const int thermistorPin = 35; // Pin tí a sopọ̀ sí thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // resistor 'mìíràn' náà
Lúùpù àkọ́kọ́ ka iye analog láti pin thermistor, ṣe ìṣirò ìdènà, àti lẹ́yìn náà ṣe ìṣirò otútù ní àwọn ìwọ̀n Celsius àti Fahrenheit nípa lílo ìdogba paramita Beta. Àwọn iye tí a ṣe ìṣirò náà ni a tẹ̀ jáde sí monito onítele.
int adcValue = analogRead(thermistorPin); // Ka iye ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Ṣe ìṣirò fọ́nrán
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Ṣe ìṣirò ìdènà thermistor
Níkẹyìn, a fi otútù náà hàn lórí LCD. A lo iṣẹ́ lcd.print() láti fi àwọn iye otútù hàn, pẹ̀lú àmì ìwọ̀n-otútù.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Àmì ìwọ̀n-otútù
lcd.print("C");
Kóòdù yìí mú kí LCD ṣe àtúnṣe gbogbo 300 milliseconds pẹ̀lú àwọn ìwọ̀n-otútù tuntun, tí ó ń jẹ́ kí a lè ṣe àkíyèsí ní àkókò gidi.
Ìfihàn / Ohun tí a retí
Nigba ti o ba ti ṣiṣẹ koodu naa ti o si pari awọn asopọ, o yẹ ki o ri awọn iwọn otutu ti o han lori LCD ni mejeeji Celsius ati Fahrenheit. Ti o ba di thermistor mu ninu ọwọ rẹ, o yẹ ki o ṣe akiyesi otutu ti n pọ si bi resistance ti n dinku. Ṣọra fun polarity ti o yipada ki o si rii daju pe awọn asopọ ti ni aabo, nitori asopọ ti ko tọ le fa awọn iwọn ti ko pe (ninu fidio ni 04:50).
Awọn Akoko Fidio
- 00:00 Ibẹrẹ
- 1:50 ifihan si iṣẹ akanṣe naa
- 5:32 asopọ ti ṣe alaye
- 8:20 Koodu Arduino NTC fun ESP32 ti ṣe alaye
- 13:38 Yiyan bọọdi ESP32 ati ibudo COM ni Arduino IDE
- 15:20 Ifihan wiwọn otutu NTC
- 17:34 Otutu NTC lori LCD1602 pẹlu ESP32
- 18:42 Koodu Arduino NTC pẹlu LCD ti ṣe alaye
- 21:15 Ifihan Otutu lori LCD
- 23:13 LCD alawọ ewe tabi LCD1601 buluu?
// 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
Orisun & itọkasi
-
Iwe-ẹriESP32 Tutorial 25/55- SunFounder doc page for NTS thermometerdocs.sunfounder.com
-
Iwe-ẹriLearn about NTC Thermistordocs.sunfounder.com
Fáìlìs📁
Ko si awọn faili ti o wa.