1 puntos por GN⁺ 2023-09-04 | 1 comentarios | Compartir por WhatsApp
  • El Timex m851 parece un reloj digital para corredores, pero es una plataforma de consumo ultrabajo que ejecuta apps de usuario con solo una CPU Seiko S1C88 de 8 bits y 2 KB de RAM
  • Los pines laterales son USB, por lo que puede sincronizar datos como citas, y con el SDK de Timex se puede compilar cc helloworld.c y subirlo directamente al reloj
  • Debido a la RAM limitada, las WatchApp tienen una arquitectura en la que el código se reemplaza por state, y usan en conjunto API para código común, variables y datos persistentes
  • El kernel se encarga de tareas de bajo nivel como entrega de eventos, temporizadores, pitidos, desplazamiento de la pantalla, acceso a la base de datos y control de la corona y la retroiluminación
  • Al ser un dispositivo descontinuado es difícil conseguirlo, pero gracias al simulador Virtual Datalink y a la documentación y código de ejemplo públicos, se puede desarrollar sin tener que reiniciar el reloj real cada vez

Una plataforma de desarrollo dentro de un reloj pequeño

  • El Timex m851 es un reloj digital con CPU Seiko S1C88 de 8 bits, 48 KB de ROM, 2 KB de RAM y una pantalla principal de matriz de puntos de 42x11
  • La CPU fue diseñada para operación de consumo ultrabajo, capaz de funcionar durante 3 años con una sola batería
  • Los pines laterales son USB y se usan para sincronizar datos como citas con el reloj
    • Para Linux existe la biblioteca libdlusb
  • Con el SDK provisto por Timex se puede compilar una aplicación con cc helloworld.c y subirla al reloj
  • Las herramientas básicas tienen forma de asistente de la época de Windows XP, pero internamente corre una toolchain de tipo UNIX

Ejemplos de WatchApp y ecosistema existente

  • El ejemplo de hello world y el Makefile se pueden ver en el repositorio taviso/timex
  • Para esta plataforma se crearon varias WatchApp, como juegos, utilidades y herramientas

Estructura de una WatchApp: state y mode

  • Las aplicaciones se dividen en state, y cuando cambia el state se descarta el código activo actual y se carga código nuevo
  • Una app puede usar hasta unos 30 KB de código o datos, pero solo hay alrededor de 2 KB de RAM
    • No hay paginación y no se puede cargar todo el código en RAM, por eso se necesita la estructura de state
  • Existe un espacio de código común compartido por todos los state, y también hay una API de base de datos para el espacio de variables y los datos persistentes
  • Algunos state iniciales están reservados para el manejo común de eventos, y el resto puede usarse como la app quiera
  • mode corresponde a la aplicación en primer plano
    • Normalmente una app ofrece un mode, pero también puede agregar tareas en segundo plano o periódicas
    • Al solicitar un cambio de mode con coreRequestModeChangeNext();, la siguiente app obtiene el control

Manejo de eventos y servicios del kernel

  • Cada state necesita un manejador de eventos
  • Los eventos incluyen entrada a un state, sacar o volver a meter la corona, girar la corona, presionar botones y entrada del botón mode
    • Los eventos innecesarios pueden ignorarse
  • El kernel se encarga del hardware y del despacho de eventos, y ofrece varios servicios
    • Temporizadores
    • Generación de tonos y pitidos
    • Desplazamiento de la pantalla
    • Acceso a registros de la base de datos
    • Configuración de la corona
    • Control de la retroiluminación
  • El código de ejemplo usa servicios del kernel como lcdClearDisplay() y lcdDispBannerMsg() para mostrar el mensaje de banner "hello!"

Entorno de depuración que reduce los reinicios

  • No hay protección de memoria, por lo que una app puede sobrescribir la memoria del kernel
  • El kernel debe avisarle al watchdog cada 2 segundos que sigue vivo; si no hay aviso, el watchdog reinicia el reloj
    • Al realizar cálculos pesados, hay que actualizar el watchdog con hwResetWatchdog();
  • Virtual Datalink es un simulador open source de terceros
    • Fuente
    • Es exclusivo para Windows y está escrito en Delphi
    • Ofrece breakpoints condicionales, desensamblador, estados guardados, análisis de recursos y análisis de energía

Conseguir dispositivos descontinuados y documentación de referencia

  • El Timex m851 fue descontinuado hace mucho y cada vez es más difícil de conseguir
  • En eBay se podían encontrar unidades que quedaban como nuevas con solo cambiarles la batería
  • Si no se tiene el cable, se puede aprovechar que usa el pinout estándar de USB Type-A y un conector peculiar para usar un cable USB viejo y pinzas cocodrilo
  • El Timex T5G751 usa el mismo conector y es relativamente más fácil de encontrar, por lo que puede servir para conseguir un cable
  • Una variante del m851 llamada “dress edition” tiene las mismas especificaciones con otra carcasa, y a veces aparece publicada con otro número de modelo
  • Documentación de referencia
    • Design Guide: el documento más importante y está bien escrito
    • CPU manual: manual de la CPU
    • Manual de la toolchain
    • API reference: contiene la lista de servicios que ofrece el kernel

1 comentarios

 
GN⁺ 2023-09-04
Opiniones de Hacker News
  • Una de las partes casi mágicas es que el Epson SoC (PN S1C88349) tiene un consumo ridículamente bajo: cuando opera en modo de bajo consumo a 32 kHz, consume apenas 9 microamperios.
    Hace pensar en cuántas cosas se pueden hacer con un presupuesto de 32,000 ciclos por segundo.
    Además, incluye 48K de ROM, 2K de RAM, tres temporizadores, UART e incluso un convertidor A/D.
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • Quizá sorprenda saber que estos componentes de 8 bits de consumo ultrabajo existen desde hace unos 30 años.
      Los chips de Seiko-Epson, junto con los de EM-Swatch y OKI-Casio, se usaban en relojes, calculadoras, termómetros y dispositivos LCD segmentados baratos de bajo consumo, que tenían que funcionar durante años con una sola pila de botón.
      Algunas calculadoras y termómetros digitales de más de 15 años también usan estos chips Seiko-Epson, y todavía funcionan con la pila de botón original de 1.5 V. Considerando la autodescarga de las pilas de litio con el tiempo, es bastante sorprendente.
    • Los sistemas modernos, ya sean SoC, sistemas operativos o apps, tienen un nivel enorme de inflación y complejidad.
      Hoy, el tamaño binario de muchas apps móviles es mayor que el de sistemas operativos y aplicaciones enteras del pasado que hacían cosas muy útiles.
      Da miedo pensar hacia dónde va esta tendencia, y parece poco probable que alguien o algo le ponga freno.
    • Los TMS430 modernos tienen modos de consumo ultrabajo, y también se puede usar un RTC externo de consumo ultrabajo.
      Si no recuerdo mal, nominalmente era menos de 100 nA, incluso incluyendo cosas como fugas del interruptor de encendido, y es realmente impresionante.
    • El E0C6S46 todavía impulsa los Tamagotchi de primera y segunda generación.
      Es un microcontrolador de 4 bits (!) a 32 KHz, con 6,144 palabras de ROM de 12 bits (‼), 640 palabras de RAM interna de 4 bits y un framebuffer de 160 palabras de 4 bits para el controlador LCD integrado. Incluso permite doble buffering.
      Es un chip realmente hermoso. Hace más o menos un año hice un emulador en TypeScript, pero todavía no lo subí a GitHub. Si hay interés, puedo subirlo, y también puede ejecutar firmware de Tamagotchi sin modificar.
    • La expresión ROM me confundió. Pensaba que significaba algo que originalmente no se podía cambiar, pero el documento dice que allí se meten y sacan datos modificables.
      En realidad es EEPROM, y parece algo similar a la memoria Flash.
  • Si quieres algo con algunas funciones más, también vale la pena mirar Bangle.js.
    Tiene la ventaja de incluir Bluetooth, GPS, acelerómetro, motor de vibración y pantalla a color. La desventaja es que la batería dura mucho menos que 3 años.
    [0] https://banglejs.com/

    • Para quienes tengan curiosidad, la duración de batería del Bangle figura como 4 semanas.
      Lo presentan como una alternativa a los smartwatches caros con “pantalla siempre encendida legible bajo la luz del sol, 4 semanas de batería, flexibilidad total y control total sobre tus datos”, hablando del Bangle.js 2.
  • Hace unos 15 años tenía este reloj y podía guardar varias cosas.
    Le cargaba el lugar de la siguiente clase, los horarios de buses de las paradas que usaba con frecuencia y cosas como las fases de la luna.
    Antes de los smartphones, consultar el horario del bus en el reloj de pulsera te hacía ver como James Bond :)
    Ojalá siguieran fabricando relojes así. Con ese nivel de consumo, parece que podría usarse prácticamente de forma continua cargándolo con energía solar.

    • Para ser justos, el primer iPhone salió hace 16 años, y ya había smartphones capaces de guardar horarios de buses antes de eso.
      Hace más de 20 años solía guardar horarios de buses como borradores de SMS en un celular Siemens.
  • Un enfoque más moderno para un reloj hackeable podría ser este:
    https://github.com/sharandac/My-TTGO-Watch
    Lo encontré mientras investigaba cómo hacer un iPod Nano 7G DIY con una placa de desarrollo LILYGO T5 E-Paper.
    Producto: https://www.aliexpress.com/item/1005002474854718.html
    Repositorio de código: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    Si hubiera tenido más tiempo y habilidad con Arduino, creo que esto podría haber sido un excelente reemplazo del iPod Nano 7G ;)

    • Tengo varios de estos, y la duración de la batería es bastante mala.
      El código base casi no funcionaba correctamente, y la batería duraba unas 12 horas incluso sin hacer nada. Aun así, para alguien que disfruta depurando código ajeno, es un dispositivo sorprendente por el precio.
      Completé algunas partes faltantes y encontré configuraciones para reducir el consumo, con lo que logré que durara unas 6 horas con uso “normal”.
      Seguramente el código ahora esté mucho mejor, pero su presupuesto de energía está mucho más cerca de un smartwatch de Apple o Samsung que del m851 ultrabajo consumo estilo años 80.
      Si te gusta experimentar, es un proyectito divertido y vale lo que cuesta. Si esperas algo que compita con un iWatch, probablemente te decepcione.
  • Si lo de “dura 3 años con una pila” es una gran ventaja, Casio sin duda todavía fabrica cosas así.
    Basta buscar “Casio MIP display”.

  • Hay más información sobre la serie Timex Datalink aquí:
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • Irónicamente, los modelos antiguos con receptor óptico se sienten mucho más avanzados tecnológicamente que los modelos USB posteriores.
    • Me pregunto por qué solo se podía sincronizar desde un CRT y no desde un LCD.
      ¿Se podría reproducir con un LCD IPS moderno?
  • Ojalá más relojes y wearables se hicieran con este tipo de chips de 8 bits de bajo consumo, y que pudieran hackearse al tener los pines de datos expuestos.
    En un reloj, lo clave es que la batería dure 3 años. Si tengo que preocuparme por cargarlo, para mí queda descartado.

    • Sigo comprando en eBay relojes mecánicos de cuerda baratos y Swatch.
      El Swatch que uso ahora lleva aproximadamente un año manteniendo la hora de forma constante con la misma batería. El problema de los relojes mecánicos baratos es que, si no tienes cuidado, puedes darles cuerda de más. Por eso termino arruinando uno cada pocos años, pero igual son baratos.
      Lo genial de ambos relojes es que no hay que cargarlos todos los días. Claro, el de cuerda sí hay que darle cuerda.
  • Me recuerda que en realidad podemos tener cosas buenas, siempre que exista mercado para ellas.
    Me gustaría que hubiera un reloj bien integrado, con bajo consumo de batería, poca molestia para usarlo o reemplazarlo, y con un diseño convincente.
    Es una lástima que lo mejor que podamos hacer ahora sea Sensorwatch [1].
    [1] https://www.sensorwatch.net
    Edición: Sensorwatch es excelente, pero todavía no es un ecosistema.

    • Se ve bastante prometedor; ¿qué cosas se pueden hacer con esa placa?
      Me da curiosidad qué podría dar ganas de hacer con la placa.
  • Se ve incluso más simple que el Ez430-chronos de TI, y se ve bien.
    Aunque 3 años con una sola pila no me parece tan impresionante. Claro que dependerá de qué apps uses y cargues, y el hecho de que sea programable está genial.
    [0] https://www.sparkfun.com/products/retired/10019

    • La duración de la batería parece ser relativa.
      En 2018 perdí un Casio F91, y la semana pasada lo encontré mientras empacaba para un viaje en canoa. La hora y la fecha apenas diferían por unos segundos del Casio F91 que llevaba en la muñeca.
    • ¿Todavía se puede comprar el chronos?
      Compré uno hace tiempo, pero desapareció en una mudanza. Me gustaría volver a trastear con él.
      Edición: Ah, ya veo que pusiste un enlace donde el producto figura como “RETIRED”. Tratándose de un producto de TI, sería raro que TI no lo descontinuara justo cuando el mercado empieza a reaccionar.