Utiliser la communication radio

Le module radio permet d'envoyer ou de recevoir des message vers ou depuis une ou plusieurs cartes microbit.

La communication se fait sans fil sur une fréquence entre 2,4GHz et 2,5Ghz selon le canal (numéroté entre 0 et 83) choisi.

Les messages ont une taille maxi de 251 caractères. Par défaut, la taille est fixée à 32 caractères.

Pour utiliser la radio, vous devez avoir 2 cartes microbit. La communication radio est très simple à mettre en oeuvre comme vous pourrez le voir. Attention cependant, les communications ne sont pas chiffrées, évitez de transmettre des informations sensibles ! !

Initialiser la communication

commencer par importer le module radio

import radio

puis activez la radio qui par défaut est désactivée pour des raisons d'économie d'énergie

radio.on()

La transmission peut alors s'établir entre plusieurs cartes

Envoyer et recevoir

Pour envoyer un message sous forme d'une chaîne de caractères, utiliser

radio.send(message)

pour recevoir, utiliser

radio.receive()

Difficile de faire plus simple ! !

ExempleEnvoyer le message "Hello World" d'une carte à l'autre

Sur la carte émettrice, tapez le programme suivant :

1
from microbit import *
2
import radio
3
4
radio.on()
5
while True:
6
    if button_a.was_pressed():
7
        radio.send("Hello World !!")

Sur la carte réceptrice, tapez le message suivant :

1
from microbit import *
2
import radio
3
4
radio.on()
5
while True:
6
    incoming = radio.receive()
7
    if incoming:
8
        display.scroll(incoming)

Appuyez sur le bouton A de la carte émettrice et le message défile sur l'autre carte.

Envoyer un couple de 2 entiers

Imaginons que l'on souhaite faire un jeu de bataille navale en réseau, nous allons avoir besoin de transmettre un couple de coordonnées x et y par radio à l'autre carte. Cela se fait selon le même principe que celui décrit ci-dessus. On ajoute seulement une partie de code pour ecapsuler et désencapsuler les informations qui nous intéressent dans une chaîne de caractère.

Dans l'exemple qui suit, on fait bouger un pixel sur une carte en utilisant les boutons et on observe sur l'autre carte le pixel bouger de la même manière.

ExempleBouger un pixel sur 2 écrans

Sur la carte émettrice :

1
from microbit import *
2
import radio
3
4
radio.on()
5
6
def envoi():
7
    display.clear()
8
    display.set_pixel(x,y,9)
9
    message = "{},{}".format(x, y)
10
    radio.send(message)
11
12
x, y=0,0
13
envoi()
14
while True:
15
    if button_b.was_pressed():
16
        x = (x+1)%5
17
        envoi()
18
    if button_a.was_pressed():
19
        y = (y+1)%5
20
        envoi()

Sur la carte réceptrice :

1
from microbit import *
2
import radio
3
4
radio.on()
5
6
while True:
7
    incoming = radio.receive()
8
    if incoming:
9
        try:
10
            target_x, target_y = incoming.split(',')
11
        except:
12
            continue
13
        x, y = int(target_x), int(target_y)
14
        display.clear()
15
        display.set_pixel(x, y, 9)

ComplémentConfiguration avancée de la radio

Tout ce que l'on vient de voir a l'avantage de marcher immédiatement mais si on fait cela dans une même salle de classe, gare aux interférences ! Il va falloir que chaque groupe d'élèves configure sa radio de manière unique pour éviter les problèmes.

Configuration de la fréquence

radio.config(channel=XX)

où XX est un numéro entre 0 et 83. Ce paramètre détermine la fréquence d'émission.

Configuration de l'adresse

radio.config(address=0x75626974)

L'adresse, codée sur 4 octet, permet de filtrer les messages qui nous sont destinés. Seuls ceux provenant d'une carte présentant la même adresse seront pris en compte. L'adresse donnée en exemple peut être modifiée, c'est l'adresse par défaut utilisée.

Configuration du groupe

Au sein d'une même adresse, 256 groupes numérotés de 0 à 255 peuvent cohabiter :

radio.config(group=7)

seules les cartes possédant la même adresse et le même numéro de groupe communiqueront.

Comme vous le voyez, il est tout à fait possible de faire communiquer plusieurs groupes de personnes sans risquer d'interférences.

Autres paramètres configurables

  • radio.config(queue=3) : nombre de messages dans la file d'attente. Au delà de 3 messages en attente, ils seront supprimés.

  • radio.config(length=32) : longueur maximum du message. Celle-ci peut aller jusqu'à 251.

  • radio.config(power=6) : puissance d'émission du signal (allant de 0 à 7)

  • radio.config(data_rate=radio.RATE_1MBIT) : vitesse de transmission. Les vitesses admissibles sont RATE_250KBIT, RATE_1MBIT ou RATE_2MBIT

RemarqueRéinitialiser les paramètres

radio.reset() permet de revenir aux réglages par défaut.