No es un día sin deportes: reprogramando un monitor de frecuencia cardíaca chino

"Escucha, ¿qué tipo de frecuencia cardíaca deberías tener mientras trotas?"
- Bueno, no lo sé - 150 visitas
- ¿Sí? ¿Por qué tengo 840?
- ¿840 por minuto?
- ¿Y qué, era necesario considerarlo en un minuto o qué?
"¿Qué pensaste?"
"Bueno, solo conté hasta que me perdí ... Entonces, está bien, fui a contar".
(película "Día de las elecciones")

Casi exactamente sobre el monitor de frecuencia cardíaca chino. Como dice el refrán, si quieres hacer algo bien, entonces hazlo tú mismo. Y si el dispositivo no funciona como se requiere, entonces ¿tal vez sea posible mejorarlo?


Muchas personas interesadas en los deportes controlan su frecuencia cardíaca durante el ejercicio. Para esto, se utilizan monitores de frecuencia cardíaca. No es tarea de este artículo considerar todos sus tipos, pero uno de los más confiables y probados son los sensores de pulso para el pecho que reciben señales eléctricas del corazón.

En relación con mi mayor actividad física, se compró el monitor de frecuencia cardíaca Kyto 2809. El pulso es bueno, pero era necesario medir con precisión los intervalos RR. El monitor de frecuencia cardíaca admite dos protocolos: ANT + y BLE. Según las especificaciones, ambos, además de la frecuencia cardíaca directa, transmiten la duración de los intervalos RR.

¿Qué son los intervalos RR?
RR – R .


RR , . . , (. « RR » « »). .

Para grabar datos de ambos canales, se escribió una aplicación de Android para satisfacer sus necesidades con un registro de datos en archivos de texto. Se envió un monitor de frecuencia cardíaca analógico como un estándar más o menos adecuado, enviando una señal a una frecuencia de 5.3 kHz, conectada directamente a una PC a través de un arduino.

La primera comparación fue un poco triste.


El "dispositivo" para un latido cardíaco real mostró 4-5 inexistentes (en el gráfico azul puede ver una gran cantidad de puntos). El pulso, incluso teniendo en cuenta el posible promedio, no brilla con precisión. Acerca de medir los intervalos RR del habla no se aplica en absoluto.

La comunicación con el fabricante no trajo resultados. Además de varios videos, intenta convencerme de que todo está bien, y las frases: "¡Los datos de frecuencia cardíaca KYTO2809 son precisos!", No obtuve nada de ellos. Luego su mirada cayó sobre la caja con destornilladores. Al abrir el caso, descubrí el chip nRF51422.


Sabiendo que hay un SDK para estos MK, decidí intentar actualizarlo. Allí se necesita el programa más simple: desde el amplificador de las señales eléctricas del corazón (una gota negra en la foto), la señal va a la entrada MK, y luego es una cuestión técnica, captamos los pulsos a través de las interrupciones, medimos el tiempo entre ellos y mostramos todo esto a través de BLE y ANT +. Todo es simple, pero aparentemente algo salió mal con los programadores chinos.

Estos chips se programan a través de SWD. El firmware nativo estaba protegido contra la lectura. Por lo tanto, sin dudarlo, se ejecutó el comando "formato c:" "--eraseall". La placa incluso muestra los contactos correspondientes. Entrada desde el amplificador de señales eléctricas del corazón P0.07. El pinout del módulo BLE en sí es (de arriba a abajo):
  1. GND
  2. Vdd
  3. P0.30
  4. P0.00
  5. P0.01
  6. P0.02
  7. P0.03
  8. P0.04
  9. P0.05
  10. P0.06
  11. P0.07
  12. P0.08

El SDK contiene muchos ejemplos suficientes para escribir su propio firmware. El chip es bastante antiguo y el SDK para él también está desactualizado, versión 10. Al usarlos, los servicios BLE se generaron en el monitor de frecuencia cardíaca: información del dispositivo, servicio de batería, frecuencia cardíaca. Se ha agregado un perfil HeartRate para ANT +. Medimos los intervalos RR con un temporizador, enviamos datos a los perfiles BLE y ANT +. Para ahorrar carga en ausencia de estímulos externos (en 5 segundos), el monitor de frecuencia cardíaca se pone en modo de suspensión. Cuando aparece un pulso (interrupciones en la entrada), el MK se despierta. En el firmware del fabricante, Kyto2809 transmitía constantemente paquetes publicitarios a través de BLE, es decir. cuando se usa solo el canal ANT +, BLE continuó enviando paquetes y agotando la batería. Limité el tiempo de publicidad a 5 minutos, lo que debería tener un efecto positivo en la rentabilidad.
Las pruebas han demostrado que para el parámetro de frecuencia cardíaca calculada es mejor introducir filtrado (descartar datos deliberadamente inexactos, es decir, un pulso inferior a 30 y superior a 240) y promediar con un promedio móvil. La comparación final con el monitor de frecuencia cardíaca analógico a continuación. Diferencias en las mediciones de intervalos RR de 0-2 ms, lo cual es bastante aceptable.


De funciones útiles, se ha agregado la capacidad de actualizar el firmware de OTA (nombre original DFU OTA). Ahora, después de haber cosido el cargador de arranque OTA, puede actualizar fácilmente el firmware si desea cambiar algo en el código. El firmware se realiza desde el teléfono inteligente a través de la utilidad patentada nRFConnect. Además, si no me equivoco, puede hacer que OTA sea compatible con su aplicación de Android, hay bibliotecas para esto. Desafortunadamente, para llenar el gestor de arranque en la memoria, debe conectarse a través de SWD, porque OTA no fue proporcionado originalmente por el fabricante.

Orden de firmware:

  1. cosemos SoftDevice310 , es BLE y ANT + una pila de los países nórdicos;
  2. cosimos Kyto_DFU_bootloader.hex (el caso se puede ensamblar);
  3. a través de nRFConnect llene el paquete terminado kyto_hr_dfu.zip

Los dos últimos archivos están aquí . También hay firmware sin OTA (KytoHR.hex).

All Articles