Пребарување код

ESP32 Упатство 25/55 - Мерење температура користејќи NTC и LCD | SunFounder's ESP32 IoT Learning комплет

ESP32 Упатство 25/55 - Мерење температура користејќи NTC и LCD | SunFounder's ESP32 IoT Learning комплет

Во ова упатство, ќе научиме како да мериме температура користејќи негативен температурен коефициент (NTC) термистор и да ги прикажуваме отчитувањата на LCD екран користејќи го ESP32 микроконтролерот. Проектот ќе вклучува поврзување на NTC термистор со ESP32 и користење на LCD за прикажување на температурните отчитувања и во Целзиусови и во Фаренхајтови степени. Ова е одличен начин да започнете со техниките за мерење температура и прикажување користејќи ја ESP32 платформата.

ESP32-25-NTC_thermometeLCD

Ќе ја користиме SunFounder ESP32 продолжната плоча, која ги подобрува можностите на ESP32 со вградени Wi-Fi и Bluetooth. Оваа плоча може лесно да се интегрира со различни сензори и дисплеи, што ја прави идеална за IoT проекти. NTC термисторот ќе обезбеди температурни отчитувања врз основа на неговиот отпор, кој варира обратнопропорционално со температурата. За дополнително појаснување на поставувањето и кодот, задолжително погледнете го видеото (во видеото на 00:00).

Објаснување на хардверот

Главните компоненти користени во овој проект вклучуваат ESP32 микроконтролер, NTC термистор, отпорник и LCD дисплеј. ESP32 служи како централна процесорска единица, обработувајќи ги податоците од термисторот и контролирајќи го LCD дисплејот. NTC термисторот го менува својот отпор според температурата, што ни овозможува да ја пресметаме температурата врз основа на конфигурацијата на делител на напон со фиксен отпорник.

NTC_thermistor

LCD дисплејот ќе ги прикажува температурните отчитувања и во Целзиусови и во Фаренхајтови степени. Ќе го користиме I2C протоколот за комуникација со LCD, што го поедноставува поврзувањето со намалување на бројот на потребни пинови. NTC термисторот има карактеристика каде неговиот отпор се намалува со зголемување на температурата, што е клучно за нашите пресметки.

Детали од техничката документација

Производител SunFounder
Број на дел NTC термистор
Номинален отпор 10 kΩ
Бета вредност 3950 K
Температурен опсег -40°C до 125°C
Пакет Аксијален

 

  • Осигурете се дека термисторот е оценет за очекуваниот температурен опсег.
  • Користете отпорник од 10 kΩ за делителот на напон; во спротивно, отчитувањата ќе бидат неточни.
  • Проверете ги врските за да избегнете кратки споеви.
  • Чувајте ја I2C адресата на LCD точна (обично 0x27).
  • Користете соодветни нивоа на напојување за ESP32 и периферните уреди.
  • Проверете дали брзината на серискиот монитор одговара на поставките во кодот (115200).
NTC_formula

Инструкции за поврзување

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

За да ги поврзете компонентите, започнете со поврзување на NTC термисторот со ESP32. Термисторот нема поларитет, па може да се поврзе во било која насока. Поврзете еден извод од термисторот со пин за заземјување (GND) на ESP32. Другиот извод се поврзува со отпорник од 10 kΩ, кој потоа се поврзува со 3.3V пин на ESP32. Спојот помеѓу термисторот и отпорникот ќе се поврзе со пин 35 на ESP32, кој ќе го чита напонот за пресметки на температурата.

За LCD, поврзете го пинот за заземјување (обично вториот пин од врвот) со GND на ESP32. Потоа, поврзете го VCC (често првиот пин) со 5V пин на ESP32. SDA пинот (обично третиот пин) треба да се поврзе со пин 21 на ESP32, а 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");

Овој код ефективно го ажурира LCD секои 300 милисекунди со најновите температурни отчитувања, овозможувајќи следење во реално време.

Демонстрација / Што да очекувате

По извршувањето на кодот и завршувањето на жичањето, треба да ги видите отчитувањата на температурата прикажани на LCD екранот и во Целзиусови и во Фаренхајтови степени. Ако го држите термисторот во рака, треба да забележите дека температурата се зголемува како што отпорот се намалува. Бидете внимателни со обратен поларитет и осигурете се дека врските се сигурни, бидејќи неправилното жичање може да доведе до неточни отчитувања (во видеото на 04:50).

Временски ознаки на видеото

  • 00:00 Почеток
  • 1:50 вовед во проектот
  • 5:32 објаснето жичањето
  • 8:20 објаснет Arduino NTC кодот за ESP32
  • 13:38 Избор на ESP32 плоча и COM порт во Arduino IDE
  • 15:20 Демонстрација на мерење температура со NTC
  • 17:34 NTC температура на LCD1602 со ESP32
  • 18:42 објаснет Arduino кодот со LCD
  • 21:15 Демонстрација на температура на LCD
  • 23:13 Зелен LCD или син LCD1601?

Слики

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
Јазик: 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
Јазик: 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
}

Ресурси и референци

Датотеки📁

Нема достапни датотеки.