>> Sources Completes <<

deploiement du device

Choix materiel

Le choix du materiel s'est porte sur le NSLU2. En effet, cette cible possedant un processeur ARM a 266MHz et 32 mb de RAM sur 8Mo de memoire flash. Ces caracteristiques sont suffisantes pour decoder un flux audio mp3, acceder a internet et communiquer via UPnP.

pour ce qui est des capteurs de temperature, on utilise une interface phidget. On aura 2 types de capteurs de temperature : 1 eau et 1 air. Celui pour l'air est un capteur de temperature phidget simple. Par contre pour l'eau, vu que le capteur devrais etre plonge dans un embout en fer, on prends un capteur de temperature resistif et on le combine avec un capteur pont diviseur de tension (on obtient ainsi la resistance du capteur a tout moment).

Pour les Leds, on prends des leds haute luminausite avec les resistance correspondantes. On raccorde le tout avec des fils electriques (toute les masses vers la masse de l'interface phidget et l'entree des leds vert les "outputs" de l'interface phidget).

Pour ce qui est de l'audio nous avons choisi des Haut parleurs de 5W avec amplification USB (pour ne pas avoir a bricoller un ampli). Nous avons decoupes les haut parleurs pour les faire rentrer dans la bouee.

Voici ci dessous le shema des branchements + le hardware utilise

composition

choix du systeme

Comme choix de systeme embarque, nous avons choisi de se baser sur un Linux car il y a une grande communaute qui developpe des sytemes Linux sur SNLU2 et c'est du logiciel libre. Comme systeme d'exploitation et plateforme de crosscompilation du systeme Linux embarque, nous avons choisis OpenWRT : http://openwrt.org/

Architecture Logicielle sur cible embarquee avec OpenWRT

architecture logicielle

Construction du systeme de base

Nous avons tout d'abord recuperes les sources de BackFire 10.03 d'OpenWRT sur Sources Backfire 10.03

Avant de compiler les sources, nous allons tout d'abord recuperer les Makefiles pour le Package utile pour avoir la librairie Phidget21. Nous recuperons donc ce makefile sur le site de developpement d'OpenWRT : Makefile Phidget21 pour OpenWRT. Apres avoir recupere le makefile, il faut alors creer un dossier phidget21 dans "/backfire/package/" et y inclure le makefile. Un "make menuconfig" devrais faire apparaitre la librairie phidget21 dans le menu librairie. Dans la configuration de Backfire, on va aussi permettre au nslu2 de pouvoir avoir acces a un reseau local. On lui assigne donc une adresse de 192.168.1.77. On peut lui configurer la passerelle par defaut et le DNS a 192.168.1.1 (courant dans la plupars des reseaux domestiques). Voici notre fichier de configuration : config backfire

On peut maintenant lancer la compilation avec la commande "make" a la racine de backfire. Une fois la compilation terminee, on recupere l'image obtenue dans le dossier "bin/ixp4xx/openwrt-nslu2-squashfs.bin". On upgrade le NSLU2 avec la commande "upslug2" sur un linux (ou autre programme sur Windows).

Mise en place des UPnP Devices

Nous avons utilises les outils d'intel, et plus precisement la version 0.47 pour construire l'architecture des devices UPnP. Il s'est avere que les anciennes versions des outils UPnP ne fonctionnent pas sur cible embarquee. Vous pouvez recuperer ces outils a cette adresse : UPnP dev tools Apres avoir construits les differents services pour devices, nous avous choisis de creer 4 devices (fichier sources associes) puis nous avon generes la couche UPnP en C avec "DeviceBuilder".

On remarque aussi qu'il a fallu changer le makefile pour pouvoir proceder a la crosscompilation, si vous voulez crosscompiler sur votre ordinateur en utilisant nos sources, n'oubliez pas de changer le nom des repertoires des makefiles et exporter la variable PATH avec votre compilateur arm. En regle generale, le cross compilateur se trouves dans "staging_dir/toolchain-architecture_gcc-compilerver_uClibc-libcver/usr/bin/". Une documentation sur la cross compilation plus complette se trouves ici : Cross compilation avec OpenWRT

Mise en place du Temperature device et Leds device

Les device Temperature et Leds sont tous deux associes a notre interface phidget 8/8/8/. On utilise donc la librairie "phidget21" pour pouvoir controller ces phidgets. Voici ci-joint le code source associe au controle de ces devices (on utilise ces fonctions dans le "Main" de la couhche C UPnP generee par le DeviceBuilder)
controle phidget de leds avec libphidget21
controle phidget de Temperature avec libphidget21 Notons que le calul de la temperature se fait sur le calcul d'un fonction affine par rapport a la valeur de la resistance du capteur de temperature.

Mise en place du service de lecture de flux audio

Pour lire un flux audio, il nous faudra un lecteur. On remarque qu'OpenWRT fournis madplayer pour lire l'audio. Apres s'etre assure d'avoir installe les modules noyaux pour l'audio, nous pouvons installer madplayer avec la commande "opkg install madplayer" (via ssh sur 192.168.1.77 pour avoir acces a la cible). On va recuperer le stream avec un "Wget -g -O" puis l'injecter via un pipe vers madplayer. On fait alors les appels systemes correspondants dans un fork() pour pouvoir par la suite stopper ce processus.

Mise en place du service de configuration du wifi

Pour pouvoir configurer un wifi, il nous faudra connaitre les donnes relatives au point d'acces wifi. Pour ce faire, nous allons en fait juste envoyer via UPnP la partie utile des arguments de "iwconfig". Les traitements des autres commandes de configuration du reseau se font par un apple systeme. Voi ci le code associe dans le "Main" de la couche du Device UPnP genere.

Automatisation du lancement des devices au demarage

Pour automatiser le lancement des devices au demarages, il suffit d'editer le fichier "/etc/init.d/rcS" et d'y rajouter les executables des devices deviceLeds, deviceTemperature, deviceConfig et deviceMusic. Voila, la cible embarquee est prete a l'emploi. composition

Le deploiement du client PC de Smart Buoy

L'application de controle de Smart Buoy est application ASP.Net.
Cette application est le point de controle des 4 dispositifs de SmartBuoy qui sont:

  • TemperatureDevice
  • LedsDevice
  • MusicDevice
  • ConfigDevice
En effet, avec les outils Intels, nous avons genere le code C# des 4 points de controles correspondants aux 4 dispositifs cites ci-dessus.
Nous avons ensuite dans une page ASP implemente les differentes commandes pour interagir avec Smart Buoy.
Cette page ASP.Net est integre dans un projet C# dont il suffira de l'executer pour lancer l'application de controle.

Voici les source du projet sur VisualStudio : sources.
pour lancer le projet, il suffit de l'ouvrir dans visual studio et de lancer l'execution du projet.

Presentation de l'interface d'administration de Smart Buoy

Utilisation de l'interface

Notre interface est compose de :
  • Un bouton "Voir Temperature de l'eau" qui permet si on clique dessus, de faire appel par UPnP au dispositif TemperatureDevice
    sur la bouee pour recuperer la temperature de l'eau.
    Cette temperature sera affichee dans le champ de texte prevue situee juste au dessus de ce bouton
  • Un bouton "Voir Temperature de Ambiante " qui lui un peu comme le precedant va faire appel par UPnP au dispositif TemperatureDevice
    pour recuperer la temperature de l'air et nous la retourner a l'application pour atre affichee a l'utilisateur
  • Un bouton "Allumer Leds " et un autre "Eteindre Leds" qui permettent en ayant selectionne bien avant la couleur des leds dans la radioList
    situee juste au dessus d'allumer ou d'eteindre les leds de la bouee.
    Ce bouton est en relation avec le dispositif LedsDevice sur la bouee.
  • Le bouton "Assigner" lui permet de de communiquer l' URL d'une WebRadio a la bouee. Cette URL sera communiquee au dispositif
    MusicDevice sur la bouee pour la lecture de la playlist de cette webradio
    Les boutons "Play" et "Stop" servent respectivent a activer la lecture de playlist sur la bouee ou de l'arreter .
  • Le bouton "Configure Wifi" sert transmettre les parametres de connexion Wifi ( nom du reseau + cle( si securise) ) pour que la bouee puisse acceder a internet.
    Par exemple: On entrera la chaine : "essid ETUD_POLYTECH" pour permettre la connexion au reseau Wifi de l' EPU.

>> Sources Completes <<