Search Code

ESP32 Tutoriaal 25/55 - Temperatuur meet met NTC & LCD | SunFounder se ESP32 IoT-leerkit

ESP32 Tutoriaal 25/55 - Temperatuur meet met NTC & LCD | SunFounder se ESP32 IoT-leerkit

In hierdie tutoriaal gaan ons leer hoe om temperatuur te meet met behulp van 'n Negatiewe Temperatuurkoëffisiënt (NTC) termistor en die lesings op 'n LCD-skerm te vertoon met behulp van die ESP32-mikrobeheerder. Die projek sal behels dat 'n NTC-termistor aan die ESP32 gekoppel word en 'n LCD gebruik word om temperatuurlesings in beide Celsius en Fahrenheit te wys. Dit is 'n uitstekende manier om te begin met temperatuursensing en vertoontegnieke met behulp van die ESP32-platform.

ESP32-25-NTC_thermometeLCD

Ons gaan SunFounder se ESP32-uitbreidingsbord gebruik, wat die vermoëns van die ESP32 met ingeboude Wi-Fi en Bluetooth verbeter. Hierdie bord kan maklik met verskeie sensors en skerms geïntegreer word, wat dit ideaal maak vir IoT-projekte. Die NTC-termistor sal temperatuurlesings verskaf op grond van sy weerstand, wat omgekeerd met temperatuur wissel. Vir verdere verduideliking oor die opstelling en kode, maak seker om die video (in video by 00:00) te kyk.

Hardeware Verduidelik

Die hoofkomponente wat in hierdie projek gebruik word, sluit die ESP32-mikrobeheerder, 'n NTC-termistor, 'n resistor en 'n LCD-skerm in. Die ESP32 dien as die sentrale verwerkingseenheid, wat data van die termistor hanteer en die LCD-skerm beheer. Die NTC-termistor verander sy weerstand volgens temperatuur, wat ons in staat stel om die temperatuur te bereken op grond van die spanningsverdeler-konfigurasie met 'n vaste resistor.

NTC_thermistor

Die LCD-skerm sal die temperatuurlesings in beide Celsius en Fahrenheit wys. Ons sal die I2C-protokol gebruik om met die LCD te kommunikeer, wat bedrading vereenvoudig deur die aantal penne wat benodig word, te verminder. Die NTC-termistor het 'n eienskap waar sy weerstand afneem met 'n toename in temperatuur, wat noodsaaklik is vir ons berekeninge.

Datablad Besonderhede

Vervaardiger SunFounder
Deelnommer NTC Termistor
Nominale Weerstand 10 kΩ
Beta-waarde 3950 K
Temperatuurreeks -40°C tot 125°C
Pakket Aksiaal

 

  • Maak seker die termistor is gegradeer vir die verwagte temperatuurreeks.
  • Gebruik 'n 10 kΩ-resistor vir die spanningsverdeler; anders sal lesings onakkuraat wees.
  • Verifieer verbindings om kortsluitings te vermy.
  • Hou die I2C-adres van die LCD korrek (gewoonlik 0x27).
  • Gebruik toepaslike kragtoevoervlakke vir die ESP32 en randapparatuur.
  • Kontroleer dat die serie-monitor baud-tempo met die kode-instellings ooreenstem (115200).
NTC_formula

Bedradingsinstruksies

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Om die komponente te bedraad, begin deur die NTC-termistor aan die ESP32 te koppel. Die termistor het geen polariteit nie, dus kan dit in enige rigting gekoppel word. Koppel een draad van die termistor aan die grond (GND)-pen op die ESP32. Die ander draad koppel aan 'n 10 kΩ-resistor, wat dan aan die 3.3V-pen op die ESP32 koppel. Die aansluiting tussen die termistor en die resistor sal aan pen 35 op die ESP32 koppel, wat die spanning vir temperatuurberekeninge sal lees.

Vir die LCD, koppel die grondpen (gewoonlik die tweede pen van bo) aan GND op die ESP32. Koppel dan die VCC (dikwels die eerste pen) aan die 5V-pen op die ESP32. Die SDA-pen (gewoonlik die derde pen) moet aan pen 21 op die ESP32 koppel, en die SCL-pen (dikwels die vierde pen) moet aan pen 22 koppel. Maak seker alle verbindings is veilig en kontroleer die pennommers dubbel om enige foute te vermy.

Kode Voorbeelde & Deurloop

Die kode begin deur die konstantes vir die termistor te definieer, insluitend die pennommer, verwysingspanning en weerstandswaardes. Die opstellingsfunksie initialiseer die serie-kommunikasie en stel die termistorpen as 'n inset.

const int thermistorPin = 35; // Pen gekoppel aan die termistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // die 'ander' resistor

Die hoof-lus lees die analoogwaarde van die termistorpen, bereken die weerstand, en bereken dan die temperatuur in beide Celsius en Fahrenheit met behulp van die Beta-parametervergelyking. Die berekende waardes word na die serie-monitor gedruk.

int adcValue = analogRead(thermistorPin); // Lees ADC-waarde
float voltage = (adcValue * referenceVoltage) / 4095.0; // Bereken spanning
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Bereken termistorweerstand

Laastens word die temperatuur op die LCD vertoon. Die lcd.print()-funksie word gebruik om die temperatuurwaardes te wys, saam met die graadsimbool.

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

Hierdie kode werk die LCD elke 300 millisekondes met die nuutste temperatuurlesings by, wat intydse monitering moontlik maak.

Demonstrasie / Wat om te Verwacht

Sodra jy die kode laat loop en die bedrading voltooi het, behoort jy die temperatuurlesings op die LCD in beide Celsius en Fahrenheit te sien. As jy die termistor in jou hand hou, behoort jy te sien dat die temperatuur toeneem soos die weerstand afneem. Wees versigtig vir omgekeerde polariteit en maak seker dat die verbindings stewig is, aangesien verkeerde bedrading tot onakkurate lesings kan lei (in video by 04:50).

Video Tydstempels

  • 00:00 Begin
  • 1:50 Inleiding tot die projek
  • 5:32 Bedrading verduidelik
  • 8:20 Arduino NTC-kode vir ESP32 verduidelik
  • 13:38 Kies ESP32-bord en COM-poort in Arduino IDE
  • 15:20 NTC-temperatuurmeting demonstrasie
  • 17:34 NTC-temperatuur op LCD1602 met ESP32
  • 18:42 NTC Arduino-kode met LCD verduidelik
  • 21:15 Demonstrasie van temperatuur op LCD
  • 23:13 Groen LCD of Blou LCD1601?

Beelde

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

Hulpbronne en verwysings

Lêers📁

Geen lêers beskikbaar.