Thermomètre connecté (ESP32)
Projet personnel — Capteur NTC avec interface web temps réel
← Retour aux projets
Projet : Développement d'un thermomètre connecté basé sur ESP32 utilisant une thermistance NTC en pont diviseur. Conversion des mesures via équation bêta, affichage en temps réel via interface web locale et alimentation sur batterie avec circuit de protection.
Période : Projet personnel (hors IUT)
ESP32NTCWiFiWeb server
Pont diviseurÉquation bêtaBatterie Li-Po
C++
🔧 Conception
- Thermistance NTC montée en pont diviseur de tension
- Conversion analogique-numérique (ADC) et linéarisation via équation bêta
- Étalonnage et validation de la mesure par rapport à une référence
📡 Interface web
- Serveur web embarqué sur ESP32
- Affichage en temps réel de la température dans le navigateur
- Actualisation automatique des données via requêtes AJAX
- Visualisation graphique de l'historique des mesures
🔋 Alimentation
- Alimentation sur batterie Li-Po avec circuit de protection intégré
- Optimisation de la consommation pour fonctionnement autonome
- Gestion des modes veille pour prolonger l'autonomie
💻 Code source — Acquisition et conversion NTC
Lecture de la thermistance NTC via l'ADC de l'ESP32, moyennage sur 100 échantillons, conversion en température via l'équation bêta (R₀ = 10 kΩ, B = 3950).
int sensorPin = 32; int ledPin = 13; int sensorValue = 0; float R_T = 0; float Vin = 0; float Temp = 0; float A_moy = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(sensorPin, INPUT); Serial.begin(9600); } void loop() { // Moyennage sur 100 échantillons for (int i = 0; i < 100; i++) { sensorValue = analogRead(sensorPin); A_moy += sensorValue; } A_moy = A_moy / 100; // Conversion tension Vin = (A_moy * (3.29 / 4095)) + 0.1; // Calcul résistance NTC (pont diviseur, R_ref = 10 kΩ) R_T = 10000.0 * (3.29 - Vin) / Vin; // Équation bêta : T = 1 / (1/T₀ + 1/B * ln(R/R₀)) - 273.15 Temp = (1.0 / ((1.0 / 298.15) + ((1.0 / 3950.0) * log(R_T / 10000.0))) ) - 273.15; // Affichage série Serial.print(R_T); Serial.print(" Vin="); Serial.print(Vin); Serial.print(" bit="); Serial.print(sensorValue); Serial.print(" temp="); Serial.print(Temp); Serial.print("\n"); delay(1000); A_moy = 0; }
⚙️ Code Arduino/C++ pour ESP32 — ADC 12 bits (0-4095), tension de référence 3,29 V, thermistance NTC 10 kΩ avec B = 3950.
⬇️ Télécharger le code ESP32 (.ino)🎯 Compétences développées
- Programmation ESP32 en C++
- Lecture et traitement de signaux analogiques (ADC)
- Conception de pont diviseur et linéarisation NTC
- Création d'interface web embarquée
- Gestion de batterie et optimisation de consommation
- Validation de mesure et calibration de capteur