Cómo descubrir un dispositivo Bluetooth LE personalizado

Tengo una placa de circuito personalizada que usa un chip Bluetooth LE de Nordic Semiconductor. Hablaré con este dispositivo con una aplicación de iOS y soy nuevo en BTLE y estoy algo confundido por todo el flujo de descubrimiento/emparejamiento. Nuestro dispositivo simplemente envía texto ASCII, que es un formato de datos personalizado.

El EE que desarrolló esta placa no me ha dado mucha orientación sobre cómo conectarme a ella. Cuando uso la aplicación LightBlue para iOS, puedo ver el dispositivo y sus UUID. Los UUID que veo son exactamente los mismos que los UUID en la aplicación Nordic nRF UART .

Mis preguntas principales son:

  • ¿Qué UUID necesitarán usar mis placas? Habrá más de una placa, por lo que parece que cada una tendrá su propio UUID.
  • ¿Mi dispositivo necesita obtener algún UUID "especial" de bluetooth.org?

Sé que hay diferentes UUID tanto para el servicio como para las características... mis preguntas se aplican a todos estos.

Dice placas, ¿va a programar el dispositivo BLE real o está hablando de qué UUID necesita en su aplicación iOS? Solo se necesita un UUID "especial" si está utilizando los perfiles estandarizados de Bluetooth SIG (frecuencia cardíaca, proximidad, glucosa, etc.)
Aquí está el descubrimiento del servicio bien documentado: devzone.nordicsemi.com/documentation/nrf51/5.0.0/html/…
Sí, yo (o mi EE) programaremos el dispositivo. Entonces, estoy hablando de los UUID que transmitirá el dispositivo (lo que dictará lo que buscaremos en la aplicación iOS, obviamente).
que chip estas usando

Respuestas (1)

No, el UUID debe ser el mismo para todas sus placas. Sé por qué puede pensar que esto es extraño, pero son los servicios los que se ven y actúan de la misma manera, las placas no tienen que hacerlo. Pero, si sus tableros realizarán tareas diferentes, entonces tal vez podría agregar servicios diferentes y más específicos a cada uno de ellos. Para identificar cuál es uno y quién es el otro, debe cambiar el nombre del dispositivo. Una forma común de hacer esto es buscar el mismo UUID de iOS y luego obtener una lista de nombres de dispositivos que transmiten este UUID específico. Si está utilizando un dispositivo nRF51822, dígale a su EE que puede tener nombres únicos en lugar de UUID únicos cambiando esta línea en main.c para identificar más fácilmente sus diferentes placas.

#define DEVICE_NAME                          "Device_name" // <<-- this line

// In gap_params_init
sd_ble_gap_device_name_set(&sec_mode,(const uint8_t *)DEVICE_NAME, strlen(DEVICE_NAME));

Si su dispositivo va a anunciar un tipo de servicio Bluetooth SIG (Grupo de interés especial), el UUID debe ser un valor estandarizado de 16 bits del SIG. Estos se pueden encontrar aquí. Cuando esté utilizando un chip de Nordic Semiconductor, verá que en sus bibliotecas, todas las definiciones de servicios y características ya están definidas.

Extracto de estas páginas de documentación :

#define BLE_UUID_ALERT_NOTIFICATION_SERVICE                      0x1811     /**< Alert Notification service UUID. */
#define BLE_UUID_BATTERY_SERVICE                                 0x180F     /**< Battery service UUID. */

Por otro lado, el servicio Nordic UART es un servicio personalizado. Para usar un servicio personalizado, debe generar un UUID aleatorio de 128 bits y agregarlo al servicio usted mismo. Dado que su EE ya lo ha hecho, no hay problema en simplemente cambiarlo.