radio_ping.py
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.