Envíe características GATT personalizadas usando HM-10 (en realidad un CC2541)

Pregunta breve: ¿cómo envío datos como características GATT desde un dispositivo BLE periférico (Android UNO + HM-10) a un dispositivo central (es decir, un teléfono inteligente Android?)


Estoy trabajando en un periférico BLE como proyecto de aprendizaje en este momento: estoy usando un Arduino Uno y un HM-10. Hasta ahora va bien: los sensores funcionan y puedo enviar estos datos desde Arduino Uno a Android usando un módulo HM-10 BLE (en realidad, un clon CC2541) en el servicio estándar y la característica de este dispositivo:

  • Servicio UUID: 0000 ffe0 -0000-1000-8000-00805f9b34fb
  • Característica: UUID: 0000 ffe1 -0000-1000-8000-00805f9b34fb

Trabajando de esta manera, el HM-10 emula una conexión serial bluetooth tradicional. ¡Todo bien hasta ahora!

Lo que me gustaría hacer ahora es enviar los datos utilizando los servicios y características aceptados por el GATT. Por ejemplo, digamos que me gustaría usar el servicio de velocidad y cadencia de carrera para enviar mis datos de forma que cualquier aplicación compatible pueda verlos. Necesitaría cambiar el servicio a 0x1814 y las características a:

  • Cadencia: 0x27A8
  • Velocidad: 0x27A6
  • Gradiente: 0x2763

Creo que podría hacer esto usando los comandos AT:

  • AT+UUID0x1814
  • AT+CHAR0x2763

Creo que estoy bien con todo esto hasta ahora, pero no puedo encontrar orientación sobre cómo definir múltiples características y cómo enviar los datos de mi sensor a mi dispositivo central como características GATT.

Por ejemplo, mi velocidad es 10kmh-1 y mi cadencia es 80. ¿Cómo especifico las características GATT para esto y notifico al dispositivo central cuando cambian? También una pregunta adicional: ¿puedo incluir una característica adicional para el gradiente?

He buscado a fondo pero no puedo encontrar nada sobre esto. ¡Gracias!

Esto se ha editado para eliminar la etiqueta arduino, pero si alguno de los encuestados pudiera tener en cuenta que estoy trabajando en el IDE de Arduino, se lo agradecería :) ¡Soy nuevo en esto y es probable que me confunda fácilmente! ja ja.

Respuestas (2)

AT+NOTI lamentablemente no es el comando correcto. El manual dice:

EN+NOTI[P1]

Si este valor se establece en 1, cuando el enlace ESTABLECIDO o PERDIDO, el módulo enviará una cadena OK+CONN o OK+LOST a través de UART.

Creo que no es posible hacer lo que quieres. He estado buscando todo el día, pero solo hay esta característica personalizada, y solo puede cambiar el UUID corto. No encontré ninguna forma de obtener datos de otros UUID en modo central.

Aquí hay más información: BLECentral - Módulo HM-10 BLE

Editar: con la nueva versión de firmware> V546, existe la posibilidad de usar UUIds de 128 bits. Un archivo Léame + el software necesario se encuentra aquí: Sitio web de jnhuamao . Y V605 dice:

Léame de hm-10

Desafortunadamente, todavía no logré actualizar el firmware.

Creo que estás buscando AT+NOTI. Consulte la hoja de datos para obtener información específica, pero notificar es lo que pasa de esclavo a maestro.