Tutoriale ESP32 25/55 - Misurare la temperatura utilizzando NTC e LCD | Kit di apprendimento IoT ESP32 di SunFounder
In questo tutorial, impareremo come misurare la temperatura utilizzando un termistore a coefficiente di temperatura negativo (NTC) e visualizzare le letture su uno schermo LCD utilizzando il microcontrollore ESP32. Il progetto comporterà il collegamento di un termistore NTC all'ESP32 e l'uso di un LCD per mostrare le letture della temperatura sia in Celsius che in Fahrenheit. Questo è un ottimo modo per iniziare con le tecniche di rilevamento e visualizzazione della temperatura utilizzando la piattaforma ESP32.
Utilizzeremo la scheda di espansione ESP32 di SunFounder, che migliora le capacità dell'ESP32 con Wi-Fi e Bluetooth integrati. Questa scheda può essere facilmente integrata con vari sensori e display, rendendola ideale per progetti IoT. Il termistore NTC fornirà letture della temperatura basate sulla sua resistenza, che varia in modo inverso rispetto alla temperatura. Per ulteriori chiarimenti sulla configurazione e sul codice, assicurati di controllare il video (nel video a 00:00).
Hardware Spiegato
I componenti principali utilizzati in questo progetto includono il microcontrollore ESP32, un termistore NTC, una resistenza e un display LCD. L'ESP32 funge da unità centrale di elaborazione, gestendo i dati provenienti dal termistore e controllando il display LCD. Il termistore NTC varia la sua resistenza in base alla temperatura, permettendoci di calcolare la temperatura in base alla configurazione del partitore di tensione con una resistenza fissa.
Il display LCD mostrerà le letture della temperatura sia in gradi Celsius che Fahrenheit. Utilizzeremo il protocollo I2C per comunicare con il LCD, il che semplifica il cablaggio riducendo il numero di pin necessari. Il termistore NTC ha una caratteristica in cui la sua resistenza diminuisce con un aumento della temperatura, cosa fondamentale per i nostri calcoli.
Dettagli della scheda dati
| Produttore | SunFounder |
|---|---|
| Numero di parte | Termistore NTC |
| Resistenza Nominale | 10 kΩ |
| Valore Beta | 3950 K |
| Intervallo di Temperatura | da -40°C a 125°C |
| Pacchetto | Asseiale |
- Assicurati che il termistore sia classificato per l'intervallo di temperatura previsto.
- Usa un resistore da 10 kΩ per il partitore di tensione; altrimenti, le letture saranno imprecise.
- Verifica le connessioni per evitare cortocircuiti.
- Mantieni corretto l'indirizzo I2C del LCD (tipicamente 0x27).
- Utilizzare livelli di alimentazione appropriati per l'ESP32 e le periferiche.
- Controlla che il baud rate del monitor seriale corrisponda alle impostazioni del codice (115200).
Istruzioni per il cablaggio


Per collegare i componenti, inizia collegando il termistore NTC all'ESP32. Il termistore non ha polarità, quindi può essere collegato in entrambe le direzioni. Collega un capo del termistore al pin di terra (GND) sull'ESP32. L'altro capo si collega a una resistenza da 10 kΩ, che poi si collega al pin 3.3V sull'ESP32. Il punto di giunzione tra il termistore e la resistenza si collegherà al pin35sull'ESP32, che leggerà la tensione per i calcoli della temperatura.
Per il LCD, collegare il pin di terra (tipicamente il secondo pin dall'alto) a GND sull'ESP32. Quindi, collegare il VCC (spesso il primo pin) al pin 5V sull'ESP32. Il pin SDA (di solito il terzo pin) dovrebbe collegarsi al pin21sull'ESP32 e il pin SCL (spesso il quarto pin) dovrebbe collegarsi al pin22Assicurati che tutte le connessioni siano sicure e controlla di nuovo i numeri dei pin per evitare errori.
Esempi di codice e guida passo passo
Il codice inizia definendo le costanti per il termistore, inclusi il numero di pin, la tensione di riferimento e i valori di resistenza. La funzione di setup inizializza la comunicazione seriale e imposta il pin del termistore come ingresso.
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // the 'other' resistor
Il ciclo principale legge il valore analogico dal pin del termistore, calcola la resistenza e poi calcola la temperatura sia in Celsius che in Fahrenheit utilizzando l'equazione del parametro Beta. I valori calcolati vengono stampati sul monitor seriale.
int adcValue = analogRead(thermistorPin); // Read ADC value
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance
Infine, la temperatura viene visualizzata sul LCD. Lalcd.print()La funzione viene utilizzata per mostrare i valori della temperatura, insieme al simbolo di grado.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Degree symbol
lcd.print("C");
Questo codice aggiornano efficacemente il LCD ogni 300 millisecondi con le ultime letture della temperatura, consentendo il monitoraggio in tempo reale.
Dimostrazione / Cosa Aspettarsi
Eseguendo il codice e completando il cablaggio, dovresti vedere le letture della temperatura visualizzate sul LCD sia in Celsius che in Fahrenheit. Se tieni il termistore in mano, dovresti notare l'aumento della temperatura man mano che la resistenza diminuisce. Fai attenzione alla polarità invertita e assicurati che le connessioni siano sicure, poiché un cablaggio improprio può portare a letture inaccurate (nel video a 04:50).
Timestamp video
- 00:00 Inizio
- 1:50 introduzione al progetto
- 5:32 cablaggio spiegato
- 8:20 Codice NTC Arduino per ESP32 spiegato
- 13:38 Selezione della scheda ESP32 e della porta COM nell'Arduino IDE
- 15:20 Dimostrazione di misurazione della temperatura NTC
- 17:34 temperatura NTC su LCD1602 con ESP32
- 18:42 Codice NTC Arduino con LCD spiegato
- 21:15 Dimostrazione della temperatura su LCD
- 23:13 LCD verde o LCD blu1601?
/*
* // Definisci costanti
*/
const int thermistorPin = 35; // Pin collegato al termistore
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // il resistore 'altro'
const float beta = 3950; // Valore beta (Valore tipico)
const float nominalTemperature = 25; // Temperatura nominale per il calcolo del coefficiente di temperatura
const float nominalResistance = 10000; // Valore di resistenza alla temperatura nominale
void setup() {
Serial.begin(115200); // Inizializza la comunicazione seriale
pinMode(thermistorPin, INPUT); // Imposta il pin come ingresso
}
void loop() {
int adcValue = analogRead(thermistorPin); // Leggi il valore ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calcola la tensione
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calcola la resistenza del termistore con la configurazione aggiornata.
// Calcolare la temperatura utilizzando l'equazione del parametro Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Ottieni la temperatura in gradi Celsius
float tempF = 1.8 * tempC + 32.0; // Ottieni la temperatura in Fahrenheit
// Stampa temperatura
printf("TempC: %.2f C\n", tempC);
printf("TempF: %.2f F\n", tempF);
delay(300); // Aspetta 1 secondo
}
/*
* Questo è il Lezione 25/55 del codice del kit di apprendimento IoT ESP32 di SunFounder che visualizza la temperatura da NTC sullo schermo LCD scritto da Ahmad Shamshiri per il kit di apprendimento IoT ESP32 di SunFounder. Guarda il video completo https://youtu.be/zJh-gWY0DmE scarica questo codice, diagramma di collegamento e altre risorse da https://robojax.com/RJT707
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// SDA->21,SCL->22
LiquidCrystal_I2C lcd(0x27,16,2); // imposta l'indirizzo LCD a 0x27 per un display a 16 caratteri e 2 righe
// Definire costanti
const int thermistorPin = 35; // Punto collegato al termistore
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // Valore di resistenza (10k)
const float beta = 3950; // Valore beta (Valore tipico)
const float nominalTemperature = 25; // Temperatura nominale per il calcolo del coefficiente di temperatura
const float nominalResistance = 10000; // Valore di resistenza a temperatura nominale
void setup() {
lcd.clear();
lcd.init(); // inizializza il lcd
lcd.backlight(); // Accende la retroilluminazione LCD.
// Serial.begin(115200); // Inizializza la comunicazione seriale
pinMode(thermistorPin, INPUT); // Imposta il pin come input
}
void loop() {
int adcValue = analogRead(thermistorPin); // Leggi il valore ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calcola la tensione
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calcola la resistenza del termistore con la configurazione aggiornata.
// Calcola la temperatura utilizzando l'equazione del parametro Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Ottieni la temperatura in Celsius
float tempF = 1.8 * tempC + 32.0; // Ottieni la temperatura in gradi Fahrenheit
// Stampa temperatura
// printf("TempC: %.2f C\n", tempC);
// printf("TempF: %.2f F\n", tempF);
// Mostra la temperatura su LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Simbolo di grado
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.write(223); // Simbolo di grado
lcd.print("F");
delay(300); // Aspetta 1 secondo
}
Common Course Links
Common Course Files
Risorse e riferimenti
-
DocumentazioneScopri il termistore NTC.docs.sunfounder.com
-
DocumentazioneTutorial ESP32 25/55 - Pagina doc SunFounder per termometro NTSdocs.sunfounder.com
File📁
Nessun file disponibile.