Kein Tag ohne Sport: Neuprogrammierung eines chinesischen Herzfrequenzmessers

"Hören Sie, welche Herzfrequenz sollten Sie beim Joggen haben?"
- Nun, ich weiß nicht - 150 Treffer.
- Ja? Warum habe ich 840?
- 840 pro Minute ?!
- Und was musste man in einer Minute überlegen oder was?
"Was haben Sie gedacht?"
"Nun, ich habe nur gezählt, bis ich mich verlaufen habe ... Also, okay, ich habe nachgezählt."
(Film "Wahltag")

Fast genau über den chinesischen Herzfrequenzmesser. Wie das Sprichwort sagt, wenn Sie etwas gut machen wollen, dann machen Sie es selbst. Und wenn das Gerät nicht so funktioniert, wie es benötigt wird, kann es dann möglicherweise verbessert werden?


Viele Sportinteressierte überwachen ihre Herzfrequenz während des Trainings. Hierzu werden Herzfrequenzmesser verwendet. Es ist nicht die Aufgabe dieses Artikels, alle ihre Typen zu berücksichtigen, aber einer der zuverlässigsten und bewährten sind Brustpulssensoren, die elektrische Signale vom Herzen empfangen.

Im Zusammenhang mit meiner stark erhöhten körperlichen Aktivität wurde auch der Kyto 2809- Herzfrequenzmesser erworben . Der Puls ist gut, aber es bestand Bedarf an einer genauen Messung der RR-Intervalle. Der Herzfrequenzmesser unterstützt zwei Protokolle: ANT + und BLE. Gemäß den Spezifikationen übertragen beide zusätzlich zur direkten Herzfrequenz die Dauer der RR-Intervalle.

Was sind RR-Intervalle?
RR – R .


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

Um Daten von beiden Kanälen aufzuzeichnen, wurde eine Android-Anwendung geschrieben, die Ihren Anforderungen mit einem Datenprotokoll für Textdateien entspricht. Ein analoger Herzfrequenzmesser wurde als mehr oder weniger adäquater Standard gesendet und sendete ein Signal mit einer Frequenz von 5,3 kHz, das über ein Arduino direkt mit einem PC verbunden war.

Der erste Vergleich war etwas traurig.


Das „Gerät“ für einen echten Herzschlag zeigte 4-5 nicht vorhanden (auf der blauen Grafik sehen Sie eine Fülle von Punkten). Der Puls leuchtet selbst unter Berücksichtigung der möglichen Mittelung nicht genau. Über das Messen von RR-Sprachintervallen geht das überhaupt nicht.

Die Kommunikation mit dem Hersteller brachte keine Ergebnisse. Zusätzlich zu mehreren Videos, Versuchen, mich davon zu überzeugen, dass alles in Ordnung ist, und Sätzen: "KYTO2809-Herzfrequenzdaten sind korrekt!", Habe ich nichts von ihnen bekommen. Dann fiel sein Blick mit Schraubenziehern auf die Schachtel. Als ich das Gehäuse öffnete, entdeckte ich den nRF51422-Chip.


Da ich wusste, dass es ein SDK für diese MKs gibt, beschloss ich, es erneut zu flashen. Dort wird das einfachste Programm benötigt: Vom elektrischen Signalverstärker des Herzens (ein schwarzer Tropfen auf dem Foto) geht das Signal zum MK-Eingang, und dann ist es eine technische Angelegenheit, dass wir die Impulse durch Interrupts abfangen, die Zeit zwischen ihnen messen und all dies über BLE und ANT + ausgeben. Alles ist einfach, aber anscheinend ist bei den chinesischen Programmierern etwas schief gelaufen.

Diese Chips werden über SWD programmiert. Die native Firmware war vor dem Lesen geschützt. Daher wurde ohne zu zögern der Befehl "Format c:" "--eraseall" ausgeführt. Die Karte zeigt sogar die entsprechenden Kontakte an. Eingang vom Verstärker der elektrischen Signale des Herzens P0.07. Die Pinbelegung des BLE-Moduls selbst lautet (von oben nach unten):
  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

Das SDK enthält viele Beispiele, die ausreichen, um Ihre eigene Firmware zu schreiben. Der Chip ist ziemlich alt und das SDK dafür ist ebenfalls veraltet, Version 10. Mit ihnen wurden die BLE-Dienste auf dem Herzfrequenzmesser erhöht: Geräteinformationen, Batteriedienst, Herzfrequenz. Für ANT + wurde ein HeartRate-Profil hinzugefügt. Wir messen RR-Intervalle mit einem Timer und senden Daten an die Profile BLE und ANT +. Um bei Abwesenheit externer Reize (innerhalb von 5 Sekunden) Ladung zu sparen, wird der Herzfrequenzmesser in den Schlafmodus versetzt. Wenn ein Impuls auftritt (Unterbrechungen am Eingang), wacht der MK auf. In der Firmware des Herstellers übertrug Kyto2809 ständig Werbepakete über BLE, d. H. Wenn nur der ANT + -Kanal verwendet wurde, sendete BLE weiterhin Pakete und leerte den Akku. Ich habe die Werbezeit auf 5 Minuten begrenzt, was sich positiv auf die Rentabilität auswirken dürfte.
Tests haben gezeigt, dass es für den Parameter "Berechnete Herzfrequenz" besser ist, eine Filterung (absichtlich ungenaue Daten verwerfen, d. H. Einen Impuls unter 30 und über 240) und eine Mittelwertbildung mit einem gleitenden Durchschnitt einzuführen. Der endgültige Vergleich mit dem analogen Herzfrequenzmesser unten. Unterschiede in den Messungen von RR-Intervallen von 0-2 ms, was durchaus akzeptabel ist.


Von nützlichen Funktionen wurde die Möglichkeit zum Aktualisieren der OTA-Firmware (ursprünglicher Name DFU OTA) hinzugefügt. Nachdem Sie den OTA-Bootloader vernäht haben, können Sie die Firmware jetzt problemlos aktualisieren, wenn Sie etwas im Code ändern möchten. Die Firmware wird vom Smartphone über das proprietäre Dienstprogramm nRFConnect erstellt. Wenn ich mich nicht irre, können Sie OTA-Unterstützung in Ihrer Android-Anwendung vornehmen. Dafür gibt es Bibliotheken. Um den Bootloader im Speicher zu füllen, müssen Sie leider eine Verbindung über SWD herstellen, weil OTA wurde ursprünglich nicht vom Hersteller bereitgestellt.

Firmware-Reihenfolge:

  1. wir nähen SoftDevice310 , es ist BLE und ANT + ein Stapel von Nordic;
  2. wir nähen Kyto_DFU_bootloader.hex (der Fall kann zusammengebaut werden);
  3. Füllen Sie über nRFConnect das fertige Paket kyto_hr_dfu.zip

Die letzten beiden Dateien sind hier . Es gibt auch Firmware ohne OTA (KytoHR.hex).

All Articles