|
par Stefan Blechschmidt <sb/at/sbsbavaria.de> L´auteur: 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. Traduit en Français par: Iznogood <iznogood/at/iznogood-factory.org> |
Surveillance de température avec LinuxRésumé:
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. |
Brian C.Lane a écrit un programme pour le capteur de température DS1820 de DALLAS Semiconductor. Il n'est pas difficile d'assembler un système de contrôle de température avec ces deux composants et quelques autres.
Note :
Brian C.Lane a modifié sa page et adapté la version que j'utilise. Vous pouvez donc le télécharger sur :
digitemp-1.3.tar.gz
Ceux qui souhaitent utiliser la version actuelle digitemp-3.2.0.tar.gz peuvent la télécharger sur http://www.digitemp.com/software.shtml
.
Le capteur avait été initialement produit par DALLAS Semiconductor qui a fusionné en Maxim/Dallas Semiconductor.
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 .
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.
Vous pouvez trouver plus d'informations à propos de ce capteur sur cette Fiche Technique.
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.
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.
Quantité | Identification | Type | alter.Type |
---|---|---|---|
1 | Résistance | 1,5 k Ohm | -------- |
2 | Diode Schottky | 1N5818 | BAT 43 |
1 | Diode Zener | 1N5228 | ZPY 3,9V |
1 | Diode Zener | 1N5234 | ZPY 6,2V |
1 | Capteur | DS18S20 | -------- |
1 | Connecteur, Série | RS232C/9 | -------- |
1 | Protection de Connecteur | SUB-D/9 | -------- |
1 | Circuit | Prépercé | -------- |
Comme le circuit d'interface est très simple, j'ai choisi une plaque d'essai. Désolé pour la qualité des soudures :-).
Avec un peu d'adresse, les composants peuvent être installés sur le connecteur de l'interface série.
Note
Sur cette page de LinuxNetMag,
nous pouvons trouver un article sur digitemp et aussi un forum décrivant un circuit pour les mesures au dessus de 75°C. Je n'ai pas encore testé ce circuit.
Pour notre circuit d'interface, seuls deux contacts du capteur sont nécessaires, le connecteur VDD peut être enlevé. C'est ce que j'ai fait :-).
Vous avez ici la table du circuit de la carte d'interface, le capteur et l'interface série.
Description | DB-25 | DB-9 | Capteur |
DTR | 20 | 4 | Données (PIN 2) |
RXD | 3 | 2 | GND (PIN 1) |
TXD | 2 | 3 | |
GND | 1 et 7 | 5 |
Le logiciel est disponible comme archive tar, il peut être installé avec la commande :
tar -xvzf digitemp-1.3.tar.gzdans le répertoire actuel.
Dans le répertoire nouvellement installé
digitemp1-3
, nous trouvons le code source, la documentation et quelques scripts Perl mais aussi les exécutables de
digitemp
, qui peuvent être utilisés tels quels.
Si digitemp
est appelé sans paramètres, nous aurons une présentation des paramètres présentés.
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Usage: digitemp -s<device> [-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
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.
La commande
digitemp -i -s/dev/ttyS0le réalise dans le cas où le circuit d'interface est connecté à la première interface série.
Le logiciel détecte les capteurs et un message ressemblant à ceci apparaît :
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing ROM #0 : 1032724700080086 ROM #1 : 1092214400080089Nous remarquons que le logiciel a détecté 2 capteurs. De plus, le fichier
.digitemprc
sera créé dans le répertoire courant ; il contiendra les données du capteur, l'interface et le format de sortie.
Avec la commande ./digitemp -a
, nous sommes alors en mesure de lire la sortie des capteurs. Veuillez noter le caractère
./
car nous sommes encore dans un répertoire qui ne fait pas partie du chemin de recherche courant.
Sortie de la Mesure
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
Pour intégrer notre programme dans le système, nous devons procéder à quelques réglages.
Nous devons d'abord copier les exécutables, i.e.
digitemp
, dans un répertoire qui permet l'exécution de programmes sans en spécifier le chemin. J'ai sélectionné /usr/local/bin/
pour ce faire. Ceux qui n'en sont pas sûr peuvent trouver les chemins avec echo
$PATH
. De plus, le fichier .digitemprc
, 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 -l[PATH/FILE NAME]
doit être appliqué.
Nous avons besoin d'automatiser nos mesures, ce que
cron fera très bien pour nous. Avec crontab -u [USER]
-e
, nous pouvons le mettre en place pour tous les utilisateurs. L'entrée
0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.loginitialise digitemp pour faire des mesures toutes les 15 minutes et de les écrire dans
/var/log/digitemp.log
.
Avec la commande tail /var/log/digitemp.log
, nous pouvons lire les dernières lignes des mesures. Si le fichier
/var/log/digitemp.log
n'a pas été généré, veuillez vérifier les droits d'accès des fichiers.
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 mySQL et sur la manière de les interpréter via une interface web..
Cela sera principalement réalisé en Perl par l'utilisation des fonctions mySQL, CGI et graphiques.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Stefan Blechschmidt "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
Translation information:
|
2005-01-14, generated by lfparser_pdf version 2.51