Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits et dispose d'une fonction d'alarme avec des points de déclenchement hauts et bas non volatils et programmables par l'utilisateur, ce qui signifie que le capteur a des limites hautes et basses programmables qui ne peuvent pas changer d'elles-mêmes. La DS18B20 communique sur un bus à 1 fil, qui par définition ne nécessite qu'une seule ligne de données (et une masse) pour communiquer avec un microprocesseur central. En outre, la DS18B20 peut tirer de l'énergie directement de la ligne de données ("alimentation parasite"). Cela élimine le besoin d'une source d'alimentation externe. Chaque DS18B20 possède un code série unique de 64 bits, permettant à plusieurs DS18B20 de fonctionner sur le même bus 1-Wire. Cela ouvre donc la possibilité d'utiliser un seul microprocesseur pour contrôler/évaluer plusieurs DS18B20 répartis sur une large zone. Les applications qui peuvent bénéficier de cette fonctionnalité comprennent les contrôles environnementaux HVAC, les systèmes de surveillance de la température dans les bâtiments, les usines ou les machines, et les systèmes de surveillance et de contrôle des processus

Données techniques

Chipset DS18B20
Protocole de communication 1-Wire
Précision 9 à 12 bits
Plage de mesure –55°C par +125°C
Précision de mesure ±0.5°C de -10°C par +85°C

Affectation des broches

Exemple de code Arduino

Affectation des broches Arduino :

Arduino Capteur
Pin 4 Signal
5V +V
Masse GND

Pour l'exemple de code suivant, deux bibliothèques supplémentaires sont nécessaires :

OneWire Library de Paul Stoffregen | publié sous la licence MIT

Dallas Temperature Control Library de Miles Burton | publié sous LGPL

Les deux bibliothèques sont incluses dans le paquetage et doivent être copiées dans le dossier "library" avant de démarrer l'IDE Arduino.

Par défaut, vous trouverez ce dossier dans le chemin suivant de votre installation Windows :

C:\User[nom d'utilisateur]\Documents\Arduino\Librairies

// Importation des librairies requises
#include <OneWire.h>
#include <DallasTemperature.h>          
 
// Déclaration de la broche d'entrée du capteur
#define KY001_Signal_PIN 4
 
// Configuration des libraries
OneWire oneWire(KY001_Signal_PIN);          
DallasTemperature sensors(&oneWire);   
 
 
void setup() {
 
    // Initialisation de l'interface série
    Serial.begin(9600);
    Serial.println("KY-001 Capteur de temperature");
     
    // Le capteur est initialisé
    sensors.begin();  
}
 
//Boucle de programme principale
void loop()
{
    // Début de la mesure de la température
    sensors.requestTemperatures(); 
    // ... et affichage de la température mesurée
    Serial.print("Temperature: ");
    Serial.print(sensors.getTempCByIndex(0));
    Serial.write(176); // Code UniCodepour le symbole "°"
    Serial.println("C");
         
    delay(1000);    // 5s de pause avant la mesure suivante
}

Téléchargement d'un exemple de programme

KY001-Arduino.zip

Exemple de code Raspberry Pi

Affectation des broches du Raspberry Pi :

Raspberry Pi Capteur
GPIO4 [Pin 7] Signal
3,3V [Pin 1] +V
Masse [Pin 6] GND

Configuration à un fil Raspberry Pi

Pour que le Raspberry Pi puisse communiquer avec le bus One-Wire, afin que le capteur/DS18B20 envoie ses données de mesure sous forme numérique, il faut d'abord l'activer. Pour ce faire, le fichier "/boot/config.txt" doit être édité et la ligne suivante ajoutée :

dtoverlay=w1-gpio,gpiopin=4

Vous pouvez éditer le fichier en utilisant la commande...

sudo nano /boot/config.txt

... dans la console. Vous pouvez arrêter l'édition avec la combinaison de touches [CTRL+X] et enregistrer avec [CTRL+Y].

Après avoir éteint le Raspberry Pi en utilisant...

sudo reboot

... vous pouvez utiliser l'exemple ci-dessous.

Il s'agit d'un programme d'exemple similaire, à la différence qu'ici aucune LED n'est allumée, mais que quelque chose est émis dans la console lorsqu'un signal est détecté.

#!/usr/bin/python
# coding=utf-8
 
# Les modules nécessaires sont importés et mis en place
import glob
import time
from time import sleep
import RPi.GPIO as GPIO
  
# À ce stade, la pause peut être réglée entre deux mesures
sleeptime = 1
  
# La broche d'entrée One-Wire est déclarée et la résistance intégrée de Pull UP activée
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  
# Après l'activation, la résistance de pull-up est maintenue
# jusqu'à ce que la communication soit établie avec le capteur DS18B20
print ("En attente d initialisation...")
  
base_dir = '/sys/bus/w1/devices/'
while True:
    try:
        device_folder = glob.glob(base_dir + '28*')[0]
        break
    except IndexError:
        sleep(0.5)
        continue
device_file = device_folder + '/w1_slave'
  
  
# Définition de la fonction permettant de lire la valeur du capteurF
def MesureTemperature():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines
  
# Pour l'initialisation, le capteur est lu une fois en "aveugle"
MesureTemperature()
  
# Calcul de la température. Pour les mesures, la communication One-Wire utilise 
# le sous-dossier /sys/bus/w1/devices/. Ce dossier contient le fichier w1-esclave
# dans lequel les données qui ont été envoyées par le bus One-Wire sont stockées.
# Dans cette fonction, les données sont analysées et la température est lue et envoyée
def CalculTemperature():
    lines = MesureTemperature()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = MesureTemperature()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        return temp_c
  
# Boucle de programme principale
# La température mesurée est affichée dans la console - une pause paramétrable
# avec "sleeptime" est instaurée entre les mesures
try:
    while True:
        print ("---------------------------------------")
        print ("Température: ", CalculTemperature(), "°C")
        time.sleep(sleeptime)
  
except KeyboardInterrupt:
    GPIO.cleanup()

Téléchargement d'un exemple de programme

KY001-RPi.zip

Pour commencer avec la commande :

sudo python3 KY001-RPi.py

Exemple de code Micro:Bit

Affectation des broches Micro:Bit :

Micro:Bit Capteur
Pin 1 Signal
3V +V
Masse GND

Ceci est un exemple MakeCode pour Micro:Bit qui fait essentiellement la même chose que les exemples des deux autres variantes. Cependant, cet exemple est plus proche de celui du Raspberry Pi que de celui de l'Arduino.

Pour l'exemple de code suivant, une bibliothèque supplémentaire est nécessaire :

pxt-ds18b20 de DFRobot | publié sous la licence GUI

Vous devez ajouter cette bibliothèque à votre IDE avant de pouvoir utiliser le code.

Pour ce faire, allez dans Extensions dans votre IDE et utilisez l'URL suivante https://github.com/DFRobot/pxt-ds18b20.git pour rechercher la bibliothèque à ajouter.

Téléchargement d'un exemple de programme

microbit-KY-001.zip