ESP32 ટ્યુટોરિયલ 25/55 - NTC અને LCD નો ઉપયોગ કરીને તાપમાન માપવું | SunFounder ની 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 સાથે 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.