radio_ping.py

micro:bit V2 (BBC micro:bit v2) · Fichier : radio_ping.py · Langage : MicroPython · Usage : Communication radio sans fil entre deux micro:bit

La radio 2,4 GHz intégrée permet d'échanger sans routeur : une carte envoie un ping par seconde, l'autre répond pong, et chaque carte affiche les messages reçus. Le module radio gère seul l'adressage par groupe et canal.

Matériel requis

Une BBC micro:bit V2 (nRF52833, matrice 5×5 LED, boutons A/B, accéléromètre + boussole, microphone et haut-parleur) alimentée par USB ou pile. Deux micro:bit V2 (ou plus) ; aucune infrastructure réseau.

Câblage

Aucun câblage. Gardez les cartes à plus de 20 cm la première fois pour éviter la saturation du champ proche.

Fonctionnement

radio.config(group, channel) fixe le réseau logique ; send() diffuse, receive_bytes() lit sans bloquer (None si vide). Le duo ping/pong prouve la liaison dans les deux sens.

Exécution

Ouvrez python.microbit.org, collez le programme MicroPython et envoyez-le vers la carte (la micro:bit apparaît comme lecteur MICROBIT). Appuyez sur reset pour relancer.

Variantes

Envoyez la température ou le compteur de pas plutôt que ping, ou passez en radio.send_number() pour un protocole binaire compact.

radio_ping.py

# Radio 2.4 GHz : ping/pong entre deux micro:bit (canaux 1-100).
# A charger sur DEUX cartes ; la V2 inclut la radio BLE/802.15.
from microbit import *
import radio

radio.config(group=7, channel=40, power=6)
radio.on()

compteur = 0
while True:
    # Envoyer un ping chaque seconde.
    compteur += 1
    radio.send('ping %d' % compteur)
    display.show(Image.YES)

    # Ecouter la reponse pendant 1 s (non bloquant par morceaux).
    t0 = running_time()
    while running_time() - t0 < 1000:
        msg = radio.receive_bytes()
        if msg:
            display.scroll(msg.decode(), delay=60)
            break
        sleep(20)

    # Repondre a tout ping recu d'une autre carte.
    msg = radio.receive_bytes()
    if msg and msg.startswith(b'ping'):
        radio.send('pong %s' % msg[5:].decode())

# radio.on() active la pile ; send/receive utilisent le groupe.
# port=... permet plusieurs reseaux sur le meme canal.

← Retour à la fiche