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
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/
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).
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".
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.
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.
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.
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.
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:
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.
Copyright "Mathias Kowalski & Jean Bernard Savadogo" 2010, all rights reserved