🛠 Se connecter en BLE UART depuis un smartphone
Objectifs
Exposer un service BLE « UART » (profil série) depuis la micro:bit V2 pour envoyer et recevoir du texte avec un smartphone ou un PC, sans câble. Le module radio MicroPython n'exposant pas de GATT série, on utilise ici MakeCode et son extension Bluetooth.
Matériel
- 1 carte micro:bit V2
- 1 smartphone Android/iOS avec une application « micro:bit » ou « Bluetooth Terminal »
- Éditeur makecode.microbit.org (extension Bluetooth à ajouter)
Code complet
// MakeCode (JavaScript) — ajouter l'extension "Bluetooth"
// Profil Bluetooth: UART (réglage de l'extension)
let trame = ""
bluetooth.onBluetoothConnected(function {
basic.showString("BLE")
})
bluetooth.onUartDataReceived(serial.delimiters(Delimiters.NewLine),
function {
trame = bluetooth.uartReadUntil(serial.delimiters(Delimiters.NewLine))
if (trame === "ROUGE") {
basic.showString("R")
} else if (trame === "COEUR") {
basic.showIcon(IconNames.HEART)
} else {
basic.showString(trame)
}
})
basic.forever(function {
if (input.buttonIsPressed(Button.A)) {
bluetooth.uartWriteString("BOUTON A APPUYE\n")
basic.pause(500)
}
})
La micro:bit reste en BLE (SoftDevice S113) : pas de Wi-Fi ni d'Ethernet sur cette carte. Sous MicroPython, l'équivalent le plus proche reste le module radio, qui n'est pas un profil GATT UART standard.
Vérification attendue
L'application trouve un périphérique « BBC micro:bit », se connecte, puis : taper « COEUR » + entrée affiche un cœur sur la matrice ; appuyer sur A envoie « BOUTON A APPUYE » vers le téléphone.
Erreurs fréquentes
- Extension Bluetooth non ajoutée dans MakeCode : les blocs
bluetooth.*n'existent pas. - Oublier le délimiteur newline dans le terminal : la trame n'est jamais « reçue complète ».
- L'appairage classique échoue : ce profil BLE n'utilise souvent pas de code PIN, connectez-vous côté application.
- Le programme radio ou BLE est déjà occupé : une seule liaison à la fois, déconnectez l'autre app.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython