🛠 Créer un périphérique Bluetooth LE piloté depuis le téléphone

Arduino MKR WiFi 1010 · intermediaire · Schéma : IMG-mkr-wifi-1010-intermediaire-3-mkrwifi-ble-peripheral.svg — MKR WiFi 1010 en périphérique BLE diffusant un service « Led » avec une caractéristique lisible et inscriptible, smartphone exécutant nRF Connect en rôle central.

Objetivos

Activar el Bluetooth Low Energy del módulo NINA-W102 con la biblioteca ArduinoBLE: la placa se convierte en periférico, difunde un servicio personalizado con una característica de lectura/escritura, y un teléfono (aplicación gratuita nRF Connect) enciende el LED D6 al escribir 0 o 1. La MKR WiFi 1010 es una de las pocas plataformas de microcontrolador que funciona como cliente BLE y como host.

Material

Código completo

#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");
  }
}

Verificación esperada

En nRF Connect, el dispositivo «MKRWiFi1010» aparece en el escaneo; al conectarse, se encuentra el servicio y su característica, y escribir 01 enciende el LED D6, 00 lo apaga. El monitor serie muestra la dirección MAC del central conectado y luego «deconnecte» al desconectarse.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales