Wiki Linux SMH

   

Flux RSS

Onewire

1 - Présentation

 

cf http://fr.wikipedia.org/wiki/1-Wire

Dans cet article nous allons utiliser le connecteur USB vers 1-wire : DS9490R

2 - Owfs

2.1 - Installation

Tout d'abord, pour autoriser le module usb, il faut installer les librairies de fuse :

# apt-get install libfuse-dev libusb-dev

Télécharger l'archive sur cette page : http://sourceforge.net/projects/owfs/files/owfs/. Dans mon cas la 2.7p26.

Décompressez l'archive :

$ tar xvzf owfs-2.7p26.tar.gz

On lance le .configure :

 $ cd ./owfs-2.7p26/
 $ ./configure --enable-debian --prefix=/usr/local

La fin de la phase de configuration nous montre les modules qui seront activés :

Compile-time options:
                  Caching is enabled
                      USB is enabled
                      I2C is enabled
                   HA7Net is enabled
                       W1 is enabled
           Multithreading is enabled
    Parallel port DS1410E is enabled
        TAI8570 barometer is enabled
             Thermocouple is enabled
         Zeroconf/Bonjour is enabled
             Debug-output is enabled
                Profiling is DISABLED

Module configuration:
                    owlib is enabled
                  owshell is enabled
                     owfs is enabled
                  owhttpd is enabled
                   owftpd is enabled
                 owserver is enabled
                    ownet is enabled
                 ownetlib is enabled
                    owtap is enabled
                   owside is enabled
                    owmon is enabled
                   owcapi is enabled
                     swig is DISABLED
                   owperl is DISABLED
                    owphp is DISABLED
                 owpython is DISABLED
                    owtcl is DISABLED

Comme vous pouvez le voir il existe de nombreuses manières de communiquer avec owfs.

Puis la compilation :

$ make

Et en tant que root l'installation :

# make install

On en profite pour créer un dossier dans /mnt :

# mkdir /mnt/owfs

On créé le fichier /etc/init.d/owfs :

#! /bin/sh
# script de démarage de owfs
 
set -e
# on récupère le point de montage de OWFS
source /etc/default/owfs
# binaire OWFS 
OWFS="/usr/local/bin/owfs"
# module à charger pour owfs
OWFSMODULES="fuse"
 
case "$1" in
  start)
        # on vérifie que le point de montage existe
        if [ -d $OWFSMNT ]
        then
                # on charge les modules
                modprobe $OWFSMODULES
                # On monte le owfs en donnant l'accès à tout le monde 
                # TODO A CHANGER POUR LES DROITS
                $OWFS -u $OWFSMNT --allow_other
        fi
        ;;
  stop)
        # On démonte OWFS
        umount $OWFSMNT
        ;;
  *)
        echo "Usage: $N {start|stop}" >&2
        exit 1
        ;;
esac
 
exit 0

Et le fichier de configuration /etc/default/owfs :

# Point de montage de owfs
OWFSMNT="/mnt/owfs"

Et on l'ajoute dans les procédures de démarrage :

 # update-rc.d owfs defaults

Au branchement du module usb, des modules qui vont poser souci vont de charger automatiquement. Nous allons les bloquer en créant le fichier /etc/modprobe.d/ds2490 :

Maintenant vous pouvez brancher le module.

Pour finir, la prise en compte :

# /etc/init.d/owfs start

2.2 - Testons

Voyons ce qui est présent dans notre dossier /mnt/owfs :

$ ls -l /mnt/owfs/
total 0
drwxrwxrwx 1 root root  8 oct  4 16:45 28.C57B2E020000
drwxrwxrwx 1 root root  8 oct  4 16:45 81.93702C000000
drwxr-xr-x 1 root root  8 oct  4 16:42 alarm
drwxr-xr-x 1 root root  8 oct  4 16:42 bus.0
drwxr-xr-x 1 root root  8 oct  4 16:42 settings
drwxrwxrwx 1 root root  8 oct  4 16:45 simultaneous
drwxr-xr-x 1 root root  8 oct  4 16:42 statistics
drwxr-xr-x 1 root root 30 oct  4 16:42 structure
drwxr-xr-x 1 root root  8 oct  4 16:42 system
drwxr-xr-x 1 root root  8 oct  4 16:42 uncached

Les 2 premiers items sont les périphériques 1-wire. En fait je n'en ai qu'un : un capteur de température DS18B20. Pourquoi en a-ton deux d'affichés ?

Voyons le type des 2 :

$ cat 81.93702C000000/type 
DS1420
$ cat 28.C57B2E020000/type 
DS18B20
  trouver l'explication précise (je crois qu'en fait, le composant intègre deux fonctions comme tous les composants 1 wire. A vérifier)
  le DS18B20 a une résolution ajustable : comment que ça marche ?

Consultons maintenant la température relevée par le capteur :

$ cat /mnt/owfs/28.C57B2E020000/temperature
       18.25

Et voilà, notre début de réseau 1-wire fonctionne

3 - Que peut-on faire de plus ?

  • commander des relais
  • capteurs d'ouvertures
  • etc

4 - Réssources

Vous êtes : 38.107.191.88 Dernière modification : 26/10/09 16:14 Propriétaire : Fritz Modifié par : Fritz

Commentaires

Afficher les commentaires
Il n'y a aucun commentaire sur cette page