Projet capteurs : 2011 - Yongkan HUANG et Mohamad KANJ

De Ensiwiki
Aller à : navigation, rechercher

Présentation du projet

Matériel

Le projet se déroule sur les kits de développement Texas Instruments eZ430-rf2500. Ces kits contiennent :

  • 2 capteurs équipés d'un microtrolleur basse consommation TI MSP430 et d'une radio CC2500 opérant dans la bande des 2.4Ghz
  • Une interface de développement USB
  • Un conteneur de piles pour alimenter un capteur de manière autonome

Logiciels

  • Linux (ou n'importe quel UNIX like)
  • Compilateur MSPGCC
  • Utilitaire MSPDEBUG
  • Bibliothèques MRFI (Minimal RF Interface) et BSP (Board Support Package) de TI.
  • Gestionnaire de versions GIT

But du projet

Le but de développer un protocole multi-sauts économe en énergie très simplifié et le but final c'est de former un réseau interopérable avec tous les capteurs de tous les groupes

Protocole imposé

le schéma ci-dessous décrit le fonctionnement de chaque capteur dans chaque cycle de service. Protocol eZ430-RF2500.png

Travail Réalisé

Partie synchronisation

Les formats des differents paquets

les formats des paquets:

Bec1.BMP
Rip1.BMP
Data.BMP

Les differents états du cycle

  1. Période d'inactivite du capteur. (Wait_Scan)
  2. Période de Scan. (Wait_beacon)
  3. Beaconing. (Wait_synchron)
  4. Période active. (Wait_message)
  5. Période de sommeil. (Wait_sleep)

Description de chaque cycle

Wait_Scan

c'est la période où le capteur ne fonctionne pas,pour qu'il fonctionne on doit appuyer sur le boutton du capteur.

Wait_beacon

c'est la période de Scan dont laquelle le capteur il cherche à se connecter à un reseaux,s'il n'a pas pu se connecter a un reseaux il cre son propre reseaux.

Wait_synchron

c'est la période d'envoi des beacons où chaque capteur envoi son beacon dans la slot qui etait deja attribuer selon son MAC_adress (ex: le capteur qui a un adress MAC 5,il envoi son beacon dans la slot 5),sauf le createur du reseaux,il envoi son beacon dans la slot 0.

Wait_message

c'est la période d'échange des données.

Wait_sleep

c'est la période ou le capteur fait rien.

Mode de fonctionnement du capteur

Createur du reseaux

Lorsque le capteur est dans ce mode il travaille selon les figures ci-dessous.

Aaa.BMP
Createur.BMP
Non createur du reseaux

Lorsque le capteur n'est pas le createur du resaux,dans ce cas on a deux cas:

  1. soit il recoit un beacon qui a un ID_BEACON < que son MAC adress et dans ce cas il fonctionne selon la figure 1,2.
  2. soit il recoit un beacon qui a un ID_BEACON > que son MAC adress et dans ce cas il fonctionne selon la figure 3,4.
Figure1
Figure2


Figure3
Figure4

Routage

Voisinage

On a utilisé 32 bits pour indiquer le voisinage, on met le bit Neme bit a 1 selon le Mac du voisin, cette manière nous a permi d'établir la table de routage. Pour décider si un capteur est voisin ou pas , on a mis un seuil pour le RSSI pour decider qui est notre voisin.

Protocol RIP

Le Protocol RIP met en oeuvre le partage de la table de routage,les capteurs envoient chaque 3s leur table de routage.

Forme de la table de routage

Rip.BMP

Mise à jour la table de routage

Si un capteur est perdu(tombe en panne ou déplacé a une autre region du reseau) , son voisin va détecté qu'il est perdu grâce au Timer A, donc il va supprimer se voisin et les destination qui sont associé à ce voisin. Quand le capteur recoit un paquet RIP, il met à jour le table de routage. Quand le capteur reçoit un paquet RIP de son voisin ,si une destination existe chez son voisin mais n'existe pas chez lui , donc il va vérifier si le next_hop dans le paquet de RIP est lui même , si oui, il ne va pas ajouter la route , si non il va l'ajouter .en revanche ,si une destination existe chez lui mais n'existe pas chez son voisin , il va vérifier le next_hop aussi.

Communication

FIFO

Pour la communication:

  • On a un FIFO pour envoyer et recoivre les message.
  • Send message:on écrit le message dans FIFO_Send , s'il a détecté la taille de FIFO est supérieur que celle de mrif_max_frame il va arreter et envoyer le message avec longueur mrif_max_frame , s'il a détecté " \r "(boutton ENTER), c'est-a-dire il y a déjà une phrase complet, il va envoyer la phrase directement.

UART

Pour la communication , on a utilisé le UART comme une interface d’interaction avec le capteur. le menu de manipulation command:

  • o: who is on line
  • v: voisin
  • r: router table
  • i: sysinfo
  • ESC: help

pour chaque commande on a traité le cas , si on tape 'o' il va nous afficher les capteurs qu'on puisse communiquer avec eux,puis on choisit avec qui on veut communiquer , pour quitter la conversation on tape ESC,si on tape 'v' il va nous afficher et la liste des voisins,si on tape 'r' il va nous affiché la table de routage et si on tape 'i' il va afficher les information du reseaux et du capteur.

Multi-saut

Pour communiquer avec un capteur à qui on ne peut pas envoyer des message directement ,le capteur cherche dans sa table de routage pour une route vers la destination,puis il envoi son paquet au premier Next_Hop qui peut assurer le bon routage de cette paquet,ce Next_Hop et les autres capteurs vont faire la même chose jusqu'a le paquet atteint sa destination.

Multi.BMP

les Etapes realisée

Les étapes qu'on a pu realier :

  1. Synchronisation.
  2. Routage des paquets.
  3. Partage de la table de routage.
  4. Mis a jour de la table de routage dans le cas du deplacement d'un capteur ou si un capteur tombe en panne.
  5. Communication et envoi des messages entre les capteurs.
  6. Faire fonctionner le reseau même en changement les positions des capteurs.
  7. Maintenance du reseau meme si le createur du reseau tombe en panne, si le créateur du réseau est perdu , tous les capteur vont attendre un certaine temps aléatoire et créer son propre réseau , le capteur le plus vite devient le créateur du nouveau réseau.
  8. Collisionnement de deux réseaux , le capteur qui a le MAC le plus petits va être le createur du réseau.

les problemes rencontrés durant le projet

  • Les problemes rencontrés:
  1. Probleme de synchronisation: Au début, on a choisi une solution de se synchroniser pour une seul fois ,et pas de ce resynchroniser chaque cycle , mais ça marche pas bien à cause de la derivation d'horloge.
  2. choix de fifo: Au début on a utilisé le FIFO de chaine, mais on a trouvé ça marche pas bien sur MSP430 , donc on a changé et on a utilisé le tableau comme un FIFO .
  3. Probleme lorqu'on utilise CCA et Timer A: Quand on transmet les message avec csma/ca, donc le timerA va être éteint , donc on été obligé de remettre le timer A chaque fois.
  4. Probleme avec mode LPM3: On a pas pu entrer dans le mode LPM3 (low puissance mode 3) , il nous a fait beaucoup de problèmes.

À realiser

Pour économiser l’énergie, donc on a proposé une solution pour cela , après la durée de message , on va entrer dans le mode LPM3 , après certaine de temps ; on va réveille le timer B , de cette manière on va pas rater le beacon ,mais ça va augmenter la complexité du programme.

Liens