Tutoriel : installation et configuration de BLIP TinyOS-2.1.0

Ce tutoriel à été réalisé par des étudiants de 1ère année master Technologie de l'Internet de l'université de Pau dans le cadre d'un projet sur les réseaux de capteurs sans-fil, encadré par M.Pham professeur à l'UPPA.

Afin de pouvoir bénéficier d'un environnement complet et opérationnel, vous pouvez télécharger l'image VMware sur le site d'Arik Sapojnik à l'adresse suivante : http://nap.cse.bgu.ac.il/~ariksa/UbunTOS_NAP.html.
Cette image contient :

Ce tutoriel est conçu pour le matériel suivant :

Pour toutes différences d'environnement ou de matériel, vous pouvez adapter ce tutoriel en conséquence.

Installation du routeur de bord

L'application fournissant une interface IEEE 802.15.4 et gérant l'IP se trouve dans le dossier /opt/tinyos-2.1.0/apps/IPBaseStation. Il faut l'installer sur le capteur qui restera connecté en USB gràce au MIB520 afin d'établir un pont entre la machine et le noeud.

$ cd /opt/tinyos-2.1.0/apps/IPBaseStation

$ make blip install mib520,/dev/ttyUSB0 micaz

Cette opération compile le programme et flash le capteur directement. Il est également possible de seulement compiler le programme puis de flasher sans le recompiler en operant comme suit.

$ make blip micaz
$ make blip reinstall mib520,/dev/ttyUSB0 micaz

Une fois IPBaseStation installé, il faut compiler le driver de routage (serial forwarder), pour cela procédez comme suit:

$ cd /opt/tinyos-2.1.0/support/sdk/c/sf
$ ./bootstrap
$ ./configure
$ make

Si cette étape echoue, il se peut qu'il manque les paquets automake et autoconf sur votre distribution.

Répétez ensuite cette étape pour le driver.

$ cd /opt/tinyos-2.1.0/support/sdk/c/blip
$ ./bootstrap.sh
$ ./configure
$ make

Si toutes ces étapes ont réussi, alors le driver pour le routeur de bord est bien construit. Vous pouvez le lancer en allant dans /opt/tinyos-2.1.0/support/sdk/c/blip et en tapant :

$ sudo driver/ip-driver /dev/ttyUSB1 micaz

Configuration du routeur de bord

Lors du démarrage du routeur de bord, sa configuration est chargée depuis le fichier /opt/tinyos-2.1.0/support/sdk/c/blip/serial_tun.conf.

# Before you can run the adaptation layer and router, you must
# configure the address your router will advertise to the subnet, and
# which network interface to proxy neighbor advertisements on.
#

# set the debug level of the output
# choices are DEBUG, INFO, WARN, ERROR, and FATAL
# log DEBUG
# set the address of the router's 802.15.4 interface. The interface
# ID must be a 16-bit short identifier.
addr fec0::64
# the router can proxy neighbor IPv6 neighbor discovery on another
# interface so that other machines on the subnet can discover hosts
# routing through this router. This specifies which interface to proxy
# the NDP on.
proxy lo

# which 802.15.4 channel to operate on. valid choices are 11-26.
channel 15

Ici l'adresse IPv6 du routeur sera donc fec0::64 (adresse réduite) et opèrera sur le canal 15.
Le canal du routeur doit être identiques aux canaux des noeuds pour pouvoir communiquer.

Installation d'un noeud

Une fois le routeur de bord installé et configuré, vous pouvez installer un noeud. Pour cela TinyOS fournit une application de test dans le dossier /opt/tinyos-2.1.0/apps/UDPEcho. Cette application permet notamment de tester le ping, afin de voir si le noeud est bien dans le réseau. Flashez donc le capteur comme précédement mais avec le programme UDPEcho.

$ cd /opt/tinyos-2.1.0/apps/UDPEcho

$ make blip install.ID mib520,/dev/ttyUSB0 micaz

Ou bien :

$ make blip micaz
$ make blip reinstall.ID mib520,/dev/ttyUSB0 micaz

ID est l'identifiant du noeud, il doit être unique. L'ID est par defaut 1 s'il n'est pas précisé lors de l'installation

Test

Maintenant que le routeur de bord et un noeud sont installés, assurez-vous d'avoir lancé le routeur comme vu précedement. Puis testez la communication IP avec le capteur avec le ping6 ou tracrt6 (l'installation de paquets sera peut être nécessaire)

$ ping6 fec0::ID

Comme vous avez pu le remarquer l'adresse IPv6 du noeud est la concaténation du préfixe indiqué dans le fichier serial_tun.conf et de l'ID du noeud.

$ tracert6 fec0::ID

On remarque que pour atteindre fec0::ID on passe bien par fec0::64 le routeur de bord.

IP Oscilloscope

Pour aller un peu plus loin, nous vous proposons d'installer l'application que nous avons implémentée.

Telecharger IPOscilloscope

Une fois l'archive téléchargée, extrayez son contenu dans le dossier tinyos-2.1.0/apps. Cette application permet de récupérer le voltage du capteur en IP, une interface Java est fournie afin de visualiser en temps réel les données.
Cette application peut être flashée sur le noeud et nécessite que IPBaseStation soit installé sur le capteur relié à la machine. Une fois les capteurs prêts, lancez le driver et placez vous dans le dossier IPOscilloscope/java. Vous pouvez vous assurer que le ping fonctionne bien sur le noeud.Compilez le programme java et lancez l'application.

$ javac *.java
$ Client fec0::ID

Quelques liens utiles

Divers tutoriels sur le site de documentation de TinyOS : http://docs.tinyos.net/index.php/TinyOS_Tutorials
La fiche technique des capteurs MicaZ : http://www.xbow.com/Products/Product_pdf_files/Wireless_pdf/MICAz_Datasheet.pdf
Le site d'Arik Sapojnik avec l'image VMWare :http://nap.cse.bgu.ac.il/~ariksa/UbunTOS_NAP.html

Nous contactez

Frédéric Delgado : delgado.frederic@gmail.com
Cédric Laborde :king_xaero@hotmail.fr