Kein Tag ohne Sport - 2: Neuprogrammierung eines chinesischen Armbands

Für Sportler ist ein Smartphone mit verschiedenen Anwendungen ein häufiger Begleiter beim Joggen oder Reiten. Mit einem Fahrrad ist es einfacher, ein Smartphone beispielsweise am Lenkrad zu befestigen und die Daten von den Sensoren zu beobachten. Aber was ist, wenn Sie laufen oder Ski fahren? Sie können den Smart an Ihrer Hand befestigen, dafür gibt es spezielle Abdeckungen (einschließlich schwenkbarer). Dies ist jedoch unpraktisch und manchmal umständlich. Außerdem geht der russische Held nicht direkt.

Es gibt verschiedene Artikel im Internet, in denen Enthusiasten ihre Smartwatches herstellen. Selbstgemachtes oder bedrucktes Gehäuse. Machen Sie die Füllung. Aber es gibt viele fertige Geräte auf aliexpress. Zum Beispiel wie auf dem Foto unten. Wenn Sie der Beschreibung glauben, dann ist es ein direktes Supergerät: Es misst Herzfrequenz, Druck, Kalorien und etwas anderes.


Lassen Sie uns öffnen und sehen, was drin ist.



Und tatsächlich
. . Random() . , , , .


Das Gehirn dieses Armbands ist ein PHY6202-Chip eines Herstellers aus dem Reich der Mitte, Fengjia Microelectronics. Im Inneren befindet sich ein Cortex-M0 und ein Standardsatz von Peripheriegeräten. Speicher: 512 KB Flash, 138 KB SRAM und 128 KB ROM. ROM enthält einen BLE-Stack und einen UART-Bootloader, as programmierbarer Chip über UART. Die chinesischen Genossen brachten sorgfältig Kontakte für UART heraus. Um in den UART-Modus zu wechseln, muss der Bootloader den TM-Ausgang auf einen hohen Pegel bringen und den Chip zurücksetzen.

Die Dienstprogramme und SDKs für den PHY6202 (sowie für seinen älteren Bruder PHY6212) finden Sie hier .

Das Chip-Programmierprogramm PhyPlusKit wird direkt bereitgestellt. Die Dokumentation enthält eine Liste von Befehlen: Löschen, Schreiben usw. Details im Dokument PHY62XX_UART_FlashWrite_Protocol unter dem obigen Link (auf Chinesisch). Ehrlich gesagt ist die Liste der Befehle nicht vollständig. PhyPlusKit verwendet einen anderen rdreg- Befehl (lesen Sie ein beliebiges Register).

Lass uns anfangen. Wir zerlegen, löten die notwendigen Kontakte an den UART-USB-Adapter und gehen .

Das SDK enthält viele Beispiele. An sich ist es meiner Meinung nach schief und feucht. Manchmal muss man die Quelle bearbeiten, weil Sie sind nicht nur für den „externen“ Gebrauch bestimmt. Hier ist die Batteriestandsmessfunktion von Battery Service. Warum ist sie dort überhaupt unverständlich.

static uint8 battMeasure( void )
{
  uint8 percent;
  percent = 95;
  return percent;
} 

Kein SDK, aber ein gutes Beispiel.
Die Pinbelegung des Armbands lautet:
1) BeschleunigungsmesserSDA P32
SCL P33
2) LCDSDA P25
SCL P31
RS P00
Reset P01
CS P02
LED P34
3)P03
4)P20
5) USB Vin ( USB)P15
6) VbatP14/AIO3
7) Green LED ( )P23
Das Display ist Standard (voll auf Aliexpress) des ST7735 mit einer Auflösung von 80 * 160. Powered by SPI. Es gibt vorgefertigte Bibliotheken dafür, aber es ist besser, eine eigene Light-Version für Ihre Schriftgröße und Ihre eigenen Zeichen zu erstellen. Das Display ist farbig, aber dies ist auf der Straße nicht sehr relevant, da geringer Kontrast (leider erinnert an die transflektiven Displays von Siemens-Handys). Ja und getöntes Glas. Wir werden weiße Farbe verwenden, um Text anzuzeigen, es ist am besten zu sehen.

Die Touch-Taste befindet sich auf einem Tontec TTP233D-HA6-Chip.

Der Beschleunigungsmesser ist unbekannt, aber der Scan des I2C-Busses zeigte, dass er Register wie alle ST-Beschleunigungsmesser verwendet. Am allermeisten ist es ähnlich zu LIS2DH12. Es scheint, dass alle Kontrollregister übereinstimmen.

Um unsere Informationen auf dem Armband anzuzeigen, benötigen wir unseren eigenen BLE-Service für die Datenübertragung. So etwas wie SPP . Zusätzlich können Sie den Batterieservice und das Firmware-Update über BLE hinzufügen.

Als Grundlage für das Projekt nehmen wir ein Beispiel für eine Firmware zur Aktualisierung von OTA und passen sie an unsere Bedürfnisse an. Fügen Sie einen Dienst für die Batterie hinzu. Zum Übertragen von Daten können Sie ein Beispiel für die Implementierung eines benutzerdefinierten Dienstes aus dem SDK verwenden. Es verwendet einen Dienst FF01 und darin ein Merkmal FF02.

Spoiler
SDK GPIO 0, . . , . , pull-up pull-down ( 100 ) . . 40 , «» pull-down, 15 ( ).

Wir befestigen die Arbeitsdienste:

  1. Interrupt-Behandlung per Touch-Taste. Zusätzlich zum Einschalten des Bildschirms und zum Ein- und Ausschalten des Armbands selbst werden wir mit der Übertragung eines Befehls über unsere FF02-Kennlinie eine Einzel- und Doppelklickerkennung durchführen.
  2. Ausgabe von Daten, die von einem Smartphone über dieselbe Eigenschaft empfangen wurden, an das Display.
  3. kurze Aufnahme eines Vibromotors, um Aufmerksamkeit zu erregen.
  4. Schalten Sie den Bildschirm mit dem Beschleunigungsmesser mit einer scharfen Handbewegung ein (es ist schwierig einzurichten, da Sie beim Laufen mit den Händen winken).

Ok, das Armband ist fertig. Wir prüfen über nRFConnect, ob Sie die Werte der Merkmale lesen und schreiben können. Auf dem Bildschirm werden Puls, Zeit, Entfernung und ein anderer Timer angezeigt (z. B. um die Zeitverzögerung anzuzeigen oder das Diagramm zu führen, d. H. Eine Art Schrittmacher, dies kann jedoch nur von Ihrer Anwendung bezogen werden).


Jetzt müssen wir die Daten irgendwohin bringen, um sie zu übertragen. Ich benutze derzeit die Strava-App, obwohl sie mir immer weniger gefällt. Vielleicht der einfachste Weg, um die Laufzeit von ihr und die Entfernung (allerdings mit Rundung auf 100 m) von Benachrichtigungen in der Statusleiste zu erhalten. Dazu müssen Sie eine Anwendung mit einem Dienst zum Abhören von Benachrichtigungen schreiben. Das ist nicht schwer. Wir werden den Impuls jedoch direkt vom BLE- oder ANT + -Gürtel ablesen. Nun, da wir Benachrichtigungen vom Armband über das Drücken von Knöpfen haben, müssen wir sie irgendwo verwenden. Sie können beispielsweise Strava anhalten und neu starten, indem Sie Nachrichten über BroadCastReceiver senden. Und es ist besser, eines Tages Ihre Strava mit Schnickschnack zu machen. Die Anwendung erfordert Rechte für den Zugriff auf den Speicherort (dies ist erforderlich, um mit BLE zu arbeiten) und Rechte für den Zugriff auf Benachrichtigungen.

Es bleibt, den Fall zu überprüfen. Leider endete der Winter im Februar, so dass der Zyklus vom Bild am Anfang des Artikels bereits beendet ist. Aber du kannst rennen gehen. Der Beschleunigungsmesser schaltet den Bildschirm oft unnötig ein, möglicherweise sollte er vollständig ausgeschaltet sein. Ein Touch-Button kann auf einen Tropfen reagieren, der von der Stirn gefallen ist.




Und schließlich die guten Nachrichten. Das bereits ab Werk erhältliche Armband unterstützt das OTA-Update über die PhyApp-Anwendung (es befindet sich an derselben Stelle wie das SDK, ursprünglich auf Chinesisch). Mit einer vorgefertigten Firmware ist es daher nicht erforderlich, das Armband selbst zu zerlegen. Flash und verwenden. Dazu müssen Sie die Anwendung installieren, die Firmware im „Stammverzeichnis“ des Telefons ablegen (HEX, nicht HEXF, da letzteres den Bootloader enthält, den wir bereits ab Werk haben), eine Verbindung zum Armband herstellen und die Firmware über die OTA-Taste auf das Armband hochladen. Nach dem Blinken wird das Armband ausgeschaltet. Um es einzuschalten, müssen Sie den Knopf 2 Sekunden lang gedrückt halten.

Im Allgemeinen können Uhren und Armbänder des PHY62 problemlos in alles umgewandelt werden.

Verweise:

  1. Quellcodes und APK einer Android-Anwendung (sie wurde unter Android 8.1 geschrieben, scheint unter 9 zu funktionieren, sie wurde unter anderen nicht überprüft);
  2. HEX- Firmware- Datei über BLE und HEXF - für Firmware über UART (Ich habe nichts gegen die Quelle, aber ich muss verstehen, dass ich sie per Lizenzvereinbarung hochladen kann und wer nicht in dieses Special schreibt) + PhyApp-Firmware-Anwendung für Firmware OTA.
  3. Ich kaufte mir ein Armband hier , aber ich kann nicht garantieren , dass die Füllung die gleiche sein wird, weil viel gleiches Aussehen, aber mit einem anderen Chip. Es gibt verschiedene Optionen mit einem größeren Bildschirm, die auch PHY6202 haben. Im Allgemeinen gibt es Uhren / Armbänder mit unterschiedlichen Chips (Phy +, Telink und sogar nRF).


PS Im Allgemeinen sieht es so aus, als ob das SDK für PHY62 basierend auf dem Texas Instruments SDK für ihre BLE-Chips erstellt wurde.

All Articles