logo
carte BBC micro:bit
Communication Radio.

Le mode radio  permet de faire communiquer les cartes microbit par ondes radios.


Activité à réaliser :

karp

!!! ATTENTION !!!

Bien regarder le lien suivant : Choisir le groupe radio à utiliser

Prise en main

Tout d’abord on ajoute import radio pour accéder à la librairies des fonctions radio.

Ensuite, puisque la radio consomme de l’énergie et de la mémoire on peut décider quand elle est allumée ou pas.

Une fois allumée la radio est configurée avec des paramètres par défaut. Il est possible de modifier le canal utilisé, la quantité d’énergie utilisée pour la diffusion des messages ansi que la quantité de RAM que les message entrant dans la queue occupent grâce à la fonction radio.config().

La documentation de l’API contient toutes les informations dont tu as besoin pour configurer ta radio selon tes besoins.

Dans cet exemple, nous allons configurer notre radio pour diffuser sur le canal 21.

import radio
radio.on()
radio.config(channel=21)

Ensuite pour envoyer un message on utilise la méthode radio.send(msg) et pour recevoir un message la méthode radio.receive(). Cette dernière est non bloquante, c'est à dire qu'elle n'attend pas la réception d'un message. Si aucun message n'a été reçu au moment de l'appel à cette fonction, cette dernière renvoie la valeur None.

Sinon, il faut savoir qu'au niveau de la réception des messages, est mis en place une file d'attente, dans laquelle les messages reçus sont mis en attente pour une récupération via la méthode receive(). Il s'agit d'une file d'attente de type FIFO (First n Firt Out), c'est à dire que le premier message mis dans la file est aussi le premier sortie.

La taille de cette file est limitée, si elle arrive à saturation, les nouveaux messages reçus sont ignorés.

On peut régler la taille de cette file grâce à la méthode radio.config(queue=4) .

The queue (default=3) specifies the number of messages that can be stored on the incoming message queue. If there are no spaces left on the queue for incoming messages, then the incoming message is dropped.

from microbit import *
import radio

radio.on()
radio.config(channel=19)        # Choose your own channel number
radio.config(power=7)           # Turn the signal up to full strength

my_message = "NSI is amazing !"

# Event loop.
while True:
        radio.send(my_message)
        incoming = radio.receive()
        if incoming is not None:
            display.show(incoming)
            print(incoming)
        sleep(500)

Ressources à votre disposition :

( Christophe Béasse - novembre 2018 )