Capteurs – Température avec l’interface 1-Wire et le DS18B20

Capteurs Temperature avec linterface 1 Wire et le DS18B20.pngv1540907472
Capteurs Temperature avec linterface 1 Wire et le DS18B20.pngv1540907472

Dans le prolongement du tutoriel de la semaine dernière sur l’utilisation d’un capteur i2c, cette semaine, nous allons examiner un autre protocole standard appelé «1 fil». Comme son nom l’indique, cela utilise un seul fil pour communiquer des informations détaillées sur l’état du capteur. Le capteur a en fait besoin de trois fils car l’alimentation doit être fournie, mais le 1 fil se réfère à la communication de données.

L’un des capteurs à 1 fil les plus courants est le capteur de température Dallas DS18B20. Cela se présente sous différentes formes, la principale ressemblant à un transistor à trois jambes. L’autre facteur de forme, et celui que je préfère, est la version étanche où le capteur est intégré dans un tube métallique à l’extrémité d’un long fil.

DS18B20DS18B20 scellé

Construire le circuit

Tu auras besoin de:

  • Un Dallas DS18B20 (l’une ou l’autre version)
  • Résistance de 4,7 k ohms
    • S’il y a quatre bandes, les couleurs seront le jaune, le violet, le rouge, puis l’or
    • S’il y a cinq bandes, les couleurs seront jaune, violet, noir, marron, marron
  • 4 fils de pontage femelle à mâle
  • 2 fils de connexion mâle à mâle

Avant de construire ce circuit, vous doit éteignez le Raspberry Pi.

Le circuit utilisera une broche «masse» (GND) pour agir comme les extrémités «négatives» ou 0 volt d’une batterie. L’une des broches marquées 3v3 fournira l’alimentation du capteur. 3v3 signifie qu’il s’agit d’une alimentation de 3,3 volts.

Utilisez deux fils de pontage femelle à mâle pour connecter les broches GND et 3v3 GPIO aux deux rangées de trous inférieures de la planche à pain. Faites correspondre les couleurs marquées sur la planche à pain – rouge et bleu – avec les fils de connexion du Raspberry Pi – connectez 3v3 à la ligne rouge et GND à la ligne bleue. Ces deux «rails» (comme on les appelle) fourniront le sol et l’alimentation pour l’ensemble de la planche à pain.

Connectez le capteur de température comme indiqué, avec un fil de connexion mâle / mâle allant vers le «rail» inférieur Raspberry Le sol de Pi (GND). Connectez le fil rouge à l’aide d’un cavalier au «rail» 3v3 en bas. Cela alimente le capteur de température en énergie.

BornierSi vous utilisez le capteur étanche, vous pouvez avoir des problèmes pour enfoncer les brins de fil dans les trous de la planche à pain. J’utilise un bornier et visse les fils dedans.

L’autre extrémité de la résistance doit être insérée dans une autre colonne de la planche à pain, entre le fil rouge du capteur de température et le cavalier connecté au ‘rail’ 3v3. Le fil jaune va dans une colonne avec une extrémité de la résistance de 4,7 k ohms et un autre fil de connexion (montré en jaune) qui va à la broche 4. GPIO. Le programme lira la température à partir de cette broche.

Connexion du DS18B20 à votre Raspberry Pi

Configurer votre Raspberry Pi

Avant de pouvoir utiliser des appareils à 1 fil, vous devez d’abord indiquer au Raspberry Pi comment les lire. Ouvrez une fenêtre de terminal et saisissez ce qui suit pour modifier le fichier de configuration du Raspberry Pi:

sudo nano /boot/config.txt

Regardez s’il y a une ligne qui a dtoverlay=w1-gpio en elle. Sinon, ajoutez ce qui suit à la fin du fichier:

dtoverlay=w1-gpio

Maintenant, redémarrez le Raspberry Pi:

sudo reboot

Pour tester la configuration, configurez le circuit ci-dessus pour connecter le DS18B20 et tapez ce qui suit dans une fenêtre de terminal:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls

Cette liste répertorie tous les périphériques connectés à l’interface 1 fil. Le capteur Dallas DS18B20 commence par «28 -» suivi d’un nombre long. Tapez ce qui suit, en remplaçant le «xxxx» par le texte qui suit le «28 -»:

cd 28-xxxx
cat w1_slave

En réponse, vous devriez obtenir les informations suivantes montrant que le DS18B20 fonctionne:

a3 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES
a3 01 4b 46 7f ff 0e 10 d8 t=32768

Lecture depuis le capteur

Créez un nouveau script python à partir d’une fenêtre de terminal (avec nano 3-temperature.py) ou à partir d’IDE, l’environnement de développement interactif. Entrez l’exemple de code suivant:

# Import Libraries
import os
import glob
import time
 
# Initialize the GPIO Pins
os.system('modprobe w1-gpio')  # Turns on the GPIO module
os.system('modprobe w1-therm') # Turns on the Temperature module
 
# Finds the correct device file that holds the temperature data
base_dir="/sys/bus/w1/devices/"
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
 
# A function that reads the sensors data
def read_temp_raw():
  f = open(device_file, 'r') # Opens the temperature device file
  lines = f.readlines() # Returns the text
  f.close()
  return lines
 
# Convert the value of the sensor into a temperature
def read_temp():
  lines = read_temp_raw() # Read the temperature 'device file'
 
  # While the first line does not contain 'YES', wait for 0.2s
  # and then read the device file again.
  while lines[0].strip()[-3:] != 'YES':
    time.sleep(0.2)
    lines = read_temp_raw()
 
  # Look for the position of the '=' in the second line of the
  # device file.
  equals_pos = lines[1].find('t=")
 
  # If the "=' is found, convert the rest of the line after the
  # '=' into degrees Celsius, then degrees Fahrenheit
  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
 
# Print out the temperature until the program is stopped.
while True:
  print(read_temp())
  time.sleep(1)

Pour exécuter le code, vous devez être le super utilisateur, exécutez donc le code avec:

sudo python temperature.py

Observez maintenant la température du capteur pendant que vous le tenez ou mettez-le dans un verre d’eau (si vous en avez un étanche!).

  • AZDelivery 2 x 1m DS18B20 Cable Capteur de Température Numérique TO92-55 - +125°C en Acier Inoxydable, Imperméable Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ Les capteurs de température AZDelivery avec DS18B20 original, de haute qualité avec boîtier en acier inoxydable (6 x 30mm). ✅ Le capteur de température DS18B20 vous permettra de mesurer et de lire facilement la température via les bibliothèques disponibles et open-source. ✅ Notre capteur de température DS18B20 peut être utilisé avec Raspberry Pi et microcontrôleur. ✅ Avec les capteurs de température AZDelivery imperméables, vous pouvez maintenant mesurer des températures comprises entre -55 et 125 degrés Celsius en dessous de l'eau. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • DS18B20 Capteur De Température ​Étanche 1M 5Pcs Sonde de Température Numérique Étanche en Acier Inoxydable Compatible Avec Capteur Température Arduino Raspberry Pi Et Microcontrôleur
    Matériau de qualité : DS18B20 le capteur de température numérique adopte une conception étanche, un emballage de tube en acier inoxydable de qualité, résistant à l'humidité et à la rouille, qui Scellé avec de la résine époxy, une conductivité thermique élevée, une résistance aux chocs, une résistance élevée à ​peut être appliqué pendant une longue périod. Paramètre du produit: l'alimentation 3.0V - 5.5V, la résolution réglable est de 9 à 12 bits et la plage de température est de -55 ℃ à + 125 ℃; Câble de sortie: rouge (VCC), jaune (DATA), noir (GND). Capteur de température DS18B20: ces câbles thermiques numériques de température ont une longueur totale de 1 mètre/ 40 pouces, et le boîtier en acier inoxydable de 6 x 50 mm, longueur suffisante pour votre utilisation. Application: ce capteur de température DS18B20 est compatible avec Arduino et Raspberry Pi, adapté aux contrôles thermostatiques, aux systèmes industriels, aux thermomètres, à tout système thermosensible, etc. Cntenu de l'emballage: vous obtiendrez des DS18B20 capteurs de température de 5pièces, qui sont pratiques pour votre projet à utiliser et qui répondent à vos besoins quotidiens d'utilisation et de remplacemen.