Search Code

Tutorial ESP32 25/55 - Mengukur Suhu menggunakan NTC & LCD | Kit Pembelajaran IoT ESP32 SunFounder

Tutorial ESP32 25/55 - Mengukur Suhu menggunakan NTC & LCD | Kit Pembelajaran IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara mengukur suhu menggunakan termistor Koefisien Suhu Negatif (NTC) dan menampilkan pembacaannya pada layar LCD menggunakan mikrokontroler ESP32. Proyek ini akan melibatkan menghubungkan termistor NTC ke ESP32 dan menggunakan LCD untuk menampilkan pembacaan suhu dalam Celsius dan Fahrenheit. Ini adalah cara yang bagus untuk memulai dengan teknik penginderaan suhu dan tampilan menggunakan platform ESP32.

ESP32-25-NTC_thermometeLCD

Kita akan menggunakan papan ekstensi ESP32 dari SunFounder, yang meningkatkan kemampuan ESP32 dengan Wi-Fi dan Bluetooth bawaan. Papan ini dapat dengan mudah diintegrasikan dengan berbagai sensor dan layar, menjadikannya ideal untuk proyek IoT. Termistor NTC akan memberikan pembacaan suhu berdasarkan resistansinya, yang berubah secara terbalik dengan suhu. Untuk klarifikasi lebih lanjut tentang pengaturan dan kode, pastikan untuk menonton video (di video pada 00:00).

Penjelasan Perangkat Keras

Komponen utama yang digunakan dalam proyek ini termasuk mikrokontroler ESP32, termistor NTC, resistor, dan layar LCD. ESP32 berfungsi sebagai unit pemrosesan pusat, menangani data dari termistor dan mengendalikan layar LCD. Termistor NTC mengubah resistansinya sesuai dengan suhu, memungkinkan kita untuk menghitung suhu berdasarkan konfigurasi pembagi tegangan dengan resistor tetap.

NTC_thermistor

Layar LCD akan menampilkan pembacaan suhu dalam Celsius dan Fahrenheit. Kita akan menggunakan protokol I2C untuk berkomunikasi dengan LCD, yang menyederhanakan pengkabelan dengan mengurangi jumlah pin yang diperlukan. Termistor NTC memiliki karakteristik di mana resistansinya menurun dengan peningkatan suhu, yang sangat penting untuk perhitungan kita.

Detail Datasheet

Produsen SunFounder
Nomor bagian Termistor NTC
Resistansi Nominal 10 kΩ
Nilai Beta 3950 K
Rentang Suhu -40°C hingga 125°C
Kemasan Aksial

 

  • Pastikan termistor memiliki peringkat untuk rentang suhu yang diharapkan.
  • Gunakan resistor 10 kΩ untuk pembagi tegangan; jika tidak, pembacaan akan tidak akurat.
  • Verifikasi koneksi untuk menghindari korsleting.
  • Pastikan alamat I2C LCD benar (biasanya 0x27).
  • Gunakan tingkat catu daya yang sesuai untuk ESP32 dan periferal.
  • Periksa bahwa baud rate monitor serial sesuai dengan pengaturan kode (115200).
NTC_formula

Instruksi Pengkabelan

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Untuk mengkabel komponen, mulailah dengan menghubungkan termistor NTC ke ESP32. Termistor tidak memiliki polaritas, sehingga dapat dihubungkan ke arah mana pun. Hubungkan satu ujung termistor ke pin ground (GND) pada ESP32. Ujung lainnya terhubung ke resistor 10 kΩ, yang kemudian terhubung ke pin 3.3V pada ESP32. Titik sambungan antara termistor dan resistor akan terhubung ke pin 35 pada ESP32, yang akan membaca tegangan untuk perhitungan suhu.

Untuk LCD, hubungkan pin ground (biasanya pin kedua dari atas) ke GND pada ESP32. Kemudian, hubungkan VCC (sering kali pin pertama) ke pin 5V pada ESP32. Pin SDA (biasanya pin ketiga) harus terhubung ke pin 21 pada ESP32, dan pin SCL (sering kali pin keempat) harus terhubung ke pin 22. Pastikan semua koneksi aman dan periksa ulang nomor pin untuk menghindari kesalahan.

Contoh Kode & Penjelasan

Kode dimulai dengan mendefinisikan konstanta untuk termistor, termasuk nomor pin, tegangan referensi, dan nilai resistansi. Fungsi setup menginisialisasi komunikasi serial dan mengatur pin termistor sebagai input.

const int thermistorPin = 35; // Pin terhubung ke termistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // resistor 'lainnya'

Loop utama membaca nilai analog dari pin termistor, menghitung resistansi, dan kemudian menghitung suhu dalam Celsius dan Fahrenheit menggunakan persamaan parameter Beta. Nilai yang dihitung dicetak ke monitor serial.

int adcValue = analogRead(thermistorPin); // Baca nilai ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Hitung tegangan
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Hitung resistansi termistor

Terakhir, suhu ditampilkan pada LCD. Fungsi lcd.print() digunakan untuk menampilkan nilai suhu, bersama dengan simbol derajat.

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

Kode ini secara efektif memperbarui LCD setiap 300 milidetik dengan pembacaan suhu terbaru, memungkinkan pemantauan waktu nyata.

Demonstrasi / Apa yang Diharapkan

Setelah menjalankan kode dan menyelesaikan perangkaian, Anda akan melihat pembacaan suhu ditampilkan di LCD dalam satuan Celsius dan Fahrenheit. Jika Anda memegang termistor di tangan, Anda akan melihat suhu meningkat seiring dengan menurunnya resistansi. Berhati-hatilah terhadap polaritas yang terbalik dan pastikan koneksi aman, karena perangkaian yang tidak tepat dapat menyebabkan pembacaan yang tidak akurat (di video pada 04:50).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:50 pengenalan proyek
  • 5:32 penjelasan perangkaian
  • 8:20 penjelasan kode NTC Arduino untuk ESP32
  • 13:38 Memilih papan ESP32 dan port COM di Arduino IDE
  • 15:20 Demonstrasi pengukuran suhu NTC
  • 17:34 Suhu NTC di LCD1602 dengan ESP32
  • 18:42 Penjelasan kode Arduino NTC dengan LCD
  • 21:15 Demonstrasi Suhu di LCD
  • 23:13 LCD Hijau atau LCD Biru 1601?

Gambar

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

Sumber daya & referensi

Berkas📁

Tidak ada file tersedia.