No es un día sin deporte - 2: reprogramando un brazalete chino

Para las personas que practican deportes, un compañero frecuente para correr o montar es un teléfono inteligente con varias aplicaciones. Con una bicicleta es más fácil, puede fijar un teléfono inteligente, por ejemplo, en el volante y ver los datos de los sensores. Pero, ¿qué pasa si estás corriendo o esquiando? Puede arreglar el smart en su mano, para esto hay cubiertas especiales (incluidas las giratorias). Pero esto es inconveniente y a veces engorroso. Además, el héroe ruso no va directamente.

Hay varios artículos en Internet en los que los entusiastas hacen sus relojes inteligentes. Estuche hecho a medida o impreso. Haz el relleno. Pero hay muchos dispositivos listos para usar en aliexpress. Por ejemplo, como en la foto de abajo. Si crees en la descripción, entonces es un súper dispositivo directo: mide la frecuencia cardíaca, la presión, las calorías y algo más.


Abramos y veamos qué hay dentro.



Y de hecho
. . Random() . , , , .


El cerebro de esta pulsera es un chip PHY6202 de un fabricante de Microelectronics Fengjia del Reino Medio. En su interior tiene un Cortex-M0 y un conjunto estándar de periféricos. Memoria: 512kB Flash, 138kB SRAM y 128kB ROM. ROM contiene una pila BLE y un gestor de arranque UART, como chip programable a través de UART. Los camaradas chinos sacaron cuidadosamente contactos para UART. Para cambiar al modo UART, el gestor de arranque necesita llevar la salida TM a un nivel alto y restablecer el chip.

Las utilidades y los SDK para el PHY6202 (así como para su hermano mayor PHY6212) se pueden encontrar aquí .

La utilidad de programación de chips PhyPlusKit se proporciona directamente. La documentación tiene una lista de comandos: borrar, grabar, etc. Detalles en el documento PHY62XX_UART_FlashWrite_Protocol en el enlace de arriba (en chino). Honestamente, la lista de comandos no está completa. PhyPlusKit usa otro comando rdreg (lea cualquier registro).

Empecemos. Desmontamos, soldamos los contactos necesarios al adaptador UART-USB y listo .

El SDK contiene muchos ejemplos. En sí mismo, en mi opinión, está torcido y húmedo. A veces tienes que editar la fuente, porque no están diseñados solo para uso "externo". Aquí está la función de medición del nivel de batería del Servicio de batería. ¿Por qué está ella allí incomprensible?

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

No es un SDK, sino un ejemplo sólido.
El pinout de la pulsera es:
1) acelerómetroSDA 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
La pantalla es estándar (completa en AliExpress) en el ST7735 con una resolución de 80 * 160. Desarrollado por SPI. Hay bibliotecas listas para usar, pero es mejor hacer su propia versión ligera, para su tamaño de fuente y sus propios caracteres. La pantalla es en color, pero esto no es muy relevante en la calle, ya que bajo contraste (lamentablemente recordamos las pantallas transflectivas de los teléfonos Siemens). Sí, y vidrios polarizados. Usaremos color blanco para mostrar el texto, se ve mejor.

El botón táctil está hecho en un chip Tontec TTP233D-HA6.

El acelerómetro es desconocido, pero el escaneo del bus I2C mostró que usa registros como todos los acelerómetros ST. Sobre todo, es similar a LIS2DH12. Parece que todos los registros de control corresponden.

Para mostrar nuestra información en el brazalete, necesitamos nuestro propio servicio BLE para la transferencia de datos. Algo así como SPP . Además, puede agregar el Servicio de batería y la actualización del firmware a través de BLE.

Como base para el proyecto, tomamos un ejemplo de firmware para actualizar OTA y rehacerlo a nuestras necesidades. Agregue un servicio para la batería. Para transferir datos, puede usar un ejemplo de implementación de un servicio personalizado desde el SDK. Utiliza un servicio FF01 y en él una característica FF02.

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

Fijamos los servicios de trabajo:

  1. interrumpir el manejo con el botón táctil. Además de encender la pantalla y encender / apagar el brazalete en sí, haremos un reconocimiento de toque simple y doble con la transmisión de un comando a través de nuestra característica FF02.
  2. salida de datos recibidos de un teléfono inteligente a través de la misma característica a la pantalla.
  3. breve inclusión de un vibromotor para llamar la atención.
  4. usando el acelerómetro, girando la pantalla con un movimiento brusco de la mano (es difícil de configurar, porque cuando corres, agitas las manos).

Ok, el brazalete está listo. Verificamos a través de nRFConnect, le permite leer y escribir los valores de las características. En la pantalla, el pulso, el tiempo, la distancia y otro temporizador (por ejemplo, para mostrar el retraso o liderar el gráfico, es decir, un tipo de marcapasos, pero esto solo se puede obtener de su aplicación).


Ahora necesitamos llevar los datos a algún lugar para transmitirlos. Actualmente uso la aplicación Strava, aunque cada vez me gusta menos. Quizás la forma más fácil de obtener el tiempo de ejecución de ella y la distancia (aunque con un redondeo de 100 m) desde las notificaciones en la barra de estado. Para hacer esto, debe escribir una aplicación con un servicio para escuchar las notificaciones. Esto no es dificil. Pero leeremos el pulso directamente del cinturón BLE o ANT +. Bueno, dado que tenemos notificaciones del brazalete sobre presionar botones, debemos usarlos en algún lugar. Por ejemplo, puede enviar mensajes a través de BroadCastReceiver, pausar Strava y reiniciarlo. Y es mejor que algún día haga su Strava con campanas y silbatos. La aplicación requiere derechos para acceder a la ubicación (esto es necesario para trabajar con BLE) y derechos para acceder a las notificaciones.

Queda por verificar el caso. Desafortunadamente, el invierno terminó en febrero, por lo que el ciclo de la imagen al comienzo del artículo ya ha terminado. Pero puedes salir a correr. El acelerómetro a menudo enciende la pantalla innecesariamente, tal vez debería apagarse por completo. Un botón táctil puede reaccionar ante una caída que se ha caído de la frente.




Y finalmente, las buenas noticias. El brazalete que ya viene de fábrica admite la actualización OTA a través de la aplicación PhyApp (se encuentra en el mismo lugar que el SDK, originalmente en chino). Por lo tanto, al tener el firmware listo, incluso no es necesario desmontar el brazalete. Flash y uso. Para hacer esto, debe instalar la aplicación, colocar el firmware en la "raíz" del teléfono (HEX, no HEXF, ya que este último contiene el gestor de arranque que ya tenemos de fábrica), conectarlo al brazalete y usar el botón OTA para cargar el firmware al brazalete. Después de parpadear, el brazalete se apagará, para encenderlo debe mantener presionado el botón durante 2 segundos.

En general, los relojes y pulseras en el PHY62 se pueden convertir fácilmente a cualquier cosa.

Referencias

  1. códigos fuente y APK de una aplicación de Android (se escribió en Android 8.1, parece funcionar en 9, no se verificó en otros);
  2. Archivo de firmware HEX a través de BLE y HEXF: para firmware a través de UART (no me importa la fuente, pero debo entender que puedo subirlo mediante un acuerdo de licencia y quién no está en este especial) + aplicación de firmware PhyApp para firmware OTA
  3. Compré un brazalete aquí , pero no puedo garantizar que el relleno sea el mismo, porque mucho de lo mismo en apariencia, pero con un chip diferente. Hay un tipo de opciones con una pantalla más grande, que también tienen PHY6202. En general, hay relojes / pulseras con diferentes chips (Phy +, Telink e incluso nRF).


PD En general, parece que el SDK para PHY62 fue creado en base al SDK de Texas Instruments para sus chips BLE.

All Articles