Pas un jour sans sport: reprogrammer un moniteur de fréquence cardiaque chinois

"Écoutez, quel genre de fréquence cardiaque devriez-vous avoir en faisant du jogging?"
- Eh bien, je ne sais pas - 150 hits
- Oui? Pourquoi ai-je 840?
- 840 par minute?!
- Et quoi, il fallait considérer une minute ou quoi?
"Qu'as-tu pensé?"
"Eh bien, j'ai juste compté jusqu'à ce que je me perde ... Alors, d'accord, je suis allé raconter."
(film "Election Day")

Presque exactement sur le moniteur de fréquence cardiaque chinois. Comme dit le proverbe, si vous voulez bien faire quelque chose, faites-le vous-même. Et si l'appareil ne fonctionne pas comme il est requis, alors peut-être qu'il sera possible de l'améliorer?


De nombreuses personnes intéressées par le sport surveillent leur fréquence cardiaque pendant l'exercice. Pour cela, des moniteurs de fréquence cardiaque sont utilisés. Ce n'est pas la tâche de cet article de considérer tous leurs types, mais l'un des plus fiables et éprouvés est le capteur cardiaque du torse qui reçoit des signaux électriques du cœur.

Dans le cadre de mon activité physique considérablement accrue, le moniteur de fréquence cardiaque Kyto 2809 a été acheté . Le pouls est bon, mais il était nécessaire de mesurer avec précision les intervalles RR. Le moniteur de fréquence cardiaque prend en charge deux protocoles: ANT + et BLE. Selon les spécifications, les deux transmettent, en plus de la fréquence cardiaque directe, la durée des intervalles RR.

Quels sont les intervalles RR
RR – R .


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

Pour enregistrer les données des deux canaux, une application Android a été écrite pour répondre à vos besoins avec un journal de données dans des fichiers texte. Un moniteur de fréquence cardiaque analogique a été envoyé en tant que norme plus ou moins adéquate, envoyant un signal à une fréquence de 5,3 kHz, connecté directement à un PC via un arduino.

La première comparaison a été légèrement attristée.


Le «dispositif» pour un battement cardiaque réel a montré 4-5 inexistant (sur le graphique bleu, vous pouvez voir une abondance de points). L'impulsion, même en tenant compte de la moyenne possible, ne brille pas avec précision. La mesure des intervalles RR de la parole ne va pas du tout.

La communication avec le fabricant n'a pas donné de résultats. En plus de plusieurs vidéos, tente de me convaincre que tout va bien et des phrases: "Les données de fréquence cardiaque KYTO2809 sont exactes!", Je n'ai rien obtenu d'eux. Puis son regard tomba sur la boîte avec des tournevis. En ouvrant le boîtier, j'ai découvert la puce nRF51422.


Sachant qu'il existe un SDK pour ces MK, j'ai décidé d'essayer de le reflasher. Le programme le plus simple est nécessaire là-bas: à partir de l'amplificateur des signaux électriques du cœur (une goutte noire sur la photo), le signal va à l'entrée MK, puis c'est une question de technique, nous captons les impulsions à travers les interruptions, mesurons le temps entre elles et affichons tout cela via BLE et ANT +. Tout est simple, mais apparemment quelque chose s'est mal passé avec les programmeurs chinois.

Ces puces sont programmées via SWD. Le firmware natif était protégé contre la lecture. Par conséquent, sans hésitation, la commande «format c:» «--eraseall» a été exécutée. La carte affiche même les contacts correspondants. Entrée de l'amplificateur de signaux électriques du cœur P0.07. Le brochage du module BLE lui-même est (de haut en bas):
  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

Le SDK contient de nombreux exemples suffisants pour écrire votre propre firmware. La puce est assez ancienne et le SDK pour elle est également obsolète, version 10. En les utilisant, les services BLE ont été augmentés sur le moniteur de fréquence cardiaque: informations sur l'appareil, service de batterie, fréquence cardiaque. Un profil HeartRate a été ajouté pour ANT +. Nous mesurons les intervalles RR avec une minuterie, envoyons des données aux profils BLE et ANT +. Pour économiser de la charge en l'absence de stimuli externes (dans les 5 secondes), le moniteur de fréquence cardiaque est mis en mode veille. Lorsqu'une impulsion apparaît (interruptions à l'entrée), le MK se réveille. Dans le firmware du fabricant, Kyto2809 a constamment transmis des paquets publicitaires via BLE, c'est-à-dire en utilisant uniquement le canal ANT +, BLE a continué à envoyer des paquets et à décharger la batterie. J'ai limité le temps de publicité à 5 minutes, ce qui devrait avoir un effet positif sur la rentabilité.
Les tests ont montré que pour le paramètre de fréquence cardiaque calculée, il est préférable d'introduire un filtrage (éliminer les données délibérément inexactes, c'est-à-dire une impulsion inférieure à 30 et supérieure à 240) et une moyenne avec une moyenne mobile. La comparaison finale avec le moniteur de fréquence cardiaque analogique ci-dessous. Différences dans les mesures des intervalles RR de 0-2 ms, ce qui est tout à fait acceptable.


Parmi les fonctions utiles, la possibilité de mettre à jour le firmware OTA (nom d'origine DFU OTA) a été ajoutée. Maintenant, après avoir cousu le chargeur de démarrage OTA, vous pouvez facilement mettre à jour le firmware si vous voulez changer quelque chose dans le code. Le firmware se fait à partir du smartphone via l'utilitaire propriétaire nRFConnect. De plus, si je ne me trompe pas, vous pouvez prendre en charge OTA dans votre application Android, il existe des bibliothèques pour cela. Malheureusement, pour remplir le chargeur de démarrage en mémoire, vous devez vous connecter via SWD, car L'OTA n'a pas été initialement fourni par le fabricant.

Commande du firmware:

  1. nous cousons SoftDevice310 , c'est BLE et ANT + une pile nordique;
  2. nous cousons Kyto_DFU_bootloader.hex (le boîtier peut être assemblé);
  3. via nRFConnect remplir le package fini kyto_hr_dfu.zip

Les deux derniers fichiers sont ici . Il existe également un firmware sans OTA (KytoHR.hex).

All Articles