Raspberry Pi Home Server - Utiliser une sonde de température étanche DS18B20


Achtung : Dieser Artikel wurde automatisch von Google Translate übersetzt


Advertencia : Este artículo ha sido traducido automáticamente por Google Translate


Si vous voulez utiliser le Raspberry pour prendre la température d’un liquide ou à l’extérieur, vous pouvez y connecter une sonde étanche à base d’un capteur DS18B20.

Raspberry Pi Home Server - Utiliser une sonde de température étanche DS18B20

Pour ceux qui cherchent cette sonde, je l’ai commandé sur eBay chez e_goto pour la somme de 2.49$ frais de port compris ! (Sinon ici sur Amazon beaucoup plus rapide) Réception à la maison en une semaine avec le reste des composants (surprise pour les prochains tutoriels).

Voici en image ce que vous devez avoir pour l’utiliser :

PicMonkey Collage

Pour la partie électronique, il vous faut les habituels câbles, la breadboard, le Raspberry Pi et une résistance entre 4.7KΩ et 10KΩ. Si comme moi vous n’avez pas tout de suite sous la main une résistance avec la bonne valeur, vous pouvez combiner deux résistances pour que leur somme soit la valeur souhaitée. Pour information, j’ai pris des résistances de 4.3KΩ et de 1.3KΩ.

L’assemblage est est lui aussi relativement simple. La sonde que j’ai reçue avait trois fils : rouge, noir et blanc. Voici comment je l’ai connectée au Raspberry :

Raspberry Pi Home Server - Utiliser une sonde de température étanche DS18B20 Raspberry Pi Home Server - Utiliser une sonde de température étanche DS18B20

Le schéma avec Fritzing, les couleurs des fils correspondent aux couleurs des fils de la sonde :

DS18B20.fzz_-_Fritzing_-__Vue_de_la_platine_d_essai_

Reste maintenant à configurer le Raspberry pour lire la valeur de la température.

  1. Mettre à jour le système
    apt-get update && apt-get upgrade -y
  2. Charger les modules du kernel pour prendre en charge le capteur. w1-gpio est le module pour les capteurs avec un seul fil, w1-therm est celui pour les sondes de température.
    modprobe w1-gpio
    modprobe w1-therm

    Si vous souhaitez les charger à chaque démarrage du Raspberry, il faut alors modifier le fichier /etc/modules en y ajoutant les lignes

    w1-gpio
    w1-therm
  3. Le chargement des modules a créé des informations dans le répertoire /sys/bus/w1/devices. Vous devez y retrouver votre sonde sous la forme d’un répertoire dont le nom commence par 28-. Dans ce répertoire vous aurez un fichier contenant la température mesurée. Elle sera mise à jour à chaque fois que vous irez lire le contenu du fichier. Voici un exemple complet pour avoir la température :
    1._ssh-11Chez moi, 21.5°C. La valeur est toujours en degrés Celsius.
  4. Pour récupérer la valeur, plusieurs techniques sont possibles :
    1. La ligne de commande :
      find /sys/bus/w1/devices/ -name "28-*" -exec cat {}/w1_slave \; | grep "t=" | awk -F "t=" '{print $2/1000}'
    2. En Python, retrouvez l’exemple d’Adafruit sur cette page

Vous voilà maintenant équipé pour mesurer la température.

Vous aimerez aussi...

  • taillez

    Bonjour,
    avez vous effectuer des tests concernant les longueurs de câble ainsi qu’en nombre de capteur .
    Car chez moi il apparaît qu’au delà de 1m avec 2 sondes (la première à 50cm et l’autre à 1m).Cela ne fonctionne plus et le pi ne détecte plus qu’une sonde.

    Je suis donc passer en 5v (comme le montage en arduino) et cela ne fonctionne guerre mieux.
    J’aurai bien aimer confronter nos essais car je ne trouve aucun site qui traite des longueurs de câble possible ainsi que du nombre max que nous pouvons mettre sur un raspberry PI.

    Merci d’avance

    • Bonjour,
      Pas de test dans ce sens. Je n’ai qu’une sonde et j’utilise le cable par défaut avec une rallonge de 20cm soit un total de 140cm. Je reçois bien la température.

  • arnaud

    Bonjour,
    Merci pour ce tuto car on voit beaucoup d’article qui utilise le RasberryPi mais couplé à un « Contrôleur USB 1-Wire DS9490R ».
    S’il peut se passer d’un autre module pour faire des relevé de température, c’est plutôt interessant!!!
    Vous avez la possibilités de nous détailler votre schéma de câblage?
    Peut on mettre en parallèle plusieurs sonde?

    • Oups j’ai oublié de mettre le schéma. C’est corrigé dans l’article avec une image en plus

    • twixer

      Oui on peut mettre plusieurs sondes en parallèle.
      Il y aura plusieurs répertoires dans /sys/bus/w1/devices/ avec des noms commençants par 28-*, un pour chaque sonde.

  • Hello,
    Voici le même type de montage avec une comparaison avec une sonde analogique et un convertisseur analogique/numérique sur Raspberry Pi : http://www.magdiblog.fr/gpio/gpio-capteurs-de-temperature/

  • NBO

    Bonjour,
    Pour ma part, je mets en place un réseau 1wire avec un grand nombre de périphériques (~20 ou 30 pour commencer) dans ma maison. Après avoir fait un peu le tour de ce que j’ai trouvé sur le web, et de mes propres expériences :
    * J’ai essayé de relier plusieurs sondes 18B20 en parallèle sur le GPIO du Pi. Je monte à 10 sondes au maximum. Au-delà, certaines sondes disparaissent alternativement. Ce n’est plus assez robuste, en 3v3 comme en 5v.
    * Je l’ai fait fonctionner avec un peu moins de 3m de câble : c’est OK. J’ai essayé avec une bobine de 100m de câble RJ45 Cat5e : Ca ne fonctionne plus.
    * D’après ce que je comprends de mes lectures, notamment sur le site du constructeur (très technique, énormément de précautions à prendre, hélas aucune proposition de schéma de montage « qui fonctionne »), j’imagine que le GPIO du Pi « fait » du 1wire, mais ne vaut pas un vrai bus master 1Wire.
    * On peut semble-t-il mettre plusieurs dizaines de composants pour un bus master, avec quelques dizaines de mètres de câble au total, à condition de garder une topologie avec un seul bus et des « stubs » pas trop longs (<3m) sur ce bus. Pas d'étoile. Pas de mode parasite.
    * Utiliser pour le bus un câble réseau à paires torsadées Cat5e ou mieux, câblé selon un schéma proposé sur http://owfs.org/index.php?page=wiring-standards
    * Pour réaliser un réseau plus complet, en étoile, et me permettre de mettre un grand nombre de périphériques sans trop soigner le réseau, j'ai acheté la carte http://www.sheepwalkelectronics.co.uk/RPI3.shtml : 8 bus master sur un controlleur i2c. Immédiatement compatible avec le Pi, avec OWFS. Toutes mes sondes des différents réseaux apparaissent ensemble et j'accède à chacune indifféremment. Les bus masters sont bien meilleurs que le branchement direct sur le Pi. J'ai fait le test avec 21 composants sur le même bus : ça fonctionne. J'espère faire plus bientôt.
    * Question impédance de ligne, CEM, etc, j'envisage de prendre les précautions suivantes, pour un bus de quelques dizaines de mètres, sortant de la maison, en contact avec le sol (foudre) : Capas de découplage sur les fils d'alim, proches des sondes éloignées (typiquement 100nF + 10 à 100µF). Diode zener de "un peu plus" de 5v en inverse entre +5v et la masse pour protéger d'éventuelles surtensions différentielles. Une près du contrôleur, et une à la sortie de la maison, par exemple. Deux diodes en inverse entre la masse et le signal, et entre le signal et le +5v, proches du contrôleur, pour le protéger en cas de surtension sur un des fils. Des résistances en série sur l'entré "Signal" de chaque sonde, d'impédance égale à l'impédance de ligne (typ. 100ohms), pour atténuer l'écho sur la ligne.
    Je m'apprête à câbler tout ça, j'espère avoir pris toutes les précautions pour de bons résultats.

  • twixer

    hello,
    j’ai suivi le schéma de Fritzing et ma sonde chauffait anormalement.
    En suivant les indications sur http://www.magdiblog.fr/gpio/gpio-capteurs-de-temperature/ ça allait mieux (voici l’image : http://www.magdiblog.fr/wp-content/uploads/2013/12/raspberry_pi_ds18b20.png).
    A part ces branchements, tout le reste fonctionne bien.
    En tout cas, merci pour l’article !

    • Salut,
      Bonne nouvelle si ca fonctionne. Je t’avoue ne pas voir la différence entre les deux schémas mais si ca fonctionne c’est l’essentiel 😉

    • Rinty35

      Si la sonde chauffe c’est un problème de branchement. Inversion entre la masse et le +3,3v (ou 5v)

  • Rinty35

    Attention Si les couleurs sont bonnes sur le schéma de montage proposé ci dessus, il ne correspond pas aux pattes du capteur DS18B20.
    regardez la doc technique, http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
    quand on regarde le capteur par le bas nous avons de gauche à droite :
    La masse - La data (à connecter sur l’entrée GPIO) - L’alimentation (sur le 3,3v)

    Ce que je ne sais pas c’est si quand on l’alimente en 5v la tension de sortie connecté en GPIO est de 5v.
    Je suppose que oui dans ce cas il est nécessaire de mettre deux résistances complémentaires

  • Tom

    Bonjour,

    très bon article. Je viens de recevoir ma sonde et je compte complèter mon installation pour piloter ma chaudière. Par contre, ma sonde a trois fil avec les couleur suivante : rouge, blanc et transparent. J’en déduis que le blanc c’est le fil des data et le rouge celui de la masse. Est-ce que j’ai tout bon?

    Merci

    • Bizarre comme couleurs mais si la sonde chauffe après avoir été branchée, c’est que le branchement n’est pas bon. J’ai eu le cas la première fois et elle fonctionne toujours
      Du coup est ce que pour les data c’est blanc ou transparent, je ne sais pas 🙁

  • Tom

    Résolu : Fil transparent = masse et fil blanc = data.
    J’ai deux resistances en série 4,6k et 200 soit 4,8k. Ca marche nikel.
    Le petit script suivant me donne la temperature n’ayant qu’une sonde :


    t=`cat /sys/bus/w1/devices/28*/w1_slave|grep "t="|awk -F"t=" '{print $2/1000}'`
    if [ $? -ne 0 ]
    then
    exit 1
    else
    if [ "$1" = "-c" ]
    then
    echo "$t°C"
    else
    echo $t
    fi
    exit 0
    fi

    Merci et amusez vous avec le RasPi

  • Tom

    Mes dernières questions :

    -la sonde a besoin de 3,3V. La carte relai que j’utilise pour piloter la chaudiere a besoin de 5v. Est-ce que je peux utiliser le même connecteur GROUND sans risque de griller la sonde ou le rasp?
    -pourquoi la commande GPIO prend en paramètre 0 pour écrire sur le GPIO 4 et non 4. par exemple si je veux ecrire 1 sur le gpio 4 il faut la commande : gpio write 0 1????
    Merci

  • piRstone

    Bonjour,

    tout marche bien pour moi enfin presque.
    J’aimerai afficher la valeur de la température dans une page web en php.
    J’ai donc décidé de faire la commande find dans un exec() et de récupérer la valeur du retour (qui est un array() ) sauf que ce tableau est vide (un print-r() me retourne « Array() »)
    Comment récupérer la température dans une variable du coup ?
    Merci d’avance.

  • LordK1

    Bonjour,

    Si je lis bien la notice technique de la sonde, le schéma présenté ici est faux.
    Vu du dessus, et la partie bombée de la DS18B20 vers le bas, de gauche à droite, nous avons GRD/DATA/VCC

    Voir à l’adresse suivante : http://www.datasheetdir.com/DS18B20+Temperature-Sensors

Handpicked links

Mise en cache objet de 2124/2386 objets utilisant disk Mise en cache utilisant disk: enhanced Mise en cache de base de données 17/67 requêtes dans 0.043 secondes utilisant disk Served from: pihomeserver.fr @ 2017-07-18 18:48:58 by W3 Total Cache -->