Skip to content

Activité

Balise de proximité

Avancé | MakeCode, Python | Radio, Écran LED | Communication, Ondes radio, Opérateurs arithmétiques

Étape 1 : Fais-le

Qu'est-ce que c'est ?

Utilisez la radio pour évaluer la distance entre deux micro:bits, puis créez un jeu de chasse aux trésors ou utilisez-le pour aider les gens à savoir s'ils respectent une distance sociale sûre.

Introduction

Guide de codage

Comment ça marche

  • Vous avez besoin d'au moins 2 micro:bits. Nous allons créer deux programmes différents, un pour la balise qui envoie constamment un message radio de faible puissance. L'autre programme est pour le récepteur.
  • Quand le récepteur reçoit un message de la balise, il stocke sa force dans une variable appelée signal et l'affiche sur son affichage LED.
  • Les signaux radio se renforcent lorsque vous vous rapprochez de l'émetteur, donc si le signal est fort, cela signifie que l'autre micro:bit est probablement proche.
  • Si le signal radio est faible, l'autre micro:bit est probablement plus éloigné.
  • Il affiche un graphique en barres qui s'agrandit plus fort le signal et plus près vous vous trouvez. Il utilise le bloc projeter de la bibliothèque Maths pour convertir les numéros de force du signal radio de la plage -95 (faible) à -42 (fort) à une plage de 0 à 9 que nous pouvons utiliser pour tracer un graphe à barres.

Version en Python 

  • Python n'a pas de graphique à barres ou de fonction "projeter", donc il fonctionne un peu différemment. Toutes les LEDs s'allument lorsque vous vous rapprochez de la balise, et plus vous êtes proches, plus leur luminosité augmente.
  • On prend des mesures d'intensité radio à l'aide de la commande radio.receive_full(). Elle fournit le message reçu, la force du signal et un horodatage. Nous voulons seulement connaître la force du signal, donc nous utilisons signal = message[1] pour l'extraire et la stocker dans une variable appelée signal.
  • La force du signal peut se situer entre -98 (plus faible) et -45 (plus forte), et le programme Python définit une fonction appelée map pour convertir des nombres vers la plage de 0 à 9 que nous pouvons utiliser pour modifier la luminosité des LED : 0 signifie désactivé, 9 est l’intensité LED la plus forte. (Vous voudrez peut-être réutiliser cette fonction dans d'autres projets Python car elle fonctionne comme le bloc projeter dans MakeCode).
  • Le programme Python crée une image vide de taille 5x5 appelée light en utilisant la commande light = Image(5,5)
    Sa luminosité est modifiée en utilisant la commande light.fill().

Ce dont vous aurez besoin

  • 2 micro:bits et boîtes de piles
  • MakeCode ou éditeur Python
  • un boîtier de piles (optionnel)

Étape 2 : Programme-le

Émetteur / Balise

1from microbit import *
2import radio
3radio.config(group=1, power=1)
4radio.on()
5
6while True:
7    radio.send('1')
8    sleep(200)
9

Récepteur

1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9    fromRange = fromMax - fromMin
10    toRange = toMax - toMin
11    valueScaled = float(value - fromMin) / float(fromRange)
12    return toMin + (valueScaled * toRange)
13
14while True:
15    message = radio.receive_full()
16    if message:
17        signal = message[1]
18        brightness = map(signal, -98, -44, 0, 9)
19        light.fill(round(brightness))
20        display.show(light)
21

Étape 3 : Améliore-le

  • Combinez le code de la balise et du récepteur pour créer un micro:bit qui fait les deux tâches à la fois.
  • Créez des bracelets pour pouvoir porter vos détecteurs de proximité.
  • Quelle est la puissance du signal lorsque vous êtes à 1 ou 2 mètres de distance ? Modifiez le code pour déclencher une alarme visuelle ou audible quand quelqu'un se rapproche trop.
  • Utilisez ces programmes pour faire un jeu de chasse au trésor : cachez la balise et mettez le code du récepteur sur plusieurs micro:bits
  • Si vous êtes à l'extérieur ou dans un grand espace, expérimentez en changeant la puissance de l'émetteur. Elle peut être n'importe quel nombre de 0 à 7