Projet Tutoré: Conception Et Développement D'un Réseau de Capteurs Sans Fil
Projet Tutoré: Conception Et Développement D'un Réseau de Capteurs Sans Fil
Projet Tutoré: Conception Et Développement D'un Réseau de Capteurs Sans Fil
Conception et développement
d'un réseau de capteurs sans fil
1
Table des matières
1Introduction à SysML...............................................................................................................3
1.1 Descriptif..........................................................................................................................3
1.2Schéma des évolutions apportés par SysML.....................................................................4
2SysML appliqué sur notre système...........................................................................................5
2.1Le diagramme d'exigences................................................................................................5
2.2Les diagrammes dynamiques............................................................................................6
2.2.1Les diagrammes de cas utilisation.............................................................................6
2.2.2Diagramme d’états.....................................................................................................8
2.2.3Les diagrammes d’activités ......................................................................................9
2.2.4Diagramme de séquence..........................................................................................12
2.3Les diagrammes de structure...........................................................................................16
2.3.1Block Diagram Definition.......................................................................................16
2.3.2Les diagrammes de blocs internes...........................................................................18
2.3.3Le diagramme paramétrique....................................................................................19
2.4Conclusion sur SysML....................................................................................................19
3Modélisation UML..................................................................................................................20
3.1Les diagrammes dynamiques..........................................................................................20
3.1.1Les diagrammes de cas d'utilisation........................................................................20
3.1.2Les diagrammes d'états............................................................................................22
3.1.3Les diagrammes d'activités......................................................................................23
3.1.4Les diagrammes de séquence...................................................................................25
3.2Les diagrammes statiques................................................................................................26
3.2.1Les diagrammes de classes......................................................................................26
4Implémentation en NesC.........................................................................................................28
4.1Code de l'application à déployer sur les capteurs non reliés...........................................28
4.2Code de l'application à déployer sur les capteurs reliés au PBC.....................................29
4.3Code de l'application à déployer sur les capteurs mobiles..............................................31
5Diagrammes de Gantt du projet..............................................................................................34
5.1Diagramme prévisionnel.................................................................................................34
5.2Diagramme réel...............................................................................................................34
6Conclusion..............................................................................................................................35
2
1Introduction à SysML
1.1 Descriptif
L'ingénierie logicielle a exprimé un besoin pour expliciter les concepts d'un système
complexe. Il s'agit d'avoir un langage facile à prendre en main. La pratique d'UML étant très
présente, un langage proche d'UML 2 aide fortement.
SysML est une extension d'UML 2.0 pour l'ingénierie des sytemes. Il a été développé
par OMG, Incose et AP233. La norme de la version 1.0 est sortie en juillet 2006. SysML
permet la spécification, l'analyse, la vérification et la validation des systèmes complexes
possédant une partie hardware, software, utilisateurs et les équipements.
SysML est seulement une représentation (avec notations et sémantiques) mais n'est pas
une méthode de conception.
Le but d'un langage de modélisation est la transition entre un cahier des charges(« basé
document ») et un modèle plus formel.
Les apports de SysML sur UML sont :
les besoins(requirements),
modèles fonctionnels,
modèles de performances,
modèle de composants du systèmes,
et aussi d'autres modèles (couts, qualité, etc..)
3
1.2 Schéma des évolutions apportés par SysML.
Dans le schéma suivant on peut voir la complétude de UML 2.0 et SysML 1.0
SysML Diagram
Same as UML 2
4
2SysML appliqué sur notre système
Diagramme d'exigences
Descriptif :
Ce diagramme est nouveau dans SysML. Il permet de représenter les exigences du
cahier des charges par un modèle. La modélisation des exigences rend la communication
meilleure au sein d'une équipe de conception notamment lors de projets très volumineux
(aéronautique, automobile, etc...).
Les choix :
A partir des spécification du système, nous avons dégagé deux exigences principales :
une exigence au niveau de la communication et une durée de vie optimale.
5
Pour l'exigence de performance de communication, nous l'avons spécialisé(« derive »)
en deux sous-exigences : performance de réception et d'émission. Ces deux exigences sont
satisfaites par le block radio qui va prendre en charge l'émission et la réception des messages.
Ces deux exigences (broadcasting, receive) sont utiliées dans les cas d'utilisations « Transmit
presence » et « Receive » (« refine »), et dérivent de l'exigence d'alimentation
(PowerSupplyPerformance) tout comme l'exigence de longévité. L'exigence sur l'alimentation
est garantie pas le bloc batterie.
Ce diagramme apparaît comme très pratique pour définir et expliciter les exigences et
les qualités d'un système. Son utilisation semble incontournable lors de la conception de gros
systèmes, en effet le travail de plusieurs équipes sur un projet peut entrainer des ambiguités
ou des différences d'interprétations. Ce diagramme permet de « formaliser » les exigences
dans le but d'améliorer la communication.
TopLevelUseCase
L’objectif de notre système est d’étudier les flux des personnes dans le centre ville de
Pau. Dans le cas d'utilisation haut niveau, l’acteur principal est le collecteur de données qui
récolte les données collectées par le réseau de capteurs. Ce relevé des informations doit
permettre la sortie de statistiques sur les flux de personnes.
6
SensorNetworkUseCase
SavePassage
Présentation détaillée des interactions que peut avoir le passant disposant d’un capteur
mobile avec le système de capteurs fixes. Pour que le cas d'utilisation « Collect datas » ait
lieu, le système doit être allumé (« Sensor ON »). Ce cas d'utilisation inclut deux sous cas :
Receive et Stock.
7
2.2.2 Diagramme d’états
SN_Statechart
Présente l’état d’un capteur lors de son fonctionnement. Nous voyons que l’état du
capteur dépend du PowerSource, autrement dit de son énergie ou batterie. Un capteur se
trouve soit en veille (attente qu'un événement le réveille), soit en activité. La fin de l'activité le
fait revenir en veille.
8
2.2.3 Les diagrammes d’activités
UnlinkedSensorActivity
Diagramme d’activité d’un capteur fixe non relié au Pau Broadband Country (PBC).
Son action dans le système est d’émettre, avec un délai Timer, un message de présence.
Un Timer est utilisé afin ne pas émettre continuellement, ce qui nuirait aux exigences
de communications, car les capteurs mobiles (avec une ressource énergétique limitée) se
trouveraient inondés de messages ce qui causerait une baisse de leur longévité.
9
LinkedSensorActivity
Diagramme d’activité d’un capteur fixe relié au PBC. A la différence d’un capteur non
relié, celui-ci réceptionne des données de la part du capteur mobile (contenant la liste des
passages des capteurs non reliés au PBC) et doit lui confirmer la bonne réception de ce
message.
10
MobileSensorActivity
Diagramme d’activité d’un capteur mobile. Nous pouvons voir qu’il est à un moment
donné dans l’activité CalculateReceiveSignalStrenghtIndicator, soit calculer la puissance du
signal reçu. Ce seuil sera déterminant afin qu’il envoie ses données au capteur fixe relié.
L’équation de calcul du RSSI se retrouve dans le diagramme paramétrique
ReceiveSignalStrenghtIndicatorOfSensor.
11
2.2.4 Diagramme de séquence
NetworkBlackBox
12
IdentificationBlackBox
IdentificationWhiteBox
13
Vue de bas niveau : représente l’émission du message de présence suivant que le capteur soit
relié ou non. Dans les 2 cas, le capteur enregistre le message.
Si [typeCapt =0] signifie que le capteur fixe est non relié, [else] signifie qu’il est relié.
ResponseBlackBox
Vue de haut niveau : Le capteur mobile transmet ses données au système de réseaux de
capteurs (sa liste de passages).
ResponseWhiteBox
Vue de bas niveau : Si le message capteur émetteur du message d’identification est de type
relié, (typeCapt =1) le capteur mobile envoi le total des informations qu’il possède à ce
capteur. Le capteur fixe réceptionne les données et les écrits dans sa mémoire.
14
AcknowledgmentBlackBox
AcknowledgmentWhiteBox
Vue de bas niveau : Une fois que le message envoyé par le capteur mobile a été reçu, celui-ci
attend la confirmation de la part du capteur fixe afin de pouvoir vider sa mémoire interne.
15
2.3 Les diagrammes de structure
16
Ce diagramme représente la structure hardware complète d'une plateforme et donc
d'un capteur mobile.
17
plateforme (voir diagramme précédent). A noter que les capteurs fixes reliés au PBC
disposent d'une interface de connexion au PBC.
Le diagramme de bloc interne permet de représenter pour un bloc (dans ce cas le bloc
« plateform »), les flux échangés entre les différents blocs le composant. SysML permet
(contrairement à UML) la représentation de tous les types de flux : électrique, liquides, ondes
...etc.
18
2.3.3 Le diagramme paramétrique
Ce diagramme paraît très intéressant pour des systèmes temps réel ou des systèmes
complexes. Il apporte un réel plus vis à vis d'UML.
SysML est née en réponse à un besoin des grands comptes de l'industrie pour
harmoniser et permettre une modélisation des systèmes complexes. Après avoir étudié et
manipulé SysML, il nous semble que cette modélisation apporte un plus vis à vis d'UML,
19
dont elle en reprend des aspects et rajoute des diagrammes importants (requirement et
parametric) qui facilite la communication avec une modélisation appropriée aux systèmes.
3Modélisation UML
Après avoir modélisé le système à l'aide de SysML, la deuxième partie du projet
consistée à implémenter les applications à déployer sur chaque type de capteur. Nous vous
présentons içi la modélisation des applications.
20
Cas d'utilisation pour les capteurs non reliés
21
3.1.2 Les diagrammes d'états
22
Diagramme d'état d'un capteur mobile
23
Diagramme d'activité pour un capteur fixe relié au PBC
24
3.1.4 Les diagrammes de séquence
25
3.2 Les diagrammes statiques
Après avoir présenté les diagrammes dynamiques, nous allons présenter la partie
statique de la modélisation UML. Nous avons traité uniquement les diagrammes de classes
qui nous semblaient les plus pertinents pour l'implémentation.
26
Diagramme de classe d'un capteur mobile
27
4Implémentation en NesC
4.1 Code de l'application à déployer sur les capteurs non reliés
Fichier UnlinkedSensor.nc
configuration UnlinkedSensor {
}
implementation {
components Main, UnlinkedSensorM, TimerC,GenericComm as Comm;
Fichier UnlinkedSensorM.nc
module UnlinkedSensorM {
provides {
interface StdControl;
}
uses {
interface Timer;
interface StdControl as TempControl;
interface SendMsg;
}
}
implementation {
TOS_Msg beacon_packet;
uint16_t typeSensor;
uint16_t numSensor;
uint16_t loopTime;
return SUCCESS;
}
return SUCCESS;
}
28
command result_t StdControl.stop() {
call Timer.stop();
return SUCCESS;
}
Fichier LinkedSensor.nc :
configuration LinkedSensor {
}
implementation {
components Main, LinkedSensorM, TimerC,GenericComm as Comm;
Fichier LinkedSensorM.nc:
/*
data[1] = type du message
0 : message d'un capteur non relié(présence)
1 : message d'un capteur relié(présence)
2 : message d'un capteur relié(acquittement)
3 : message d'un capteur mobile(envoi de toutes les données)
4 : message d'un capteur mobile(présence)
*/
29
module LinkedSensorM {
provides {
interface StdControl;
}
uses {
interface Timer;
interface StdControl as TempControl;
interface SendMsg;
interface ReceiveMsg;
}
}
implementation {
TOS_Msg beacon_packet;
int16_t typeSensor;
uint16_t loopTime;
uint16_t bArrayOfMessage[1000]; //stock the nums of sensors
uint16_t sizeOfbArrayOfMessage = 0;
return SUCCESS;
}
return SUCCESS;
}
30
}
//store the list from the mobile (data[] of the mobile sensor must contain
nums of all sensors he met)
return recv_packet;
}
Fichier MobileSensor.nc :
configuration MobileSensor {
}
implementation {
components Main, MobileSensorM, GenericComm as Comm;
Fichier MobileSensorM.nc :
/*
data[1] = type du message
0 : message d'un capteur non relié(présence)
1 : message d'un capteur relié(présence)
2 : message d'un capteur relié(acquittement)
3 : message d'un capteur mobile(envoi de toutes les données)
4 : message d'un capteur mobile(présence)
*/
31
module MobileSensorM {
provides {
interface StdControl;
}
uses {
//interface Timer;
interface StdControl as TempControl;
interface SendMsg;
interface ReceiveMsg;
}
}
implementation {
TOS_Msg beacon_packet;
int16_t typeSensor;
uint16_t loopTime;
uint16_t bArrayOfMessage[27]; //stock the nums of sensors,
uint16_t sizeOfbArrayOfMessage = 0;
uint16_t dejarecu=0;
return SUCCESS;
}
if(typeMessage == 0){
// Store the unlinked sensor num
if(dejarecu != nodeaddr) {
dejarecu = nodeaddr;
32
else if( (dejarecu == nodeaddr) && (Strength < 40) ){
dejarecu = 0;
}
bArrayOfMessage[sizeOfbArrayOfMessage] = *((int16_t
*)recv_packet->data[3]);
sizeOfbArrayOfMessage = sizeOfbArrayOfMessage + 1;
}
for(i = 0;i<sizeOfbArrayOfMessage;i++){
*((int16_t *)beacon_packet.data[i+4]) =
bArrayOfMessage[i];
call SendMsg.send(nodeaddr, sizeof(int16_t),
&beacon_packet);
dejarecu = nodeaddr;
}
}
else if( (dejarecu == nodeaddr) && (Strength < 40) ) {
*((int16_t *)beacon_packet.data[1]) = 4;
*((int16_t *)beacon_packet.data[2]) = 1;
*((int16_t *)beacon_packet.data[3]) =
TOS_LOCAL_ADDRESS;
call SendMsg.send(nodeaddr, sizeof(int16_t),
&beacon_packet);
dejarecu = 0;
}
return recv_packet;
}
}
33
5Diagrammes de Gantt du projet
5.1 Diagramme prévisionnel
34
6Conclusion
Ce projet avait pour but d'étudier la possible implémentation d'une application capable
de relever des données concernant les flux urbains à l'aide d'un réseau de capteurs.
Une perspective possible à ce projet serait sans doute une modélisation SysML d'un
système plus complexe, car c'est dans ce cas là qu'il s'avère le plus efficace à notre avis. En
effet, les grands comptes industriels ont demandé son apparition pour justement répondre aux
ambiguités qui été générées par la non modélisation « uniforme » des systèmes omplexes.
35