KY-001 Capteur de température

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

KY-001.jpg

Données techniques / Description sommaire

Capteur de température basé sur le DS18B20. Il permet d'obtenir une mesure précise de la température en 9- 12Bits de –55°C à +125°C.

Brochage

3 S V G.png

Exemple de code pour Arduino

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 librairies doivent être copiées dans le dossier "libraries" avant de lancer l'IDE Arduino.


// Importation des librairies requises
#include   
#include          

// 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
}

Affectation des broches Arduino:

Sensor Signal = [Pin 4]
Sensor +V = [Pin 5V]
Sensor - = [Pin GND]

Exemple de programme à télécharger

KY-001.zip

Configuration One-Wire pour Raspberry Pi

Afin que la Raspberry Pi puisse envoyer la valeur mesurée par le DS18B20, il est nécessaire de configurer au préalable le bus One-Wire. Le fichier "/boot/config.txt" doit être édité et complété par la ligne suivante:

dtoverlay=w1-gpio,gpiopin=4

Le fichier peut être modifié en saisissant la commande ...

sudo nano /boot/config.txt

... dans la console. Utilisez la combinaison de touches [Ctrl + X] pour quitter l'édition et enregistrez avec [Ctrl + Y].

Dès que vous aurez redémarré la carte Raspberry Pi ...

sudo reboot

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

Exemple de code pour Raspberry Pi

Exemple de programmation en Python

#!/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()

Brochage Raspberry Pi:

Signal = GPIO4 [Pin 7]
+V = 3,3V [Pin 1]
GND = Masse [Pin 6]

Exemple de programme à télécharger

KY-001_RPi_TemperaturSensor.zip

Commande pour lancer le programme:

sudo python KY-001_RPi_TemperaturSensor.py