Tutoriel ESP32 25/55 - Mesurer la température à l'aide de NTC et LCD | Kit d'apprentissage IoT ESP32 de SunFounder
Dans ce tutoriel, nous allons apprendre à mesurer la température en utilisant un thermistor à coefficient de température négatif (NTC) et à afficher les relevés sur un écran LCD en utilisant le microcontrôleur ESP32. Le projet impliquera de connecter un thermistor NTC à l'ESP32 et d'utiliser un LCD pour afficher les relevés de température en degrés Celsius et Fahrenheit. C'est un excellent moyen de commencer avec les techniques de détection et d'affichage de la température en utilisant la plateforme ESP32.
Nous allons utiliser la carte d'extension ESP32 de SunFounder, qui améliore les capacités de l'ESP32 avec Wi-Fi et Bluetooth intégrés. Cette carte peut être facilement intégrée avec divers capteurs et affichages, ce qui la rend idéale pour les projets IoT. Le thermistor NTC fournira des lectures de température basées sur sa résistance, qui varie inversement avec la température. Pour plus de précisions sur la configuration et le code, n'oubliez pas de consulter la vidéo (dans la vidéo à 00:00).
Matériel expliqué
Les principaux composants utilisés dans ce projet comprennent le microcontrôleur ESP32, un thermistor NTC, une résistance et un écran LCD. L'ESP32 sert d'unité centrale de traitement, gérant les données du thermistor et contrôlant l'écran LCD. Le thermistor NTC change sa résistance en fonction de la température, ce qui nous permet de calculer la température en fonction de la configuration du diviseur de tension avec une résistance fixe.
L'affichage LCD montrera les lectures de température à la fois en Celsius et en Fahrenheit. Nous utiliserons le protocole I2C pour communiquer avec le LCD, ce qui simplifie le câblage en réduisant le nombre de broches nécessaires. Le thermistor NTC a une caractéristique où sa résistance diminue avec une augmentation de la température, ce qui est crucial pour nos calculs.
Détails de la fiche technique
| Fabricant | SunFounder |
|---|---|
| Numéro de pièce | Thermistor NTC |
| Résistance nominale | 10 kΩ |
| Valeur bêta | 3950 K |
| Plage de température | -40°C à 125°C |
| Paquet | Axial |
- Assurez-vous que le thermistor est classé pour la plage de températures attendue.
- Utilisez une résistance de 10 kΩ pour le diviseur de tension ; sinon, les mesures seront inexactes.
- Vérifiez les connexions pour éviter les courts-circuits.
- Gardez l'adresse I2C de l'écran LCD correcte (typiquement 0x27).
- Utilisez des niveaux d'alimentation appropriés pour l'ESP32 et les périphériques.
- Vérifiez que le taux de communication du moniteur série correspond aux paramètres du code (115200).
Instructions de câblage


Pour câbler les composants, commencez par connecter le thermistor NTC à l'ESP32. Le thermistor n'a pas de polarité, il peut donc être connecté dans les deux sens. Connectez une extrémité du thermistor à la broche de masse (GND) sur l'ESP32. L'autre extrémité se connecte à une résistance de 10 kΩ, qui se connecte ensuite à la broche 3,3 V sur l'ESP32. La jonction entre le thermistor et la résistance sera connectée à la broche.35sur l'ESP32, qui va mesurer la tension pour les calculs de température.
Pour l'écran LCD, connectez la broche de masse (typiquement la deuxième broche en partant du haut) à GND sur l'ESP32. Ensuite, connectez la broche VCC (souvent la première broche) à la broche 5V sur l'ESP32. La broche SDA (généralement la troisième broche) doit être connectée à la broche.21sur l'ESP32, et la broche SCL (souvent la quatrième broche) doit se connecter à la broche22Assurez-vous que toutes les connexions sont sécurisées et vérifiez à nouveau les numéros de broche pour éviter toute erreur.
Exemples de code et guide étape par étape
Le code commence par définir les constantes pour le thermistor, y compris le numéro de broche, la tension de référence et les valeurs de résistance. La fonction setup initialise la communication série et définit la broche du thermistor comme une entrée.
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // the 'other' resistor
La boucle principale lit la valeur analogique à partir de la broche du thermistor, calcule la résistance, puis détermine la température en Celsius et en Fahrenheit en utilisant l'équation du paramètre Beta. Les valeurs calculées sont imprimées sur le moniteur série.
int adcValue = analogRead(thermistorPin); // Read ADC value
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance
Enfin, la température est affichée sur l'écran LCD. Lelcd.print()La fonction est utilisée pour afficher les valeurs de température, avec le symbole de degré.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Degree symbol
lcd.print("C");
Ce code met efficacement à jour l'écran LCD toutes les 300 millisecondes avec les dernières températures mesurées, permettant ainsi une surveillance en temps réel.
Démonstration / À quoi s'attendre
En exécutant le code et en terminant le câblage, vous devriez voir les relevés de température affichés sur l'écran LCD en Celsius et en Fahrenheit. Si vous tenez le thermistor dans votre main, vous devriez remarquer que la température augmente au fur et à mesure que la résistance diminue. Faites attention à la polarité inversée et assurez-vous que les connexions sont sécurisées, car un câblage incorrect peut entraîner des lectures inexactes (dans la vidéo à 04:50).
Horodatages vidéo
- 00:00 Début
- 1:50 introduction au projet
- 5:32 explication du câblage
- 8:20 Explication du code NTC Arduino pour ESP32
- 13:38 Sélection de la carte ESP32 et du port COM dans l'IDE Arduino
- 15:20 Démonstration de mesure de température NTC
- 17:34 température NTC sur LCD1602 avec ESP32
- 18:42 Code Arduino NTC avec LCD expliqué
- 21:15 Démonstration de la température sur LCD
- 23:13 Écran LCD vert ou écran LCD bleu 1601 ?
/*
* // Définir des constantes
*/
const int thermistorPin = 35; // Broche connectée au thermistance
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // le résistor 'autre'
const float beta = 3950; // Valeur bêta (Valeur typique)
const float nominalTemperature = 25; // Température nominale pour le calcul du coefficient de température
const float nominalResistance = 10000; // Valeur de résistance à la température nominale
void setup() {
Serial.begin(115200); // Initialiser la communication série
pinMode(thermistorPin, INPUT); // Définir la broche comme entrée
}
void loop() {
int adcValue = analogRead(thermistorPin); // Lire la valeur ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculer la tension
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculez la résistance du thermistance avec la configuration mise à jour.
// Calculez la température en utilisant l'équation du paramètre Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Obtenir la température en degrés Celsius
float tempF = 1.8 * tempC + 32.0; // Obtenez la température en Fahrenheit
// Température d'impression
printf("TempC: %.2f C\n", tempC);
printf("TempF: %.2f F\n", tempF);
delay(300); // Attendez 1 seconde
}
/*
* Ceci est la leçon 25/55 du code du kit d'apprentissage IoT ESP32 de SunFounder. Il affiche la température à partir d'un NTC sur l'écran LCD, écrit par Ahmad Shamshiri pour le kit d'apprentissage IoT ESP32 de SunFounder. Regardez la vidéo complète https://youtu.be/zJh-gWY0DmE. Téléchargez ce code, le diagramme de câblage et d'autres ressources depuis https://robojax.com/RJT707.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// SDA->21,SCL->22
LiquidCrystal_I2C lcd(0x27,16,2); // définir l'adresse LCD à 0x27 pour un affichage de 16 caractères et 2 lignes
// Définir les constantes
const int thermistorPin = 35; // Pin connecté au thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // Valeur de résistance (10k)
const float beta = 3950; // Valeur bêta (Valeur typique)
const float nominalTemperature = 25; // Température nominale pour le calcul du coefficient de température
const float nominalResistance = 10000; // Valeur de résistance à la température nominale
void setup() {
lcd.clear();
lcd.init(); // initialiser l'écran LCD
lcd.backlight(); // Active la rétroéclairage LCD.
// Serial.begin(115200); // Initialiser la communication série
pinMode(thermistorPin, INPUT); // Définir la broche comme entrée
}
void loop() {
int adcValue = analogRead(thermistorPin); // Lire la valeur ADC
float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculer la tension
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculer la résistance du thermistor avec la configuration mise à jour.
// Calculez la température en utilisant l'équation du paramètre Beta.
float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
float tempC = tempK - 273.15; // Obtenir la température en Celsius
float tempF = 1.8 * tempC + 32.0; // Obtenez la température en Fahrenheit
// Imprimer la température
// printf("TempC: %.2f C\n", tempC);
// printf("TempF: %.2f F\n", tempF);
// Afficher la température sur l'écran LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // symbole de degré
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.write(223); // symbole de degré
lcd.print("F");
delay(300); // Attendez 1 seconde
}
Common Course Links
Common Course Files
Ressources et références
-
DocumentationEn savoir plus sur le thermistor NTCdocs.sunfounder.com
-
DocumentationTutoriel ESP32 25/55 - page doc SunFounder pour thermomètre NTSdocs.sunfounder.com
Fichiers📁
Aucun fichier disponible.