Tutorial ESP32 25/55 - Medindo Temperatura com NTC e LCD | Kit de Aprendizado IoT ESP32 da SunFounder
Neste tutorial, aprenderemos a medir a temperatura usando um termistor de Coeficiente de Temperatura Negativo (NTC) e exibir as leituras em um display LCD usando o microcontrolador ESP32. O projeto envolverá conectar um termistor NTC ao ESP32 e usar um LCD para mostrar as leituras de temperatura em Celsius e Fahrenheit. Esta é uma excelente maneira de começar a trabalhar com técnicas de sensoriamento e exibição de temperatura usando a plataforma ESP32.
Estaremos utilizando a placa de extensão ESP32 da SunFounder, que aprimora as capacidades do ESP32 com Wi-Fi e Bluetooth integrados. Esta placa pode ser facilmente integrada a vários sensores e displays, tornando-a ideal para projetos de IoT. O termistor NTC fornecerá leituras de temperatura com base em sua resistência, que varia inversamente com a temperatura. Para mais esclarecimentos sobre a configuração e o código, não deixe de conferir o vídeo (no vídeo às 00:00).
Hardware Explicado
Os principais componentes utilizados neste projeto incluem o microcontrolador ESP32, um termistor NTC, um resistor e um display LCD. O ESP32 funciona como a unidade central de processamento, lidando com os dados do termistor e controlando o display LCD. O termistor NTC altera sua resistência de acordo com a temperatura, permitindo-nos calcular a temperatura com base na configuração do divisor de tensão com um resistor fixo.
O display LCD mostrará as leituras de temperatura tanto em Celsius quanto em Fahrenheit. Usaremos o protocolo I2C para nos comunicarmos com o LCD, o que simplifica a fiação, reduzindo o número de pinos necessários. O termistor NTC possui uma característica em que sua resistência diminui com o aumento da temperatura, o que é crucial para nossos cálculos.
Detalhes da Ficha Técnica
| Fabricante | SunFounder |
|---|---|
| Número da peça | Termistor NTC |
| Resistência Nominal | 10 kΩ |
| Valor Beta | 3950 K |
| Faixa de Temperatura | -40°C a 125°C |
| Pacote | Axial |
- Certifique-se de que o termistor é classificado para a faixa de temperatura esperada.
- Use um resistor de 10 kΩ para o divisor de tensão; caso contrário, as leituras estarão imprecisas.
- Verifique as conexões para evitar curtos-circuitos.
- Mantenha o endereço I2C do LCD correto (normalmente 0x27).
- Use níveis de alimentação adequados para o ESP32 e periféricos.
- Verifique se a taxa de transmissão do monitor serial corresponde às configurações do código (115200).
Instruções de Fiação


Para conectar os componentes, comece ligando o termistor NTC ao ESP32. O termistor não tem polaridade, portanto, pode ser conectado em qualquer direção. Conecte um terminal do termistor ao pino de terra (GND) no ESP32. O outro terminal se conecta a um resistor de 10 kΩ, que se conecta ao pino de 3,3V no ESP32. A junção entre o termistor e o resistor será conectada ao pino.35no ESP32, que irá ler a tensão para cálculos de temperatura.
Para o LCD, conecte o pino de terra (normalmente o segundo pino de cima para baixo) ao GND no ESP32. Em seguida, conecte o VCC (geralmente o primeiro pino) ao pino de 5V no ESP32. O pino SDA (normalmente o terceiro pino) deve ser conectado ao pino.21no ESP32, e o pino SCL (frequentemente o quarto pino) deve conectar-se ao pino22. Certifique-se de que todas as conexões estejam seguras e verifique os números dos pinos para evitar quaisquer erros.
Exemplos de Código e Passo a Passo
O código começa definindo as constantes para o termistor, incluindo o número do pino, a tensão de referência e os valores de resistência. A função de configuração inicializa a comunicação serial e define o pino do termistor como uma entrada.
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // the 'other' resistor
O loop principal lê o valor analógico do pino do termistor, calcula a resistência e, em seguida, computa a temperatura em graus Celsius e Fahrenheit usando a equação do parâmetro Beta. Os valores calculados são impressos no monitor serial.
int adcValue = analogRead(thermistorPin); // Read ADC value
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance
Finalmente, a temperatura é exibida no LCD. Alcd.print()A função é usada para mostrar os valores de temperatura, junto com o símbolo de grau.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Degree symbol
lcd.print("C");
Este código atualiza efetivamente o LCD a cada 300 milissegundos com as últimas medições de temperatura, permitindo monitoramento em tempo real.
Demonstração / O que Esperar
Ao executar o código e concluir a fiação, você deve ver as leituras de temperatura exibidas no LCD em Celsius e Fahrenheit. Se você segurar o termistor na sua mão, deve notar o aumento da temperatura à medida que a resistência diminui. Tenha cuidado com a polaridade invertida e garanta que as conexões estejam seguras, pois uma fiação inadequada pode levar a leituras imprecisas (no vídeo às 04:50).
Marcos de Tempo do Vídeo
- 00:00 Início
- 1:50 introdução ao projeto
- 5:32 fiação explicada
- Código Arduino NTC para ESP32 explicado às 8:20
- 13:38 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 15:20 Demonstração de medição de temperatura NTC
- 17:34 Temperatura NTC no LCD1602 com ESP32
- Código NTC Arduino com LCD explicado às 18:42
- 21:15 Demonstração da Temperatura no LCD
- 23:13 LCD verde ou LCD azul 1601?
/*
* // Definir constantes
*/
const int thermistorPin = 35; // Pino conectado ao termistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // o resistor 'outro'
const float beta = 3950; // Valor beta (Valor típico)
const float nominalTemperature = 25; // Temperatura nominal para calcular o coeficiente de temperatura
const float nominalResistance = 10000; // Valor de resistência na temperatura nominal
void setup() {
Serial.begin(115200); // Inicialize a comunicação serial
pinMode(thermistorPin, INPUT); // Defina o pino como entrada
}
void loop() {
int adcValue = analogRead(thermistorPin); // Ler valor do ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calcule a voltagem
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calcule a resistência do termistor com a configuração atualizada.
// Calcule a temperatura usando a equação do parâmetro Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Obtenha a temperatura em Celsius
float tempF = 1.8 * tempC + 32.0; // Obter temperatura em Fahrenheit
// Imprimir temperatura
printf("TempC: %.2f C\n", tempC);
printf("TempF: %.2f F\n", tempF);
delay(300); // Espere 1 segundo
}
/*
* Esta é a Lição 25/55 do código do kit de aprendizado IoT ESP32 da SunFounder.
* Exibe a temperatura do NTC na tela LCD.
* Escrito por Ahmad Shamshiri para o kit de aprendizado IoT ESP32 da SunFounder.
* Assista ao vídeo completo em https://youtu.be/zJh-gWY0DmE.
* Baixe este código, o diagrama de fiação e outros recursos em https://robojax.com/RJT707.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// SDA->21,SCL->22
LiquidCrystal_I2C lcd(0x27,16,2); // defina o endereço LCD para 0x27 para um display de 16 caracteres e 2 linhas
// Defina constantes
const int thermistorPin = 35; // Pino conectado ao termistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // Valor de resistência (10k)
const float beta = 3950; // Valor beta (Valor típico)
const float nominalTemperature = 25; // Temperatura nominal para calcular o coeficiente de temperatura
const float nominalResistance = 10000; // Valor de resistência na temperatura nominal
void setup() {
lcd.clear();
lcd.init(); // inicializar o lcd
lcd.backlight(); // Ativa a retroiluminação do LCD.
// Serial.begin(115200); // Inicializa a comunicação serial
pinMode(thermistorPin, INPUT); // Defina o pino como entrada
}
void loop() {
int adcValue = analogRead(thermistorPin); // Leia o valor do ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calcule a voltagem
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calcule a resistência do termistor com a configuração atualizada.
// Calcule a temperatura usando a equação do parâmetro Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Obter temperatura em Celsius
float tempF = 1.8 * tempC + 32.0; // Obtenha a temperatura em Fahrenheit
// Imprimir temperatura
// printf("TempC: %.2f C\n", tempC);
// printf("TempF: %.2f F\n", tempF);
// Exibir temperatura no LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Símbolo de grau
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.write(223); // Símbolo de grau
lcd.print("F");
delay(300); // Espere 1 segundo
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoSaiba mais sobre o termistor NTCdocs.sunfounder.com
-
DocumentaçãoTutorial ESP32 25/55 - Página do doc SunFounder para termômetro NTSdocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.