<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>
    <meta name="generator" content="HTML Tidy, see www.w3.org">
    <!-- this stylesheet will later on be added by lfparser automatically: -->
<style type="text/css">
<!--
  pre { font-family:monospace,Courier }
  pre.code { font-family:monospace,Courier;background-color:#aedbe8; }
  p.code { width:80%; alignment:center; background-color:#aedbe8;
        border-style:none; border-width:medium; border-color:#aedbe8;
        padding:0.1cm ; text-align:left }
-->
</style><title></title></head>


  <body>
    <h1>Surveillance de température avec Linux</h1>

    <h4>ArticleCategory: [Choose a category, translators: do not
    translate this, see list below for available categories]</h4>
    Hardware 

    <h4>AuthorImage:[Here we need a little image from you]</h4>
    <img src="../../common/images/stefan_blechschmidt.jpg" alt="Stefan Blechschmidt" width="100" height="121"> 

    <h4>TranslationInfo:[Author + translation history. mailto: or
    http://homepage]</h4>

    <p>original in de <a href="mailto:sb/at/sbsbavaria.de">Stefan Blechschmidt</a></p>
    <p>de to en <a href="mailto:sept.sapins/at/verizon.net">Jürgen Pohl</a></p>
    <p>en to fr <a href="mailto:iznogood@iznogood-factory.org">Iznogood</a></p>
    <h4>AboutTheAuthor:[A small biography about the author]</h4>

    <p>Electricien confirmé, je me suis retrouvé, en 1990, devant une station de travail à faire du développement d'une station de contrôle et de commutation. J'ai, bien évidement été infecté par un « virus » inconnu mais c'était parfait.</p>

    <h4>Abstract:[Here you write a little summary]</h4>

    <p>Les serveurs Linux effectuent leur travail d'une manière fiable et en sécurité. Ils n'ont pas besoin d'attentions spéciales, ils travaillent, travaillent et travaillent... Mais que se passe-t-il si le pingoin devient trop chaud ? L'été passé vient de nous le montrer : nous devrions équiper notre petit ami avec un système de surveillance de la température. Cet article vous montrera comment en installer un facilement pour 10 Euros.<br>
    </p>

    <h4>ArticleIllustration:[One image that will end up at the top
    of the article]</h4>
<img src="../../common/images/article315/titelbild.gif" alt="title image" width="200" height="252">


    <h4>ArticleBody:[The main part of the article]</h4>

    <h2>Les Composants</h2>

    <p><a href="http://www.brianlane.com/">Brian C.Lane</a> a écrit un programme pour le capteur de température <a href="http://www.dalsemi.com/">DS1820 de DALLAS Semiconductor</a>. 
    Il n'est pas difficile d'assembler un système de contrôle de température avec ces deux composants et quelques autres.</p>

    <p><b>Note :</b><br>
    Brian C.Lane a modifié sa page et adapté la version que j'utilise. Vous pouvez donc le télécharger sur :
    <a href="http://main.linuxfocus.org/common/src/article315/digitemp-1.3.tar.gz">digitemp-1.3.tar.gz</a>
<br>
<br>
 Ceux qui souhaitent utiliser la version actuelle <i>digitemp-3.2.0.tar.gz</i> peuvent la télécharger sur <a href="http://www.digitemp.com/software.shtml">http://www.digitemp.com/software.shtml</a>
    .</p>

    <h2>Le Capteur</h2>

    <p>
    </p><p><img src="../../common/images/article315/sensor-anschluss.png" border="0" alt="Sensor pinout" width="129" height="218">
                        
           <img src="../../common/images/article315/sensor.png" border="1" alt="Sensor picture" width="83" height="157"><br>

    Le capteur avait été initialement produit par DALLAS Semiconductor qui a fusionné en <a href="http://www.dalsemi.com/">Maxim/Dallas Semiconductor</a>.
    Selon les spécifications techniques, le capteur peut mesurer les températures de  -55°C à 125°C. Les données de mesure sont générées comme un signal numérique avec une largeur de 9 bits. De plus, chaque capteur possède un identifiant sur 64 bits, permettant une connexion sur bus de plusieurs capteurs. Il est possible d'utiliser 100 capteurs sur un bus ayant une longueur de 300m .<br>
    Le circuit que nous présentons ici ne devrait fonctionner que pour 10 capteurs sur un bus de 60m. J'utilise actuellement 4 capteurs sur un bus d'environ 12m.</p>

    <p>Vous pouvez trouver plus d'informations à propos de ce capteur sur cette <a href="http://pdfserv.maxim-ic.com/en/ds/DS1820-DS1820S.pdf">Fiche Technique</a>.</p>

    <p>Je voudrais simplement ajouter que le circuit présenté ici ne peut faire de mesures que jusqu'à 75°C, ce qui devrait être suffisant pour notre application.</p>

    <h2>Les Autres Composants</h2>

    <p>Pour pouvoir connecter le capteur à une interface série, nous avons besoin de composants supplémentaires. Vous les trouverez dans la plupart des boutiques vendant les composants au détail, sur internet ou mieux dans la boutique électronique du coin.</p>

    <table border="1">
      <tbody>
        <tr>
          <th>Quantité</th>

          <th>Identification</th>

          <th>Type</th>

          <th>alter.Type</th>
        </tr>

        <tr>
          <td>1</td>

          <td>Résistance</td>

          <td>1,5 k Ohm</td>

          <td>--------</td>
        </tr>

        <tr>
          <td>2</td>

          <td>Diode Schottky</td>

          <td>1N5818</td>

          <td>BAT 43</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Diode Zener</td>

          <td>1N5228</td>

          <td>ZPY 3,9V</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Diode Zener</td>

          <td>1N5234</td>

          <td>ZPY 6,2V</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Capteur</td>

          <td>DS18S20</td>

          <td>--------</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Connecteur, Série</td>

          <td>RS232C/9</td>

          <td>--------</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Protection de Connecteur</td>

          <td>SUB-D/9</td>

          <td>--------</td>
        </tr>

        <tr>
          <td>1</td>

          <td>Circuit</td>

          <td>Prépercé</td>

          <td>--------</td>
        </tr>
      </tbody>
    </table>

    <h2>Design of the Interface</h2>

    <p>Comme le circuit d'interface est très simple, j'ai choisi une plaque d'essai. Désolé pour la qualité des soudures
    :-).</p>

    <p><br>
    <img border="0" src="../../common/images/article315/schaltplan.png" alt="circuit diagram" width="637" height="330"><br>
    </p>

    <p><br>
    <img src="../../common/images/article315/aufbau1.png" border="1" alt="board front side" width="200" height="147">
          
           <img src="../../common/images/article315/aufbau2.png" border="1" alt="board back
side" width="200" height="143"></p>


    <p>Avec un peu d'adresse, les composants peuvent être installés sur le connecteur de l'interface série.</p>

    <p><b>Note</b><br>
    Sur cette page de <a href="http://www.linuxnetmag.com/de/issue8/m8temperature1.html">LinuxNetMag,</a>
    nous pouvons trouver un article sur <i>digitemp</i> et aussi un forum décrivant un circuit pour les mesures au dessus de 75°C. Je n'ai pas encore testé ce circuit.</p>

    <h2>Le Circuit de l'Interface Série</h2>

    <p>Pour notre circuit d'interface, seuls deux contacts du capteur sont nécessaires, le connecteur V<sub>DD</sub> peut être enlevé. C'est ce que j'ai fait :-).</p>

    <p align="right">
<img src="../../common/images/article315/sensor_notuse.png" border="0" alt="pin not used"> 


    </p><p>Vous avez ici la table du circuit de la carte d'interface, le capteur et l'interface série.</p>

    <table border="1">
      <tbody>
        <tr>
          <td><b>Description</b> </td>

          <td><b>DB-25</b> </td>

          <td><b>DB-9</b> </td>

          <td><b>Capteur</b> </td>
        </tr>

        <tr>
          <td>DTR</td>

          <td>20</td>

          <td>4</td>

          <td>Données (PIN 2)</td>
        </tr>

        <tr>
          <td>RXD</td>

          <td>3</td>

          <td>2</td>

          <td>GND (PIN 1)</td>
        </tr>

        <tr>
          <td>TXD</td>

          <td>2</td>

          <td>3</td>

          <td> </td>
        </tr>

        <tr>
          <td>GND</td>

          <td>1 et 7</td>

          <td>5</td>

          <td> </td>
        </tr>
      </tbody>
    </table>

    <h2>Installation du Logiciel</h2>

    <p>Le logiciel est disponible comme archive <i>tar</i>, il peut être installé avec la commande :</p>
<pre class="code"> tar -xvzf digitemp-1.3.tar.gz
</pre>
    dans le répertoire actuel. 

    <p>Dans le répertoire nouvellement installé 
    <code><b>digitemp1-3</b></code>, nous trouvons le code source, la documentation et quelques scripts Perl mais aussi les exécutables de 
    <code><b>digitemp</b></code>, qui peuvent être utilisés tels quels.</p>

    <p>Si <code>digitemp</code> est appelé sans paramètres, nous aurons une présentation des paramètres présentés.</p>
<pre class="code">DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

Usage: digitemp -s&lt;device&gt; [-i -d -l -r -v -t -p -a]
                -i                            Initalize .digitemprc file
                -s/dev/ttyS0                  Set serial port
                -l/var/log/temperature        Send output to logfile
                -f5                           Fail delay in S
                -r500                         Read delay in mS
                -v                            Verbose output
                -t0                           Read Sensor #
                -a                            Read all Sensors
                -d5                           Delay between samples (in sec.)
                -n50                          Number of times to repeat
                -o2                           Output format for logfile
                -o"output format string"      See description below

Logfile formats:  1 = One line per sensor, time, C, F (default)
                  2 = One line per sample, elapsed time, temperature in C
                  3 = Same as #2, except temperature is in F
        #2 and #3 have the data seperated by tabs, suitable for import
        into a spreadsheet or other graphing software.

        The format string uses strftime tokens plus 3 special ones for
        digitemp - %s for sensor #, %C for centigrage, %F for fahrenheight.
        The case of the token is important! The default format string is:
        "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an
        output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59

</pre>

    <p>Comme « l'aide » nous l'indique, les capteurs installés doivent être initialisés. Pour ce faire, nous devons définir l'interface à laquelle est connecté le circuit, ainsi que les paramètres de l'initialisation.</p>

    <p>La commande </p>
<pre class="code">digitemp -i -s/dev/ttyS0
</pre>
    le réalise dans le cas où le circuit d'interface est connecté à la première interface série. 

    <p>Le logiciel détecte les capteurs et un message ressemblant à ceci apparaît :</p>
<pre class="code">DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

ROM #0 : 1032724700080086
ROM #1 : 1092214400080089
</pre>
    Nous remarquons que le logiciel a détecté 2 capteurs. De plus, le fichier  <b><code>.digitemprc</code></b> sera créé dans le répertoire courant ; il contiendra les données du capteur, l'interface et le format de sortie. 

    <p>Avec la commande <b><code>./digitemp -a</code></b>, nous sommes alors en mesure de lire la sortie des capteurs. Veuillez noter le caractère
    <b><code>./</code></b> car nous sommes encore dans un répertoire qui ne fait pas partie du chemin de recherche courant.</p>

    <p><b>Sortie de la Mesure</b><br>
    </p>
<pre class="code">DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29
Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129

</pre>

    <h2>Adapter le Système</h2>

    <p>Pour intégrer notre programme dans le système, nous devons procéder à quelques réglages.</p>

    <p>Nous devons d'abord copier les exécutables, i.e. 
    <code>digitemp</code>, dans un répertoire qui permet l'exécution de programmes sans en spécifier le chemin. J'ai sélectionné <code>/usr/local/bin/</code> pour ce faire. Ceux qui n'en sont pas sûr peuvent trouver les chemins avec <code><b>echo
    $PATH</b></code>. De plus, le fichier <code>.digitemprc</code>, contenant les données d'initialisation, doit être copié dans le répertoire de l'utilisateur qui effectue les mesures. Pour sauvegarder les données dans un fichier et pas sur la console, le switch <code>-l[PATH/FILE NAME]</code> doit être appliqué.</p>

    <h3>Mesures Automatiques</h3>

    <p>Nous avons besoin d'automatiser nos mesures, ce que 
    <i>cron</i> fera très bien pour nous. Avec <code><b>crontab -u [USER]
    -e</b></code>, nous pouvons le mettre en place pour tous les utilisateurs. L'entrée </p>
<pre class="code">0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.log
</pre>
    initialise digitemp pour faire des mesures toutes les 15 minutes et de les écrire dans <code>/var/log/digitemp.log</code> . 

    <p>Avec la commande <code>tail /var/log/digitemp.log</code>, nous pouvons lire les dernières lignes des mesures. Si le fichier 
    <code>/var/log/digitemp.log</code> n'a pas été généré, veuillez vérifier les droits d'accès des fichiers.</p>

    <h2>Commentaires Finaux</h2>

    <p>L'archive contient quelques scripts Perl pour l'interprétation graphique. Je ne vais pas les décrire ici. Je réfléchis à un autre article sur la manière de collecter les données des capteurs dans une base de données <a href="http://www.mysql.com/">mySQL</a> et sur la manière de les interpréter via une interface web..</p>

    <p>Cela sera principalement réalisé en <a href="http://www.perl.org/">Perl</a> par l'utilisation des fonctions <a href="http://www.mysql.com/">mySQL</a>, CGI et graphiques.</p>

    <h2>Téléchargements</h2>
    <a name="v1"></a><!-- 
        <ul><a href="javascript:history.back()">[1]</a></ul>
        -->

    <ul>
      <li><a href="http://main.linuxfocus.org/common/src/article315/digitemp-1.3.tar.gz">
      digitemp-1.3.tar.gz</a></li>
    </ul>

    <h2>Liens / Références</h2>

    <ul>
      <li><a href="http://www.fli4l.de/">http://www.fli4l.de/</a> -
      Page d'accueil fli4l</li>

      <li><a href="http://www.perl.org/">http://www.perl.org/</a> -
      Page d'accueil Perl</li>

      <li><a href="http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3021">Survol général de DS1820</a></li>

      <li><a href="http://pdfserv.maxim-ic.com/en/ds/DS1820-DS1820S.pdf">Fiche de Spécification DS18S20</a></li>

      <li><a href="http://www.digitemp.com/">Page Digitemp de Brian C.Lane</a></li>

      <li><a href="http://www.brianlane.com/">Page d'accueil Brian C.Lane</a></li>

      <li><a href="http://www.dalsemi.com/">Page d'accueil de Maxim/Dallas
      Semiconductor</a></li>

      <li><a href="http://www.linuxnetmag.com/de/issue8/m8temperature1.html">LinuxNetMag
      Article et Forum</a></li>
    </ul>
  <!-- vim: set sw=2 ts=2 et tw=80: -->
</body></html>