← 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