Le projet consiste à réaliser un thermomètre numérique en utilisant le capteur de température DS18B20 et une carte Arduino. Ce capteur est idéal pour ce type d’application car il est précis, économique et facile à intégrer grâce à son bus unique 1-wire. Il permet de mesurer des températures comprises entre -55 °C et +125 °C avec une précision de ±0,5 °C.

Le DS18B20 utilise un protocole de communication numérique appelé 1-wire, ce qui signifie que l’alimentation et les données peuvent passer par le même fil (avec pull-up). Chaque capteur possède un numéro de série unique, permettant de connecter plusieurs capteurs sur le même bus. La carte Arduino interroge le capteur, reçoit les données numériques de température et peut ensuite les afficher ou les utiliser dans un programme.

  • Plage de température : -55 à +125 °C

  • Précision typique : ±0,5 °C

  • Résolution : 9 à 12 bits, selon le programme

Le module DS18B20 utilise un bus unique. La tension d’alimentation varie de 3,0 V à 5,5 V et il n’y a pas de consommation en veille. Il peut mesurer des températures allant de -55 °C à +125 °C avec une précision de   ±0,5 °C.

Schéma du projet

Programme du projet

Pour ce projet, il vous faudra télécharger la librairie suivante : librairie.
Pour l’installer, vous pouvez consulter notre cours dédié aux bibliothèques.

#include <OneWire.h>
#include <DallasTemperature.h>

// Le fil DATA est connecté au port 2 de l'Arduino
#define ONE_WIRE_BUS 2

// Création d'une instance OneWire pour communiquer avec les appareils OneWire (pas seulement les capteurs de température Maxim/Dallas)
OneWire oneWire(ONE_WIRE_BUS);

// On passe notre référence OneWire à la bibliothèque Dallas Temperature
DallasTemperature sensors(&oneWire);

/*
 * La fonction setup. Nous démarrons uniquement les capteurs ici
 */
void setup(void) {
  // Démarrer le port série
  Serial.begin(9600);
  Serial.println("Démo de contrôle de capteur de température Dallas");

  // Initialiser la bibliothèque
  sensors.begin();
}

/*
 * Fonction principale, lire et afficher la température
 */
void loop(void) { 
  // Appel de sensors.requestTemperatures() pour envoyer une demande globale de température 
  // à tous les appareils sur le bus
  Serial.print("Demande des températures...");
  sensors.requestTemperatures(); // Envoi de la commande pour obtenir les températures
  Serial.println("TERMINÉ");

  // Après avoir reçu les températures, on peut les afficher ici.
  // On utilise la fonction ByIndex et, à titre d'exemple, on prend la température du premier capteur uniquement.
  Serial.print("Température du capteur 1 (index 0) : ");
  Serial.println(sensors.getTempCByIndex(0));  
}