Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Comment connecter un capteur de température DS1820 One‑Wire à un Raspberry Pi via GPIO

La surveillance de température intérieure ou extérieure avec un Raspberry Pi peut se faire avec une configuration minimale. Ce guide montre comment câbler un capteur DS18S20 (DS1820) 1‑Wire directement sur une broche GPIO, lire les températures en logiciel, et journaliser les données avec RRDtool.

Raspberry Pi et 1‑Wire

Le DS18S20, DS18B20, et DS1822 sont tous des capteurs de température 1‑Wire qui tiennent dans un boîtier TO‑92 et combinent un capteur, ADC, et interface série. Bien qu'ils partagent le même brochage et interface logicielle, ils diffèrent en coût et précision – le DS18S20 offre une précision de ±0,5 °C, le DS18B20 ±0,5 °C, et le DS1822 ±0,5 °C aussi, mais ce dernier est moins cher.

Chaque dispositif a trois broches : Masse (GND, broche 1), Données (DQ, broche 2), et Alimentation (VDD, broche 3). Une alimentation parasite (3–5 V) permet au capteur d'être alimenté uniquement depuis la ligne de données en utilisant une résistance de pull-up.

Une seule résistance

Connectez la broche DQ du capteur au GPIO 4 du Pi. Reliez GND à la masse du Pi et VDD à GND, activant l'alimentation parasite. Placez une résistance de pull-up 4,7 kΩ entre 3,3 V et GPIO 4. Une petite breadboard ou un connecteur à angle droit garde le câblage propre et tient dans le boîtier officiel du Pi.

Pilotes logiciels 1‑Wire

Sur Raspbian (ou toute distribution basée Debian) chargez les modules noyau avec :

sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm

Le drapeau pullup=1 indique au pilote que le capteur est alimenté via la résistance de pull-up. Après chargement, chaque capteur apparaît comme un sous-répertoire sous /sys/bus/w1/devices. Le nom du répertoire consiste en le code de famille et l'identifiant unique 64 bits du capteur : DS18S20/DS1820 utilisent le code famille 10, DS18B20 utilise 28, et DS1822 utilise 22.

Dans chaque répertoire se trouve w1_slave, qui contient deux lignes. La première montre le dump brut des registres et une vérification CRC. La seconde se termine par t=xxxx, la température en millièmes de degrés Celsius. Exemple :

cd /sys/bus/w1/devices
cd 10-000801b5*
cat w1_slave
0f 00 4b 46 ff ff 06 10 0c : crc=0c YES
0f 00 4b 46 ff ff 06 10 0c t=7375

La valeur 7375 correspond à 7,375 °C. Notez que la fiche technique spécifie une précision de ±0,5 °C, donc la vraie température est dans ±0,5 °C de la lecture.

Pour assurer le chargement des modules au démarrage, ajoutez-les à /etc/modules :

# /etc/modules
w1-gpio pullup=1
w1-therm

Base de données Round-Robin (RRDtool)

Pour le stockage long terme et la visualisation, RRDtool est idéal. Installez-le avec :

sudo apt-get install rrdtool python-rrdtool

Définissez une base de données qui enregistre une valeur toutes les 15 minutes et conserve des agrégats quotidiens sur dix ans :

rrdtool create temperature.rrd --step 900 \
DS:temp0:GAUGE:1200:-40:80 \
DS:temp1:GAUGE:1200:-40:80 \
RRA:AVERAGE:0.5:1:960 \
RRA:MIN:0.5:96:3600 \
RRA:MAX:0.5:96:3600 \
RRA:AVERAGE:0.5:96:3600

Acquisition de données avec Python

Ci-dessous un script Python minimal qui lit w1_slave et insère la valeur dans la base de données RRDtool. Ajustez les chemins des capteurs et le nom du fichier base de données selon vos besoins.

import os
import rrdtool

W1_PATH = '/sys/bus/w1/devices'
DB_FILE = 'temperature.rrd'

def read_temp(sensor_id):
    with open(f'{W1_PATH}/{sensor_id}/w1_slave') as f:
        lines = f.readlines()
    if lines[1].strip().endswith('YES'):
        temp_milli = int(lines[1].strip().split('t=')[-1])
        return temp_milli / 1000.0
    return None

# Exemple pour deux capteurs
temps = {
    'temp0': read_temp('10-000801b5'),
    'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))

Exécutez le script périodiquement (ex. via cron) pour maintenir la base de données à jour.

Processus de fabrication

  1. Construire un enregistreur de température Raspberry Pi avec capteur I2C à 5 $
  2. Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
  3. Comment lire la température avec un DS18B20 sur Raspberry Pi 2
  4. Surveillance de température professionnelle sur Raspberry Pi avec DS18B20
  5. Mesure de température sur Raspberry Pi avec capteurs 1‑Wire Maxim et pont I2C DS2482
  6. Capteur de température infrarouge TMP006 avec Raspberry Pi : bibliothèque Python et guide de configuration
  7. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  8. Construire une station météo Raspberry Pi qui envoie les données météo quotidiennes par email
  9. Surveillance précise de la température dans un placard serveur avec Raspberry Pi