RPi-DS18B20
Le DS18B20 est un composant électronique qui à la faculté d'être sensible à la température ambiante et de retourner une valeur interprétable avec Arduino et les Raspberry Pi, entre-autres.
Sommaire
Matériel
Vous pouvez acheter un kit module assemblé ou créer votre propre circuit.
Module
Les modules sont généralement prêt à l'emploi, selon le module, une alimentation 3.3v ou 5v est requise.
Fait soi-même
Il vous faudra un composant DS18B20 en forme TO-92 et une résistance de 4.7Kohm. Vous devez les installer selon cette configuration, noter l'usage e la résistance sur le connecteur du senseur et du voltage.
Installation
1-wire
Il existe deux moyen d'activer le "1-wire" du Raspberry Pi.
Méthode Raspi-config
- Entrer la commande
sudo raspi-config
- Sélectionner le menu "Interfacing options"
- Sélectionner "1-Wire" est activer le
- Redémarrer
Méthode manuel
- Éditer le fichier de config avec
sudo nano /boot/config.txt
- Ajouter dans le document cette ligne
dtoverlay=w1-gpio
- Sauvegarder le document
- Redémarrer
Chargement du module
- Vous devez activer les module avec;
sudo modprobe w1-gpio
sudo modprobe w1-therm
- Lister la liste des appareil détecté sur le port 1-wire avec
ls /sys/bus/w1/devices
- Si vous avez un résultat commençant par "28-", c'est que le module est présent.
Utilisation
Vous pouvez utiliser le module avec plusieurs moyens, voici le code requis pour l'utiliser avec Python et avoir la lecture en Celsius et Fahrenheit.
import os import glob import time os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_f while True: print(read_temp()) time.sleep(1)