radio tower, de Luca Serazzi, publié sous licence Creative Commons by 2.0.

TP5 — Communiquer avec une autre carte

Crédits

Cette séance est inspirée de celle de mes collègues Stéphane Colomban et Jérémy Chevillot. Merci à eux.

Pour l'ensemble des exercices de cette partie, chaque binôme d'élèves devra se munir de deux cartes Micro:bit.

📡 Comment faire communiquer deux cartes ?

La carte Micro:bit est équipée d'un émetteur/récepteur radio qui permet à deux cartes de communiquer à distance.

Instructions

Les instructions disponibles sont :

  • radio.on() : allume la radio. À écrire obligatoirement avant toute utilisation de la radio ;
  • radio.config(channel=7) : configure le canal radio sur lequel vous allez émettre et recevoir (comme les Talkie-Walkies) ; les canaux disponibles vont de 0 à 83 (celui par défaut étant le numéro 7). Les deux cartes qui communiquent entre elles doivent utiliser le même canal (donc le même numéro) ;
  • radio.send("message") : envoie la chaîne de caractères (texte) message. Notez qu'il n'est possible d'envoyer que du texte avec cette méthode. Pour envoyer un nombre (par exemple le résultat de l'opération 1+1), il faudra d'abord convertir ce message en une chaîne de caractères avec la méthode str() : radio.send(str(1+1)) (au lieu de radio.send(1+1) qui échouera).
  • radio.receive() : reçoit le prochain message à être diffusé sur le canal de réception ;
  • radio.off() : éteint la radio.

Pour plus d'informations, voir la documentation officielle.

Exercice

On fabrique un compteur formé de deux cartes :

  • l'afficheur affiche le compteur (des nombres de 0 à …) ;
  • en appuyant sur les boutons gauche et droite du contrôleur, on peut augmenter ou diminuer le compteur.
  1. Mise en place

    1. Chaque élève télécharge un des programmes suivants :

    2. Chaque élève flashe son programme sur sa carte micro:bit. Cela doit alors fonctionner :

      • un des élèves voit le compteur sur sa carte ;
      • l'autre peut contrôler, avec les boutons gauche et droite, la valeur du compteur sur l'autre carte.

      Remarquez qu'à ce stade, toutes les cartes des élèves communiquent sur le même canal : votre carte « contrôleur » n'agit pas seulement sur la carte de votre binôme, mais aussi sur toutes les cartes des élèves de la classe (à conditions que le programme compteur-afficheur.py y soit installé).

  2. Amélioration du programme

    1. Lisez et comprenez les deux programmes.
    2. Modifiez le canal utilisé (en choisissant un nombre entre 1 et 83, différent de celui des autres élèves de la classe). Vérifiez que cela fonctionne toujours.
    3. Modifiez les deux programmes pour que lorsque la carte « contrôleur » est secouée, le compteur est remis à zéro.
    4. ✋ Appelez le professeur pour vérifier votre travail.

⛅ Station météorologique

On souhaite réaliser une station météorologique (rudimentaire) composée de deux parties : un capteur à l'extérieur qui effectue les mesures, et une interface à l'intérieur qui affiche ces mesures.

  • La première carte est le capteur placé à l'extérieur : à la réception d'un message, elle mesure la température ou la luminosité, et renvoie cette information.
  • La seconde carte est l'interface, à l'intérieur : lorsque l'utilisatrice appuie sur un des boutons, elle envoie un message à l'autre carte pour demander la température (bouton A) ou la luminosité (bouton B), et affiche le résultat.
  1. Chaque élève télécharge un des programmes suivants dans son dossier personnel.

    • meteo-interface.py : Interface : lorsque l'utilisatrice appuie sur le bouton A, envoie le message "température" ; lorsque l'utilisatrice appuie sur le bouton B, envie le message "luminosité". Puis attend que l'autre carte réponde, et affiche la valeur reçue (température ou luminosité).
    • meteo-capteur.py : Capteur : lorsque le message "température" est reçu, renvoit la température ; lorsque le message "luminosité" est reçu, renvoit la luminosité.

      ⚠️ Attention : Avec la carte micro:bit, la température comme la luminosité sont des nombres, qu'il faudra convertir en chaînes de caractères avant de les envoyer par radio : radio.send(str(XXX)).

  2. Complétez les programmes pour qu'ils fonctionnent (pour tester la luminosité, on pourra cacher la carte avec sa main pour faire baisser la luminosité).

  3. Bilan

    • enregistrez vos deux programmes, puis rendez-les sur Pronote (rubrique « Travail à faire ») ;
    • complétez la fiche bilan ;
    • rendez-la au professeur ;
    • passez au TP suivant.