TP 5: Alterner période d'activité et période d'inactivité, impact sur les communications

Auteur: Congduc Pham, UPPA


TRES IMPORTANT: Avant toute manipulation pour enlever des composants électroniques des capteurs, il faut que le capteur soit éteint (Libelium Waspmote) ou non alimenté par le port USB par exemple (cas des Arduino et iMote2)

Nous allons utiliser les Arduino pour ce TP5
.

Au niveau des modules XBee, avec un coordinateur

Dans une première étape vous pouvez utiliser les modules XBee pour définir des période d'activité et des période d'inactivité comme expliqué ici. Le manuel des modules XBee peut être téléchargé ici. Vous pouvez configurer les modules XBee à partir de votre programme Arduino en envoyant des commandes AT. Afin de ne pas changer de manière "permanente" la configuration, vous n'enverrez pas la séquence "ATWR" et comme cela les modifications seront effacées lorsque le module XBee ne sera plus sous tension.

Au niveau de l'application, sans coordinateur

Vous allez ensuite ne pas utiliser la fonctionalité Cyclic Sleep des modules XBee pour implémenter au niveau application des phases d'activité et d'inactivé. Chaque binôme travaillera sur son capteur mais vous devrez interagir pour définir ensemble le format des paquets que vous utiliserez. Il est plus simple d'utiliser un format de type chaîne de caractères. Exemple: "A5#I6#" pour indiquer que votre durée d'activité est de 5s et votre durée d'inactivité est de 6s.

Lorsque vous êtes supposés être en phase d'inactivité, vous ne devez réagir à aucune arrivée de paquet. Le but est de faire en sorte de ne pas perdre de paquet lorsque celui est envoyé alors que vous êtes en inactivité. Pour cela, c'est la partie émission qui doit contenir le contrôle nécessaire: par exemple, vous pouvez vous inspirer des approches à préambule pour vous assurer qu'un paquet sera finalement reçu par un récepteur donné au bout d'un temps fini.

Vous implémenterez aussi une approche synchronisée dans laquelle les capteurs vont s'organiser au démarrage pour que l'un d'entre eux définisse les périodes d'activité et d'inactivité qui seront communes aux autres capteurs.

Encore une fois, chaque groupe implémente sur son capteur le fonctionnement que vous allez définir ensemble. Vous testerez et validerez chaque étape pour produire au final des noeuds capables de se synchroniser par rapport à des périodes d'activité et d'inactivité tout en communicant sans perte de paquets, mais bien sûr avec une plus grande latence due aux période d'inactivité.