Surveillance de la température
« thermometer », CC-0 (openclipart)
Surveiller les différentes températures des pièces d’une maison peut-être très intéressant d’un point de vue économique (et écologique), par exemple si l’on intègre ensuite dans le système un contrôle individuel des radiateurs (au moyen d’électro-vannes) pour éviter de chauffer quand ce n’est pas nécessaire. On pourrait très bien imaginer baisser les températures de la cuisine, du salon, de la salle de bain la nuit, et inversement celle des chambres la journée.
La première étape est donc la surveillance des différentes températures. Le protocole 1-wire est parfaitement adapté à ce type d’utilisation. Afin de récupérer les températures, des sondes « DS18B20 » sont utilisées. La connexion à l’ordinateur s’effectue en USB vie l’interface USB–RJ11 « DS9490R ».
Câblage
Pour le câble, j’ai utilisé un simple cordon de raccordement téléphonique. Attention tout de même, la prise RJ-11 pré-montée n’était pas connectée comme je le souhaitais ! En effet, seul les pins 2,3,4 et 5 étaient reliés, or pour pouvoir bénéficier de l’alimention 5V fournie par l’USB il faut le pin 1. Les connexions sont :
- pin 1 : VDD : + 5V (pour alimenter les sondes)
- pin 2 : GND : masse de l’alimentation
- pin 3 : OW : les données 1-Wire
- pin 4 : OW_GND : retour 1-Wire
- pin 5 : mise en veille USB (je ne sais pas vraiment à quoi ça peut servir…)
- pin 6 : non utilisé
J’ai conservé le « mauvais » câble RJ-11 à fin de test, en utilisant le mode parasite des capteurs : l’alimentation et les données utilisent le même cable. Utile pour faire des tests, mais avec un câble trop long où plusieurs sonde les relevés de température deviennent imprécis, voir incohérents. En mode parasite, il nous faut donc simplement les pin 3 et 4 du RJ-11, en connectant la sonde comme le montre la figure 2 ci-dessous. La figure 1 représente la connexion avec la VDD indépendante.
Afin d’avoir le plus de flexibilité, je soude mes sondes DS18B20 avec les 3 pattes indépendante, et je relis au moyen d’un domino au RJ-11. Pour le mode parasite, je fais un pont dans le domino.
Figure 3 : soudure des pattes du DS18B20.
Si vous êtes pire que moi en soudure (et je suis loin d’être vraiment bon, comme le montre la figure 3 !), il existe des sonde pré-cablées.
Afin d’éviter un court-circuit, j’isole la connexion en enrobant le tout de cire. En plus, cela permet un meilleur maintien des soudures.
Figure 4 : enrobage de cire.
Logiciel
Pour le logiciel, j’ai installé owfs. Ce programme crée une structure de répertoire et de fichier facilitant la manipulation des données 1-Wire. Une fois installé et la sonde relié à l’interface USB, je monte le système de fichier owfs :
# mkdir /mnt/owfs # owfs -u /mnt/owfs/ --allow_other
On peut donc ensuite lire données des capteurs. Par exemple, pour le capteur ID D0E857040000 :
$ cat /mnt/owfs/28.D0E857040000/temperature 23.475
Oui, c’est précis, et à ce niveau de précision le temps de réponse n’est pas fameux (1097 ms). Pour accélérer les choses, on peut lire plutôt « fasttemp » (le temps de réponse descend alors à 6 ms).
$ cat /mnt/owfs/28.D0E857040000/fasttemp 23.5
Voici une ligne de commande qui me donne :
- l’ID du capteur
- la date (au format unix)
- la température
$ echocat /mnt/owfs/28.D0E857040000/id
";"date +%s
";"cat /mnt/owfs/28.D0E857040000/fasttemp
| sed 's/\ //g'
cette ligne permet, par exemple, de créer un fichier CVS.
Avec un peu de gnuplot on peut par exemple obtenir ce genre de graphique :
Graphique réalisé à l’aide d’un script gnuplot
À suivre : plusieurs capteurs, du php/mysql, et une interface web pour voir des belles courbes de températures.
Sources
- http://openenergymonitor.org/emon/buildingblocks/DS18B20-temperature-sensing
- http://domotics.free.fr/upload/C%E2blage_interface_1-Wire.pdf
- http://fr.wikipedia.org/wiki/1-Wire
Cet article est repris du site http://antoine.van-elstraete.net/?p=1060