Search Code

Tutorial ESP32 25/55 - Măsurarea temperaturii folosind NTC și LCD | Kitul de învățare IoT ESP32 de la SunFounder

Tutorial ESP32 25/55 - Măsurarea temperaturii folosind NTC și LCD | Kitul de învățare IoT ESP32 de la SunFounder

În acest tutorial, vom învăța cum să măsurăm temperatura folosind un termistor cu coeficient negativ de temperatură (NTC) și să afișăm citirile pe un ecran LCD folosind microcontrolerul ESP32. Proiectul va implica conectarea unui termistor NTC la ESP32 și utilizarea unui LCD pentru a afișa citirile de temperatură atât în Celsius, cât și în Fahrenheit. Aceasta este o modalitate excelentă de a începe cu tehnicile de detectare a temperaturii și afișare folosind platforma ESP32.

ESP32-25-NTC_thermometeLCD

Vom folosi placa de extensie ESP32 de la SunFounder, care îmbunătățește capacitățile ESP32 cu Wi-Fi și Bluetooth integrate. Această placă poate fi integrată ușor cu diverse senzori și afișaje, fiind ideală pentru proiecte IoT. Termistorul NTC va oferi citiri de temperatură pe baza rezistenței sale, care variază invers proporțional cu temperatura. Pentru clarificări suplimentare privind configurarea și codul, asigurați-vă că urmăriți videoclipul (în videoclip la 00:00).

Hardware Explicat

Principalele componente utilizate în acest proiect includ microcontrolerul ESP32, un termistor NTC, un rezistor și un afișaj LCD. ESP32 servește ca unitate centrală de procesare, gestionând datele de la termistor și controlând afișajul LCD. Termistorul NTC își schimbă rezistența în funcție de temperatură, permițându-ne să calculăm temperatura pe baza configurației divizorului de tensiune cu un rezistor fix.

NTC_thermistor

Afișajul LCD va arăta citirile de temperatură atât în Celsius, cât și în Fahrenheit. Vom folosi protocolul I2C pentru a comunica cu LCD-ul, ceea ce simplifică cablarea prin reducerea numărului de pini necesari. Termistorul NTC are o caracteristică prin care rezistența sa scade odată cu creșterea temperaturii, ceea ce este crucial pentru calculele noastre.

Detalii din Fișa Tehnică

Producător SunFounder
Număr de piesă Termistor NTC
Rezistență Nominală 10 kΩ
Valoare Beta 3950 K
Interval de Temperatură -40°C până la 125°C
Pachet Axial

 

  • Asigurați-vă că termistorul este evaluat pentru intervalul de temperatură așteptat.
  • Folosiți un rezistor de 10 kΩ pentru divizorul de tensiune; altfel, citirile vor fi inexacte.
  • Verificați conexiunile pentru a evita scurtcircuitele.
  • Păstrați adresa I2C a LCD-ului corectă (de obicei 0x27).
  • Folosiți niveluri adecvate de alimentare pentru ESP32 și periferice.
  • Verificați ca viteza de transmisie a monitorului serial să corespundă setărilor din cod (115200).
NTC_formula

Instrucțiuni de Cablare

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Pentru a cabla componentele, începeți prin conectarea termistorului NTC la ESP32. Termistorul nu are polaritate, deci poate fi conectat în orice direcție. Conectați un terminal al termistorului la pinul de masă (GND) de pe ESP32. Celălalt terminal se conectează la un rezistor de 10 kΩ, care apoi se conectează la pinul de 3.3V de pe ESP32. Joncțiunea dintre termistor și rezistor se va conecta la pinul 35 de pe ESP32, care va citi tensiunea pentru calculele de temperatură.

Pentru LCD, conectați pinul de masă (de obicei al doilea pin de sus) la GND de pe ESP32. Apoi, conectați VCC (adesea primul pin) la pinul de 5V de pe ESP32. Pinul SDA (de obicei al treilea pin) ar trebui să se conecteze la pinul 21 de pe ESP32, iar pinul SCL (adesea al patrulea pin) ar trebui să se conecteze la pinul 22. Asigurați-vă că toate conexiunile sunt sigure și verificați de două ori numerele pinilor pentru a evita orice greșeli.

Exemple de Cod & Explicație

Codul începe prin definirea constantelor pentru termistor, inclusiv numărul pinului, tensiunea de referință și valorile rezistenței. Funcția de configurare inițializează comunicarea serială și setează pinul termistorului ca intrare.

const int thermistorPin = 35; // Pin conectat la termistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // celălalt rezistor

Bucla principală citește valoarea analogică de pe pinul termistorului, calculează rezistența și apoi calculează temperatura atât în Celsius, cât și în Fahrenheit folosind ecuația parametrului Beta. Valorile calculate sunt afișate pe monitorul serial.

int adcValue = analogRead(thermistorPin); // Citește valoarea ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculează tensiunea
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculează rezistența termistorului

În final, temperatura este afișată pe LCD. Funcția lcd.print() este folosită pentru a afișa valorile temperaturii, împreună cu simbolul gradului.

lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Simbolul gradului
lcd.print("C");

Acest cod actualizează efectiv LCD-ul la fiecare 300 de milisecunde cu cele mai recente citiri de temperatură, permițând monitorizarea în timp real.

Demonstrație / Ce să Vă Așteptați

După rularea codului și finalizarea cablajului, ar trebui să vedeți citirile de temperatură afișate pe LCD atât în grade Celsius, cât și în Fahrenheit. Dacă țineți termistorul în mână, ar trebui să observați creșterea temperaturii pe măsură ce rezistența scade. Fiți atenți la polaritatea inversată și asigurați-vă că conexiunile sunt sigure, deoarece cablarea necorespunzătoare poate duce la citiri inexacte (în video la 04:50).

Marcaje temporale video

  • 00:00 Început
  • 1:50 introducere în proiect
  • 5:32 cablarea explicată
  • 8:20 codul Arduino NTC pentru ESP32 explicat
  • 13:38 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
  • 15:20 Demonstrație măsurare temperatură NTC
  • 17:34 Temperatura NTC pe LCD1602 cu ESP32
  • 18:42 Codul Arduino NTC cu LCD explicat
  • 21:15 Demonstrație temperatură pe LCD
  • 23:13 LCD verde sau LCD albastru 1601?

Imagini

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
Limba: 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
Limba: 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
}

Resurse și referințe

Fișiere📁

Nu sunt disponibile fișiere.