Pas un jour sans sport - 2: reprogrammer un bracelet chinois

Pour les personnes impliquées dans le sport, un compagnon fréquent pour le jogging ou l'équitation est un smartphone avec diverses applications. Avec un vélo, c'est plus facile, vous pouvez fixer un smartphone, par exemple, sur le volant et regarder les données des capteurs. Mais que faire si vous courez ou skiez? Vous pouvez fixer l'intelligent sur votre main, pour cela, il existe des housses spéciales (y compris celles pivotantes). Mais cela est gênant et parfois lourd. De plus, le héros russe ne va pas directement.

Il existe divers articles sur Internet dans lesquels les passionnés fabriquent leurs montres intelligentes. Boîtier fabriqué ou imprimé. Faites la garniture. Mais il existe de nombreux appareils prêts à l'emploi sur aliexpress. Par exemple, comme sur la photo ci-dessous. Si vous croyez à la description, alors c'est un super appareil direct: il mesure la fréquence cardiaque, la pression, les calories et autre chose.


Ouvrons et voyons ce qu'il y a dedans.



Et en fait
. . Random() . , , , .


Le cerveau de ce bracelet est une puce PHY6202 d'un fabricant du Middle Kingdom Fengjia Microelectronics. À l'intérieur, il a un Cortex-M0 et un ensemble standard de périphériques. Mémoire: 512 Ko de Flash, 138 Ko de SRAM et 128 Ko de ROM. La ROM contient une pile BLE et un chargeur de démarrage UART, comme puce programmable via UART. Les camarades chinois ont soigneusement fait ressortir les contacts de l'UART. Pour passer en mode UART, le chargeur de démarrage doit tirer la sortie TM à un niveau élevé et réinitialiser la puce.

Les utilitaires et les SDK pour le PHY6202 (ainsi que pour son frère aîné PHY6212) peuvent être trouvés ici .

L'utilitaire de programmation de puces PhyPlusKit est fourni directement. La documentation contient une liste de commandes: effacer, écrire, etc. Détails dans le document PHY62XX_UART_FlashWrite_Protocol sur le lien ci-dessus (en chinois). Honnêtement, la liste des commandes n'est pas complète. PhyPlusKit utilise une autre commande rdreg (lire n'importe quel registre).

Commençons. Nous démontons, soudons les contacts nécessaires à l'adaptateur UART-USB et c'est parti .

Le SDK contient de nombreux exemples. En soi, à mon avis, il est tordu et humide. Parfois, vous devez modifier la source, car ils ne sont pas conçus pour un usage «externe» uniquement. Voici la fonction de mesure du niveau de batterie de Battery Service. Pourquoi est-elle là du tout incompréhensible.

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

Pas un SDK, mais un exemple solide.
Le brochage du bracelet est:
1) accéléromètreSDA 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
L'écran est standard (plein sur aliexpress) sur le ST7735 avec une résolution de 80 * 160. Propulsé par SPI. Il existe des bibliothèques prêtes à l'emploi, mais il est préférable de créer votre propre version allégée, pour votre taille de police et vos propres caractères. L'affichage est en couleur, mais ce n'est pas très pertinent dans la rue, car faible contraste (se souvient tristement des écrans transflectifs des téléphones Siemens). Oui, et du verre teinté. Nous utiliserons la couleur blanche pour afficher le texte, c'est mieux vu.

Le bouton tactile est réalisé sur une puce Tontec TTP233D-HA6.

L'accéléromètre est inconnu, mais le balayage du bus I2C a montré qu'il utilise des registres comme tous les accéléromètres ST. Surtout, il est similaire à LIS2DH12. Il semble que tous les registres de contrôle correspondent.

Pour afficher nos informations sur le bracelet, nous avons besoin de notre propre service BLE pour le transfert de données. Quelque chose comme SPP . De plus, vous pouvez ajouter le service de batterie et la mise à jour du firmware via BLE.

Comme base du projet, nous prenons un exemple de firmware pour la mise à jour d' OTA et le refaisons à nos besoins. Ajoutez un service pour la batterie. Pour transférer des données, vous pouvez utiliser un exemple d'implémentation d'un service personnalisé à partir du SDK. Il utilise un service FF01 et en lui une caractéristique FF02.

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

Nous attachons les services de travail:

  1. interrompre la manipulation par bouton tactile. En plus d'allumer l'écran et d'allumer / éteindre le bracelet lui-même, nous effectuerons une reconnaissance par simple et double pression avec la transmission d'une commande via notre caractéristique FF02.
  2. sortie des données reçues d'un smartphone via la même caractéristique à l'écran.
  3. courte inclusion d'un vibromoteur pour attirer l'attention.
  4. en utilisant l'accéléromètre, en allumant l'écran avec une vague aiguë de la main (c'est difficile à configurer, car lorsque vous courez, vous agitez les mains).

Ok, le bracelet est prêt. Nous vérifions via nRFConnect, il vous permet de lire et d'écrire les valeurs des caractéristiques. Sur l'écran, l'impulsion, le temps, la distance et une autre minuterie (par exemple, pour afficher le décalage temporel ou diriger le graphique, c'est-à-dire une sorte de stimulateur cardiaque, mais cela ne peut être obtenu qu'à partir de votre application).


Maintenant, nous devons emmener les données quelque part pour les transmettre. J'utilise actuellement l'application Strava, même si je l'aime de moins en moins. Peut-être le moyen le plus simple d'obtenir son temps de course et la distance (bien qu'avec l'arrondi à 100 m) des notifications dans la barre d'état. Pour ce faire, vous devez écrire une application avec un service d'écoute des notifications. Ce n'est pas difficile. Mais nous lirons l'impulsion directement à partir de la ceinture BLE ou ANT +. Eh bien, puisque nous avons des notifications du bracelet sur la pression des boutons, nous devons les utiliser quelque part. Par exemple, vous pouvez, en envoyant des messages via BroadCastReceiver, suspendre Strava et le redémarrer. Et il vaut mieux un jour faire votre Strava avec des cloches et des sifflets. L'application nécessite des droits d'accès à l'emplacement (cela est nécessaire pour travailler avec BLE) et des droits d'accès aux notifications.

Reste à vérifier le cas. Malheureusement, l'hiver s'est terminé en février, donc le cycle de l'image du début de l'article est déjà terminé. Mais vous pouvez aller courir. L'accéléromètre allume souvent l'écran inutilement, il devrait peut-être être complètement éteint. Un bouton tactile peut réagir à une goutte tombée du front.




Et enfin, la bonne nouvelle. Le bracelet déjà de l'usine prend en charge la mise à jour OTA via l'application PhyApp (il se trouve au même endroit que le SDK, à l'origine en chinois). Par conséquent, il n'est pas nécessaire d'avoir un micrologiciel prêt à l'emploi, même de démonter le bracelet. Flash et utilisation. Pour ce faire, vous devez installer l'application, mettre le firmware à la «racine» du téléphone (HEX, pas HEXF, car ce dernier contient le chargeur de démarrage que nous avons déjà de l'usine), vous connecter au bracelet et utiliser le bouton OTA pour télécharger le firmware sur le bracelet. Après avoir clignoté, le bracelet sera éteint, pour l'allumer, vous devez maintenir le bouton enfoncé pendant 2 secondes.

En général, les montres et bracelets du PHY62 peuvent être facilement convertis en n'importe quoi.

Références:

  1. les codes source et l'APK d'une application Android (il a été écrit sous Android 8.1, il semble fonctionner sous 9, il n'a pas été vérifié sous d'autres);
  2. Fichier de firmware HEX via BLE et HEXF - pour le firmware via UART (la source ne me dérange pas, mais je dois comprendre que je peux le télécharger par contrat de licence et qui n'est pas dans cette offre spéciale) + Application de firmware PhyApp pour le firmware OTA.
  3. J'ai acheté un bracelet ici , mais je ne peux pas garantir que le remplissage sera le même, car beaucoup de la même apparence, mais avec une puce différente. Il existe une sorte d'options avec un écran plus grand, qui ont également PHY6202. En général, il existe des montres / bracelets avec différentes puces (Phy +, Telink et même nRF).


PS En général, il semble que le SDK pour PHY62 ait été créé sur la base du SDK Texas Instruments pour leurs puces BLE.

All Articles