DS18B20 + Capteur de température numérique à un fil et Raspberry Pi

DS18B20 + Capteur de température numérique à un fil et Raspberry Pi

REMARQUE: Si vous utilisez le dernier logiciel pour votre Pi (que vous devriez être), vous devrez modifier le fichier texte de configuration de démarrage:

Ajoutez la ligne suivante à /boot/config.txt

dtoverlay = w1-gpio

Dans les didacticiels précédents, nous avons décrit l’intégration de capteurs et de commutateurs simples avec le Raspberry Pi. Ces composants ont eu une sortie marche / arrêt simple ou haute / basse, qui est détectée par le Raspberry Pi. Notre didacticiel sur les capteurs de mouvement PIR, par exemple, dit simplement «oui, j’ai détecté un mouvement».

Alors, que se passe-t-il lorsque nous connectons un capteur plus avancé et que nous voulons lire des données des données plus complexes? Dans ce didacticiel, nous allons connecter un thermomètre numérique à 1 fil et programmer notre Raspberry Pi pour lire la sortie à la température qu’il détecte!

Dans les capteurs à 1 fil, toutes les données sont envoyées sur un seul fil, ce qui le rend idéal pour les microcontrôleurs tels que le Raspberry Pi, car il ne nécessite qu’une seule broche GPIO pour la détection. En plus de cela, la plupart des capteurs à 1 fil seront livrés avec un code série unique (plus de détails plus tard), ce qui signifie que vous pouvez connecter plusieurs unités jusqu’à un microcontrôleur sans qu’elles interfèrent les unes avec les autres.

Le capteur que nous allons utiliser dans ce didacticiel est le thermomètre numérique à 1 fil à résolution programmable Maxim DS18B20 +. Le DS18B20 + a une disposition similaire aux transistors appelés boîtier TO-92, avec trois broches: GND, Data (DQ) et ligne d’alimentation 3,3 V (VDD). Vous aurez également besoin de cavaliers, d’une planche à pain et d’un 4.7k? (ou 10k?) résistance.

DS18B20 Capteur de temperature numerique a un fil et

La résistance dans cette configuration est utilisée comme un «pull-up» pour la ligne de données, et doit être connectée entre la ligne DQ et VDD. Il garantit que la ligne de données à 1 fil est à un niveau logique défini et limite les interférences dues au bruit électrique si notre broche était laissée flottante. Nous allons également utiliser GPIO 4 [Pin 7] comme broche pilote pour détecter la sortie du thermomètre. Il s’agit de la broche dédiée à la détection GPIO 1 fil.

Accrocher

1. Connectez GPIO GND [Pin 6] sur le Pi au rail négatif sur la planche à pain et connectez GPIO 3.3V [Pin 1] sur le Pi au rail positif sur la planche à pain.

2. Branchez le DS18B20 + dans votre maquette, en vous assurant que les trois broches sont dans des rangées différentes. Familiarisez-vous avec la disposition des broches, car il est assez facile de la brancher en arrière!

3. Connectez DS18B20 + GND [Pin 1] au rail négatif de la planche à pain.

4. Connectez DS18B20 + VDD [Pin 3] au rail positif de la planche à pain.

DS18B20 Capteur de temperature numerique a un fil et

5. Placez votre 4.7k? résistance entre DS18B20 + DQ [Pin 2] et une rangée gratuite sur votre planche à pain.

6. Connectez cette extrémité libre du 4.7k? résistance au rail positif de la planche à pain.

1593401406 17 DS18B20 Capteur de temperature numerique a un fil et

7. Enfin, connectez DS18B20 + DQ [Pin 2] à GPIO 4 [Pin 7] avec un cavalier.

1593401406 556 DS18B20 Capteur de temperature numerique a un fil et

C’est tout; nous sommes maintenant prêts pour une programmation!

Programmation

Avec un peu de configuration, le DS18B20 + peut être lu directement à partir de la ligne de commande sans avoir besoin de programmes Python. Cependant, cela nous oblige à saisir une commande chaque fois que nous voulons connaître la lecture de la température. Afin d’introduire certains concepts d’interfaçage 1-Wire, nous y accèderons d’abord via le terminal, puis nous écrirons un programme Python qui lira automatiquement la température à des intervalles de temps définis.

Le Raspberry Pi est équipé d’une gamme de pilotes pour l’interfaçage. Cependant, il n’est pas possible de charger chaque pilote au démarrage du système, car cela augmentera considérablement le temps de démarrage et utilisera une quantité considérable de ressources système pour les processus redondants. Ces pilotes sont donc stockés sous forme de modules chargeables et la commande modprobe est utilisé pour les démarrer dans le noyau Linux quand ils sont nécessaires. Les deux commandes suivantes chargent les pilotes 1 fil et thermomètre sur GPIO 4.

sudo modprobe w1-gpio
sudo modprobe w1-therm

Nous devons ensuite changer de répertoire CD dans notre dossier et liste d’appareils à 1 fil ls les appareils afin de s’assurer que notre thermomètre est correctement chargé.

cd / sys / bus / w1 / périphériques /
ls

Dans les pilotes de périphérique, votre capteur doit être répertorié comme une série de chiffres et de lettres. Dans ce cas, l’appareil est enregistré sous le numéro 28-000005e2fdc3. Vous devez ensuite accéder au capteur avec le CD en remplaçant notre numéro de série par le vôtre.

cd 28-000005e2fdc3

Le capteur écrit périodiquement dans le fichier w1_slave, nous utilisons donc simplement le chat commande pour le lire.

chat w1_slave

Cela donne les deux lignes de texte suivantes, avec la sortie t = montrant la température en degrés Celsius. Un point décimal doit être placé après les deux premiers chiffres, par exemple, la lecture de température que nous avons reçue est de 23,125 degrés Celsius.

72 01 4b 46 7f ff 0e ​​10 57: crc = 57 OUI

72 01 4b 46 7f ff 0e ​​10 57 t = 23125

1593401407 333 DS18B20 Capteur de temperature numerique a un fil et

En termes de lecture depuis le module, c’est tout ce qui est requis du terminal. Essayez de tenir le thermomètre et de prendre une autre lecture! Avec ces commandes à l’esprit, nous pouvons écrire un programme Python pour sortir automatiquement nos données de température.

Programme Python

Notre première étape consiste à importer les modules requis: os nous permet d’activer nos pilotes 1-Wire et d’interfacer avec notre capteur, et temps permet à notre Raspberry Pi de définir l’heure, et permet l’utilisation de périodes dans notre code.

importer os
temps d’importation

Nous devons ensuite charger nos pilotes:

os.system (‘modprobe w1-gpio’)
os.system (‘modprobe w1-therm’)

L’étape suivante consiste à définir le fichier de sortie de notre capteur (le fichier w1_slave) comme défini ci-dessus. N’oubliez pas d’utiliser le code de série de votre propre capteur de température!

temp_sensor = ‘sys / bus / w1 / devices / 28-000005e2fdc3 / w1_slave’

Nous devons ensuite définir une variable pour notre valeur de température brute (temp_raw); les deux lignes produites par le capteur démontrées avec notre exemple de terminal. Nous pourrions simplement imprimer cette déclaration maintenant. Cependant, nous allons le transformer en quelque chose de plus utilisable. Ainsi, nous ouvrons, lisons, enregistrons puis fermons notre fichier de température. Nous utilisons ici la fonction de retour, afin de rappeler ces données à un stade ultérieur de notre code.

def temp_raw ():

f = ouvert (temp_sensor, ‘r’)
lines = f.readlines ()
f.close ()
lignes de retour

Tout d’abord, nous vérifions notre variable de la fonction précédente pour toute erreur. Si vous étudiez notre sortie d’origine telle que définie dans l’exemple du terminal, nous obtenons deux lignes de code (ligne 0 = 72 01 4b 46 7f ff 0e ​​10 57: crc = 57 OUI); nous bande cette ligne à l’exception des trois derniers chiffres, et vérifiez le signal «OUI», indiquant une lecture de température réussie du capteur. En Python, non-égal est défini comme «! =», Donc ici, nous disons alors que la lecture n’est pas égale à OUI, veillez pendant 0,2 s et répétez.

def read_temp ():

lines = temp_raw ()
tandis que les lignes[0].bande()[-3:] ! = ‘OUI’:
time.sleep (0,2)
lines = temp_raw ()

Une fois que le programme est satisfait de la réception du signal OUI, nous passons à notre deuxième ligne de code de sortie (ligne 1 = 72 01 4b 46 7f ff 0e ​​10 57 t = 23125). nous trouver notre sortie de température « t = », vérifiez les erreurs, bande la sortie de la phrase « t = » pour ne laisser que les chiffres de température et exécuter deux calculs pour nous donner les chiffres en degrés Celsius et Fahrenheit.

temp_output = lignes[1].find (‘t = « )

si temp_output! = -1:
temp_string = lignes[1].bande()[temp_output+2:]
temp_c = float (temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
retour temp_c, temp_f

Enfin, nous bouclons notre processus et lui disons de sortir nos données de température toutes les 1 seconde.

tandis que True:
print (read_temp ())
time.sleep (1)

Voilà donc notre code!

1593401407 559 DS18B20 Capteur de temperature numerique a un fil et

Enregistrez votre programme (je l’ai enregistré sous temp_2.py) et exécutez-le avec Python pour obtenir la sortie de température:

sudo python temp_2.py

1593401407 355 DS18B20 Capteur de temperature numerique a un fil et

Les capteurs DS18B20 + peuvent être exécutés en parallèle et accessibles à l’aide de leurs répertoires série uniques. L’exemple Python ci-dessus peut être modifié pour accéder et lire à partir de plusieurs capteurs!

  • Lot de 2 modules de capteur de température DS18B20 avec sonde étanche en acier inoxydable, TO-92 pour Arduino et Raspberry Pi
    Kit module capteur de température : résistance de traction incluse sur le module adaptateur, se connecte directement au GPIO du Raspberry Pi. DS18B20 TO-92 : thermomètre numérique à 1 fil avec résolution programmable (doit être utilisé avec une résistance de traction). Convient pour : la sonde en acier inoxydable peut mesurer la température directement dans l'eau ou le sol et elle est largement utilisée dans la surveillance de la température pour les aquariums, les équipements, les machines, les serres. Ce que vous obtenez : 2 ensembles de module de capteur de température (capteur de température DS18B20, adaptateur de terminal enfichable, câble à 3 broches) et 2 pièces DS18B20 TO-92. Service après-vente : si vous avez des questions, n'hésitez pas à nous contacter, nous vous fournirons des solutions satisfaisantes.
  • 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.
  • Weewooday 20 Pièces Capteur de Température DS18B20 Technologie d'Interface à Un Fil avec TO-92 à 3 Broches Compatible avec Arduino/ Raspberry Pi
    À propos des paramètres: le modèle est DS18B20, le nombre de broches est de 3; L'alimentation en tension est de 3 V-5,5 V, la résolution de la température est de 9 à 12 bits et la température de détection est de -55 ° C + 125 ° C, la précision est de ± 0,5 ° C Capteur de température numérique à un fil DS18B20: l'interface unique à 1 fil ne nécessite qu'une seule broche de port pour la communication, elle ne nécessite qu'une seule ligne de données et GND pour communiquer avec vos microcontrôleurs 3 broches: le capteur DS18B20 a 3 broches séparées pour GND, DATA et VDD; DATA est la borne d'entrée ou de sortie du signal numérique; GND est la masse d'alimentation; VDD est la borne d'entrée d'alimentation externe 2 modes: le capteur de température peut fonctionner en mode normal ou parasite, en mode normal, chaque capteur est connecté entre une ligne d'alimentation (Vdd) et la masse (GND), et la sortie de données (DATA) se connecte à une troisième ligne de données; En mode parasite, GND et Vdd doivent être connectés à la terre Large application: le capteur de température DS18B20 peut être appliqué pour les contrôles thermostatiques, les systèmes industriels, les produits de consommation, les thermomètres ou tout système thermosensible