🛠 Créer un périphérique Bluetooth LE piloté depuis le téléphone
Objectifs
Activer le Bluetooth Low Energy du module NINA-W102 avec la bibliothèque ArduinoBLE : la carte se rend périphérique, diffuse un service personnalisé avec une caractéristique lecture/écriture, et un téléphone (application gratuite nRF Connect) allume la LED D6 en écrivant 0 ou 1. La MKR WiFi 1010 est l'une des rares plateformes microcontrôleur à faire BLE client et hôte.
Matériel
- 1 × Arduino MKR WiFi 1010
- 1 × smartphone Android/iOS avec nRF Connect (ou l'app Arduino NINA BLE)
- Bibliothèque ArduinoBLE installée via l'IDE
- Firmware NINA à jour (le BLE partage le module avec le WiFi)
Code complet
#include "ArduinoBLE.h"
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214");
BLEUnsignedCharCharacteristic ledChar(
"19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
void setup {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // D6
if (!BLE.begin) { Serial.println("BLE KO"); while (1); }
BLE.setLocalName("MKRWiFi1010");
BLE.setAdvertisedService(ledService);
ledService.addCharacteristic(ledChar);
BLE.addService(ledService);
ledChar.writeValue(0);
BLE.advertise;
Serial.println("en attente d'un central...");
}
void loop {
BLEDevice central = BLE.central;
if (central) {
Serial.printf("connecte: %s\n", central.address.c_str);
while (central.connected) {
if (ledChar.written)
digitalWrite(LED_BUILTIN, ledChar.value);
BLE.poll; // fait tourner la pile BLE
}
Serial.println("deconnecte");
}
}
Vérification attendue
Dans nRF Connect, l'appareil « MKRWiFi1010 » apparaît au scan ; en se connectant, on trouve le service et sa caractéristique, et écrire 01 allume la LED D6, 00 l'éteint. Le moniteur série affiche l'adresse MAC du central connecté puis « deconnecte » à la coupure.
Erreurs fréquentes
- Oublier
BLE.polldans la boucle interne : les écritures du central ne sont jamais traitées. - Tester le BLE et le WiFi simultanément avec le firmware Arduino standard : le firmware officiel est orienté WiFi ; l'usage combiné suppose de reprogrammer le module (et casse la certification RF — avertissement officiel Arduino).
- UUID maison non uniques : réutilisez le préfixe
19B1xxxx-E8F2-537E-4F6C-D104768A1214pour éviter des collisions avec des services standard. BLE.beginéchoue (BLE KO) : firmware NINA pas à jour, ou un autre croquis occupe encore le module — resettez la carte.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
scan-wifi.inoArduinoconnexion-wpa2.inoArduinohttp-get.inoArduinoserveur-web-led.inoArduinohorloge-ntp.inoArduinoudp-diffusion.inoArduino