Pour utiliser votre carte en mode Radio avec votre groupe de travail, vous devez convenir d'un canal radio commun à utiliser. Pour éviter les conflits entre groupes, vous devez choisir un des canaux proposés dans le tableau ci-dessous. Pour connaître les canaux que vous pouvez utiliser, vous devez tenir compte du numéro de votre carte qui se trouve indiqué dans le coin supérieur gauche de celle-ci (voir image ci-dessous).
Ici le numéro de la carte est 1K. Pour rappel, le 1 correspond au numéro de lot et le K correspond à l'identifiant de votre carte dans le lot. seule la lettre nous intéresse ici, soit K. Le nunéro du groupe radio correspondant d'après le tableau est donc 11
Il vous suffit de déterminer le groupe radio associé à chacune des cartes de votre groupe de travail et de choisir l'un d'entre eux. Par exemple, si votre groupe dispose des cartes d'identifiants K, N, P, R vous pouvez utiliser au choix l'un des canaux 11,14,16 et 18. A vous de vous metre d'accord sur un canal commun, par exemple dans notre cas le 11
Code carte | N° Groupe Radio | Code carte | N° Groupe Radio |
A | 1 | N | 14 |
B | 2 | O | 15 |
C | 3 | P | 16 |
D | 4 | Q | 17 |
E | 5 | R | 18 |
F | 6 | S | 19 |
G | 7 | T | 20 |
H | 8 | U | 21 |
I | 9 | V | 22 |
J | 10 | W | 23 |
K | 11 | X | 24 |
L | 12 | Y | 25 |
M | 13 | Z | 26 |
Attention en mode bloc le numéro de série retourné peut être incorrect (ex 2031825546.9999999). Cette erreur a été reportée à l'équipe microbit et est en cours de traitement (voir bug report 1640)
The micro:bit has a register mapped into it's memory called the FICR (factory information configuration register) that stores information programmed in at manufacturing time. One of the items programmed in is a unique* serial number. The serial is actually a 64-bit factory generated pseudo-random number etched into each processor. Only 32 bits are used here though (as that makes it consistent for all the micro:bit higher level languages to deal with), and still enables it to be unique for most practical applications. To put this into context, you'd need about 100,000 to 250,000 micro:bits in one place to expect a duplication.
Voici un exemple d'un tel code récupéré sur une carte : 0x761b118b (en python)
A savoir : en mode bloc le numéro de série et retourné en base 10 : ex 1922218046
Un site de référence : makecode.microbit.org
Blocs pour la gestion du numéro de série :
Activer l'envoi du numéro de série de la carte lors des échanges :
Récupérer le numéro de série à la réception d'un paquet
Concaténer le numéro de série à d'autres informations :
Documentation correspondante : set-transmit-serial-number et received-packet
A savoir : en python le numéro de série et retourné en base 16 : ex 0x761b118b
Un site de référence : microbit-challenges.readthedocs.io
Un autre site de référence : microbit-micropython.readthedocs.io
from microbit import *
display.show('S')
def get_serial_number(type=hex):
NRF_FICR_BASE = 0x10000000
DEVICEID_INDEX = 25 # deviceid[1]
@micropython.asm_thumb
def reg_read(r0):
ldr(r0, [r0, 0])
return type(reg_read(NRF_FICR_BASE + (DEVICEID_INDEX*4)) & 0xFFFFFFFF)
while True:
if button_a.was_pressed():
display.scroll(get_serial_number())
sleep(1000)
display.show('S')
sleep(100)
Le code nécéssaire pour récupérer le numéro de série de la carte est un code assembleur. N'hésitez pas à demander à votre enseignant ce qu'il signifie.
Documentation correspondante : how-to-read-the-device-serial-number
from microbit import *
import radio
radio.on()
radio.config(channel=1) # Choose your own channel number
radio.config(power=7) # Turn the signal up to full strength
# Event loop.
while True:
incoming = radio.receive()
if incoming is not None:
display.show('R')
print(incoming)
sleep(500)
Le code nécéssaire pour récupérer le numéro de série de la carte est un code assembleur.
from microbit import *
import radio
#Renseigner votre identifiant carte
my_card_identifier="1A"
radio.on()
radio.config(channel=1) # Choose your own channel number
radio.config(power=7) # Turn the signal up to full strength
display.show('R')
def get_serial_number(type=hex):
NRF_FICR_BASE = 0x10000000
DEVICEID_INDEX = 25 # deviceid[1]
@micropython.asm_thumb
def reg_read(r0):
ldr(r0, [r0, 0])
return type(reg_read(NRF_FICR_BASE + (DEVICEID_INDEX*4)) & 0xFFFFFFFF)
while True:
if button_a.was_pressed():
display.show(">>>")
# Send a message
radio.send(my_card_identifier+';'+get_serial_number())
sleep(1000)
display.show('R')
sleep(100)