Search Code

Mafunzo ya ESP32 25/55 - Kupima Joto kwa kutumia NTC & LCD | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Mafunzo ya ESP32 25/55 - Kupima Joto kwa kutumia NTC & LCD | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Katika mafunzo haya, tutajifunza jinsi ya kupima halijoto kwa kutumia thermistor ya Negative Temperature Coefficient (NTC) na kuonyesha usomaji kwenye skrini ya LCD kwa kutumia microcontroller ya ESP32. Mradi huu utahusisha kuunganisha thermistor ya NTC kwenye ESP32 na kutumia LCD kuonyesha usomaji wa halijoto kwa Selsiasi na Fahrenheit. Hii ni njia nzuri ya kuanza na hisia za halijoto na mbinu za kuonyesha kwa kutumia jukwaa la ESP32.

ESP32-25-NTC_thermometeLCD

Tutatumia bodi ya upanuzi ya ESP32 ya SunFounder, ambayo huongeza uwezo wa ESP32 kwa Wi-Fi na Bluetooth zilizojengewa ndani. Bodi hii inaweza kuunganishwa kwa urahisi na sensorer na skrini mbalimbali, na kuifanya kuwa bora kwa miradi ya IoT. Thermistor ya NTC itatoa usomaji wa halijoto kulingana na upinzani wake, ambao hubadilika kinyume na halijoto. Kwa ufafanuzi zaidi kuhusu usanidi na msimbo, hakikisha umeangalia video (katika video saa 00:00).

Vifaa Vimeelezwa

Vipengele vikuu vinavyotumika katika mradi huu ni pamoja na microcontroller ya ESP32, thermistor ya NTC, resistor, na skrini ya LCD. ESP32 hutumika kama kitengo kikuu cha kuchakata, kushughulikia data kutoka kwa thermistor na kudhibiti skrini ya LCD. Thermistor ya NTC hubadilisha upinzani wake kulingana na halijoto, ikituruhusu kuhesabu halijoto kulingana na usanidi wa kigawanyaji voltage na resistor isiyobadilika.

NTC_thermistor

Skrini ya LCD itaonyesha usomaji wa halijoto kwa Selsiasi na Fahrenheit. Tutatumia itifaki ya I2C kuwasiliana na LCD, ambayo hurahisisha wiring kwa kupunguza idadi ya pini zinazohitajika. Thermistor ya NTC ina sifa ambapo upinzani wake hupungua kwa ongezeko la halijoto, jambo ambalo ni muhimu kwa hesabu zetu.

Maelezo ya Datasheet

Mtengenezaji SunFounder
Nambari ya sehemu NTC Thermistor
Upinzani wa Kawaida 10 kΩ
Thamani ya Beta 3950 K
Kiwango cha Halijoto -40°C hadi 125°C
Kifurushi Axial

 

  • Hakikisha thermistor imekadiriwa kwa kiwango cha halijoto kinachotarajiwa.
  • Tumia resistor ya 10 kΩ kwa kigawanyaji voltage; vinginevyo, usomaji hautakuwa sahihi.
  • Thibitisha miunganisho ili kuepuka mzunguko mfupi.
  • Weka anwani ya I2C ya LCD kuwa sahihi (kawaida 0x27).
  • Tumia viwango sahihi vya usambazaji wa nishati kwa ESP32 na vifaa vya pembeni.
  • Angalia kwamba kiwango cha baud cha kichunguzi serial kinalingana na mipangilio ya msimbo (115200).
NTC_formula

Maagizo ya Wiring

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Ili kuunganisha vifaa, anza kwa kuunganisha thermistor ya NTC kwenye ESP32. Thermistor haina polarity, kwa hivyo inaweza kuunganishwa kwa mwelekeo wowote. Unganisha waya moja ya thermistor kwenye pini ya ardhi (GND) kwenye ESP32. Waya nyingine inaunganisha kwenye resistor ya 10 kΩ, ambayo kisha inaunganisha kwenye pini ya 3.3V kwenye ESP32. Kiunganisho kati ya thermistor na resistor kitaunganisha kwenye pini 35 kwenye ESP32, ambayo itasoma voltage kwa hesabu za halijoto.

Kwa LCD, unganisha pini ya ardhi (kawaida pini ya pili kutoka juu) kwenye GND kwenye ESP32. Kisha, unganisha VCC (mara nyingi pini ya kwanza) kwenye pini ya 5V kwenye ESP32. Pini ya SDA (kawaida pini ya tatu) inapaswa kuunganisha kwenye pini 21 kwenye ESP32, na pini ya SCL (mara nyingi pini ya nne) inapaswa kuunganisha kwenye pini 22. Hakikisha miunganisho yote ni salama na angalia mara mbili nambari za pini ili kuepuka makosa yoyote.

Mifano ya Msimbo na Maelezo

Msimbo huanza kwa kufafanua viwango vya thermistor, ikiwa ni pamoja na nambari ya pini, voltage ya kumbukumbu, na thamani za upinzani. Kazi ya setup huanzisha mawasiliano ya serial na kuweka pini ya thermistor kama ingizo.

const int thermistorPin = 35; // Pini iliyounganishwa kwenye thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // resistor 'nyingine'

Kitanzi kikuu husoma thamani ya analog kutoka kwenye pini ya thermistor, huhesabu upinzani, na kisha huhesabu halijoto kwa Selsiasi na Fahrenheit kwa kutumia mlinganyo wa kigezo cha Beta. Thamani zilizohesabiwa huchapishwa kwenye kichunguzi serial.

int adcValue = analogRead(thermistorPin); // Soma thamani ya ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Hesabu voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Hesabu upinzani wa thermistor

Hatimaye, halijoto inaonyeshwa kwenye LCD. Kazi ya lcd.print() inatumika kuonyesha thamani za halijoto, pamoja na alama ya digrii.

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

Msimbo huu husasisha LCD kila millisecond 300 na usomaji wa hivi karibuni wa halijoto, kuruhusu ufuatiliaji wa wakati halisi.

Maonyesho / Nini cha Kutarajia

Baada ya kuendesha msimbo na kukamilisha wiring, unapaswa kuona usomaji wa joto ukionyeshwa kwenye LCD kwa Selsiasi na Fahrenheit. Ukishikilia thermistor mkononi mwako, unapaswa kuona joto likiongezeka kadri upinzani unavyopungua. Kuwa makini na polarity iliyogeuzwa na hakikisha miunganisho iko salama, kwani wiring isiyo sahihi inaweza kusababisha usomaji usio sahihi (kwenye video saa 04:50).

Vidokezo vya Muda wa Video

  • 00:00 Kuanza
  • 1:50 utangulizi wa mradi
  • 5:32 wiring imeelezewa
  • 8:20 Msimbo wa Arduino NTC kwa ESP32 umeelezewa
  • 13:38 Kuchagua bodi ya ESP32 na COM port katika Arduino IDE
  • 15:20 Maonyesho ya kupima Joto kwa NTC
  • 17:34 Joto la NTC kwenye LCD1602 na ESP32
  • 18:42 Msimbo wa Arduino NTC na LCD umeelezewa
  • 21:15 Maonyesho ya Joto kwenye LCD
  • 23:13 LCD ya Kijani au LCD1601 ya Bluu?

Bilder

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
Språk: 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
Språk: 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
}

Resurser och referenser

Filer📁

Inga filer tillgängliga.