Site ELEC344/ELEC381

Partie interactive du site pédagogique ELEC344/ELEC381 de Télécom ParisTech (occurrence 2010).

Catégories

Communication challenge 2010

Le but de ce challenge est de vous faire utiliser un protocole de communication conçu pour l’occasion, tout en vérifiant que vous savez utiliser les différents périphériques de votre carte de TP. Ce challenge est conçu en étapes successives : la carte annonce au serveur l’étape qu’elle souhaite vérifier. Les étapes doivent se faire dans l’ordre croissant et aucune ne peut être omise sous peine de causer la disqualification du participant.

Description du protocole

  • Le protocole est basé sur des chaînes de texte terminées au choix de l’envoyeur par l’un ou les deux de « \r » et « \n ».
  • Les différentes composantes de chaque échange sont formés à partir de chaînes de caractères (sans délimiteur) et d’entiers positifs ou nuls.
  • Toutes les entités sont séparées par des espaces.
  • Aucun espace n’est autorisé en début ou en fin de commande, et un double-espace est interdit.
  • À l’exception de la commande « STEP » qui est envoyée spontanément par le client (votre carte), toutes les opérations sont initiées par le serveur et sont suivies d’une réponse du client.
  • Toute commande non comprise par le client ou mal formée doit être ignorée et ne doit provoquer l’envoi d’aucune réponse.
  • Aussi bien le serveur que le client peuvent, à tout moment, envoyer une ligne vide qui sera ignorée.
  • Un message ne comprendra jamais plus de 256 caractères.

Étape 1 : configuration Zigbee

  • Configurer la carte Zigbee pour que son identité soit vos initiales (comme lors du TP), sauf pour François-Xavier qui choisira « FX ».
  • Les réponses seront envoyées à l’identité « CC » : il faut donc configurer dans DH et DL l’adresse idoine.
  • Bien que cela ne soit aucunement obligatoire, il est conseillé d’utiliser le mode API 1 du module Zigbee : ce mode permet de savoir si un paquet a bien été reçu par le destinataire ou s’il est nécessaire de le retransmettre.
  • Envoyer le message « STEP 1″ au serveur.

Cette configuration Zigbee devra être maintenue pour les étapes suivantes. De plus, chaque commande implémentée devra le rester, car elle sera utilisée dans la suite du challenge. Chaque étape peut constituer en plusieurs cycles commande/réponse.

Étape 2 : gestion d’une commande simple

  • Envoyer le message « STEP 2″ au serveur.
  • Accepter la commande « PING ».
  • Répondre en renvoyant « PONG ».

Étape 3 : gestion d’une commande avec arguments

  • Envoyer le message « STEP 3″ au serveur
  • Accepter la commande « ADD t n1 n2 n3 … nt » où « t » (un entier positif) est le nombre d’entiers positifs ou nuls qui suivront.
  • Répondre en renvoyant « ADD-R m » où « m » est l’addition des entiers « n1″ à « nt ».

Étape 4 : afficheur LCD

  • Envoyer le message « STEP 4″ au serveur.
  • Accepter la commande « LCD n [chaîne] » où « n » vaut 1 ou 2 et « chaîne » est une chaîne de caractères délimitée par les caractères « [" et "] » et pouvant contenir des espaces.
  • Répondre en renvoyant « LCD-R m » où « m » est le nombre de caractères de la chaîne contenue entre « [" et "]« 
  • Afficher la chaîne de caractères sur l’afficheur LCD en la faisant défiler si et seulement si la chaîne fait plus de 16 caractères. Attention, le défilement doit se faire en tâche de fond et continuer tant qu’autre chose n’a pas été spécifié.
  • L’affichage sur les deux lignes doit être indépendant.
  • Si une chaîne fait moins de 16 caractères, les caractères non affichés sur la ligne concernée doivent être effacés (remplacés par des espaces).

Étape 5 : boutons poussoirs

  • Envoyer le message « STEP 5″ au serveur.
  • Accepter la commande « SWITCH » et attendre, une fois que les deux boutons sont relâchés, qu’un bouton soit appuyé par l’utilisateur.
  • Répondre en renvoyant « SWITCH-R s » où « s » vaut soit « LEFT » si le bouton de gauche a été pressé, soit « RIGHT » si le bouton de droite a été pressé.
  • Pour valider cette étape, faire les tests proposés.

Étape 6 : leds

  • Envoyer le message « STEP 6″ au serveur.
  • Accepter la commande « LEDS r g b » où « r », « g » et « b » sont des valeurs entre 0 et 255 correspondant au rapport cyclique à positionner respectivement sur les leds rouge, verte et bleue. 0 correspond à un rapport cyclique de 0% (led éteinte), 255 correspond à un rapport cyclique de 100% (led allumée), et les valeurs intermédiaires sont à traiter linéairement.
  • Répondre en renvoyant « LEDS-R n » où « n » est la somme de « r », « g » et « b ».
  • Pour valider cette étape, faire les tests proposés.

Étape 7 : buzzer

  • Envoyer le message « STEP 7″ au serveur.
  • Accepter la commande « BUZZER n f1 d1 f2 d2 … fn dn » où « n » est le nombre de notes envoyées, et « fi » et « di » la fréquence et durée en millisecondes de la note « i ». Une fréquence de 0 signifie l’arrêt du buzzer pendant le temps indiqué. La dernière durée peut être nulle.
  • Répondre en renvoyant « BUZZER-R n » lorsque la mélodie a été jouée.
  • Pour valider cette étape, faire les tests proposés.

Étape 8 : consommation

  • Envoyer le message « STEP 8″ au serveur.
  • Accepter la commande « CURRENT ».
  • Répondre en renvoyant « CURRENT-R n » où « n » est la consommation moyenne de courant sur les trois dernières secondes en micro-ampères.

11 comments to Communication challenge 2010