Koyarwar ESP32 25/55 - Auna Zazzabi ta amfani da NTC & LCD | Kayan Koyon IoT na SunFounder ESP32
A cikin wannan koyaswar, za mu koyi yadda ake auna zafin jiki ta amfani da Negative Temperature Coefficient (NTC) thermistor kuma mu nuna karatun akan allon LCD ta amfani da microcontroller na ESP32. Aikin zai ƙunshi haɗa NTC thermistor zuwa ESP32 da kuma amfani da LCD don nuna karatun zafin jiki a duka Celsius da Fahrenheit. Wannan hanya ce mai kyau don fara auna zafin jiki da fasahohin nuni ta amfani da dandalin ESP32.
Za mu yi amfani da allon haɓaka na SunFounder ESP32, wanda ke haɓaka damar ESP32 tare da Wi-Fi da Bluetooth da aka gina a ciki. Wannan allon za a iya haɗa shi cikin sauƙi tare da na'urori masu auna sigina da nunin fuska daban-daban, yana sa ya dace da ayyukan IoT. NTC thermistor zai ba da karatun zafin jiki bisa juriyarsa, wanda ke canzawa sabanin zafin jiki. Don ƙarin bayani kan saitin da lambar, tabbatar da duba bidiyon (a cikin bidiyo a 00:00).
Kayan Aiki Da Aka Bayyana
Babban kayan aikin da aka yi amfani da su a wannan aikin sun haɗa da microcontroller na ESP32, NTC thermistor, resistor, da allon LCD. ESP32 yana aiki a matsayin sashin sarrafawa na tsakiya, yana sarrafa bayanai daga thermistor da sarrafa allon LCD. NTC thermistor yana canza juriyarsa bisa ga zafin jiki, yana ba mu damar lissafin zafin jiki bisa ga tsarin raba wutar lantarki tare da resistor mai tsayayye.
Allon LCD zai nuna karatun zafin jiki a duka Celsius da Fahrenheit. Za mu yi amfani da ka'idar I2C don sadarwa tare da LCD, wanda ke sauƙaƙa wayoyi ta hanyar rage yawan fil ɗin da ake buƙata. NTC thermistor yana da halayyar inda juriyarsa ke raguwa tare da ƙaruwar zafin jiki, wanda ke da mahimmanci ga lissafinmu.
Bayanan Datasheet
| Mai ƙera | SunFounder |
|---|---|
| Lambar sashi | NTC Thermistor |
| Juriyar Ƙididdiga | 10 kΩ |
| Ƙimar Beta | 3950 K |
| Iyakokin Zafin Jiki | -40°C zuwa 125°C |
| Kunshin | Axial |
- Tabbatar da cewa thermistor ya dace da iyakokin zafin jiki da ake tsammani.
- Yi amfani da resistor na 10 kΩ don raba wutar lantarki; in ba haka ba, karatun ba zai zama daidai ba.
- Tabbatar da haɗin kai don guje wa gajeren kewayawa.
- Kiyaye adireshin I2C na LCD daidai (yawanci 0x27).
- Yi amfani da matakan wutar lantarki masu dacewa don ESP32 da na'urorin gefe.
- Duba cewa ƙimar baud na serial monitor ya dace da saitunan lambar (115200).
Umarnin Haɗa Wayoyi


Don haɗa kayan aikin, fara da haɗa NTC thermistor zuwa ESP32. Thermistor ba shi da polarity, don haka ana iya haɗa shi a kowane hanya. Haɗa ƙafar ɗaya na thermistor zuwa filin ƙasa (GND) akan ESP32. Ƙafar ɗayan tana haɗa zuwa resistor na 10 kΩ, wanda sannan ya haɗa zuwa filin 3.3V akan ESP32. Matsakaicin tsakanin thermistor da resistor zai haɗa zuwa fil 35 akan ESP32, wanda zai karanta wutar lantarki don lissafin zafin jiki.
Don LCD, haɗa filin ƙasa (yawanci fil na biyu daga sama) zuwa GND akan ESP32. Sannan, haɗa VCC (sau da yawa fil na farko) zuwa filin 5V akan ESP32. Filin SDA (yawanci fil na uku) ya kamata ya haɗa zuwa fil 21 akan ESP32, kuma filin SCL (sau da yawa fil na huɗu) ya kamata ya haɗa zuwa fil 22. Tabbatar da cewa duk haɗin suna amintattu kuma sake duba lambobin fil don guje wa kowane kuskure.
Misalan Lamba & Bayani
Lambar ta fara da ayyana ma'auni na thermistor, gami da lambar fil, wutar lantarki mai nuni, da ƙimar juriya. Aikin saitin yana fara sadarwar serial kuma yana saita filin thermistor a matsayin shigarwa.
const int thermistorPin = 35; // Fil da aka haɗa zuwa thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // 'sauran' resistor
Babban madauki yana karanta ƙimar analog daga filin thermistor, yana lissafin juriya, sannan yana lissafin zafin jiki a duka Celsius da Fahrenheit ta amfani da lissafin ma'aunin Beta. Ƙimar da aka lissafa ana buga su zuwa serial monitor.
int adcValue = analogRead(thermistorPin); // Karanta ƙimar ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Lissafin wutar lantarki
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Lissafin juriyar thermistor
A ƙarshe, ana nuna zafin jiki akan LCD. Ana amfani da aikin lcd.print() don nuna ƙimar zafin jiki, tare da alamar digiri.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Alamar digiri
lcd.print("C");
Wannan lambar tana sabunta LCD kowane milisekunn 300 tare da sabbin karatun zafin jiki, yana ba da damar sa ido na ainihin lokaci.
Nuni / Abin Da Za Ka Yi Tsammani
Bayan gudanar da lambar da kuma kammala haɗin wayoyi, ya kamata ka ga karatun zafin jiki a kan LCD da aka nuna a duka Celsius da Fahrenheit. Idan ka riƙe thermistor a hannunka, ya kamata ka lura da zafin yana ƙaruwa yayin da juriya ke raguwa. Ka yi taka tsantsan game da jujjuya polarity kuma ka tabbatar da cewa haɗin suna da ƙarfi, domin rashin daidaiton haɗin wayoyi na iya haifar da karatun da ba daidai ba (a cikin bidiyo a 04:50).
Lokutan Bidiyo
- 00:00 Fara
- 1:50 gabatarwa ga aikin
- 5:32 an bayyana haɗin wayoyi
- 8:20 an bayyana lambar Arduino NTC don ESP32
- 13:38 Zaɓin allon ESP32 da tashar COM a cikin Arduino IDE
- 15:20 Nunin auna zafin NTC
- 17:34 Zafin NTC akan LCD1602 tare da ESP32
- 18:42 an bayyana lambar Arduino NTC tare da LCD
- 21:15 Nunin Zafin akan LCD
- 23:13 Koren LCD ko Blue 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
Albarkatun da kuma shafukan da za a duba
-
TakarduESP32 Tutorial 25/55- SunFounder doc page for NTS thermometerdocs.sunfounder.com
-
TakarduLearn about NTC Thermistordocs.sunfounder.com
Fayiloli📁
Babu fayiloli da ake da su.