BBC micro:bit : Comment récupérer rapidement les numéros de série d'un lot de cartes

L'idée est d'utiliser une carte micro:bit connectée à un PC. Cette carte va réceptionner via la communication radio les numéros de séries des autres cartes micro:bit. Ces numéros série s'affichent dans une console sur le PC, console associée à votre carte micro:bit via la liason série USB. Il vous suffit ensuite de faire un copier/coller de la liste obtenue dans la console dans un ficheir texte. Vous pouvez également modifier le programme du serveur pour sauvegarder les numéros reçus directement dans un fichier texte.

Serveur: réception sur le canal radio1 et envoie vers TeraTerm

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.

Client : émission du numéro de série sur le canal radio 1


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)

( Christophe Béasse - novembre 2018 )