1 pontos por GN⁺ 2023-09-04 | 1 comentários | Compartilhar no WhatsApp
  • O Timex m851 parece um relógio digital para corredores, mas é uma plataforma de baixíssimo consumo que executa apps de usuário com apenas uma CPU Seiko S1C88 de 8 bits e 2 KB de RAM
  • Os pinos laterais são USB, permitindo sincronizar dados como compromissos, e com o SDK da Timex é possível compilar cc helloworld.c e enviar diretamente para o relógio
  • Devido à RAM limitada, um WatchApp tem uma estrutura em que o código é substituído por unidade de state, usando também APIs para código comum, variáveis e dados persistentes
  • O kernel cuida de tarefas de baixo nível como entrega de eventos, timers, bipes, rolagem do display, acesso ao banco de dados e controle da coroa e da luz de fundo
  • Embora seja um dispositivo descontinuado e difícil de conseguir, o simulador Virtual Datalink, junto com a documentação pública e códigos de exemplo, permite desenvolver sem precisar resetar o relógio real a todo momento

Uma plataforma de desenvolvimento dentro de um pequeno relógio

  • O Timex m851 é um relógio digital com CPU Seiko S1C88 de 8 bits, 48 KB de ROM, 2 KB de RAM e display principal de matriz de pontos 42x11
  • A CPU foi projetada para operação de baixíssimo consumo, podendo funcionar por 3 anos com uma única bateria
  • Os pinos laterais são USB e são usados para sincronizar dados como compromissos com o relógio
  • Usando o SDK fornecido pela Timex, é possível compilar aplicações com cc helloworld.c e enviá-las para o relógio
  • As ferramentas básicas têm a forma de assistentes da era do Windows XP, mas internamente funciona uma toolchain da família UNIX

Exemplo de WatchApp e ecossistema existente

  • O exemplo de hello world e o Makefile podem ser vistos no repositório taviso/timex
  • Vários WatchApps, como jogos, utilitários e ferramentas, foram criados para essa plataforma

Estrutura de um WatchApp: state e mode

  • Uma aplicação é dividida em states; quando o state muda, o código ativo atual é descartado e um novo código é carregado
  • O app pode usar até cerca de 30 KB de código ou dados, mas há apenas cerca de 2 KB de RAM
    • Não há paginação e não é possível manter todo o código na RAM, por isso a estrutura em states é necessária
  • Existe um espaço de código comum usado por todos os states, e também há uma API de banco de dados para espaço de variáveis e dados persistentes
  • Alguns dos states iniciais são reservados para tratamento comum de eventos, e os demais podem ser usados pelo app como quiser
  • mode corresponde à aplicação em primeiro plano
    • Normalmente um app fornece um mode, mas também pode adicionar tarefas em segundo plano ou tarefas periódicas
    • Ao solicitar uma troca de mode com coreRequestModeChangeNext();, o próximo app obtém o controle

Tratamento de eventos e serviços do kernel

  • Cada state precisa de um manipulador de eventos
  • Os eventos incluem entrada em um state, puxar ou recolocar a coroa, girar a coroa, pressionar botões e entrada do botão de mode
    • Eventos desnecessários podem ser ignorados
  • O kernel cuida do hardware e do despacho de eventos, além de oferecer vários serviços
    • Timers
    • Geração de tons e bipes
    • Rolagem do display
    • Acesso a registros do banco de dados
    • Configuração da coroa
    • Controle da luz de fundo
  • O código de exemplo usa serviços do kernel como lcdClearDisplay() e lcdDispBannerMsg() para exibir a mensagem de banner "hello!"

Ambiente de depuração que reduz resets

  • Como não há proteção de memória, um app pode sobrescrever a memória do kernel
  • O kernel precisa informar ao watchdog a cada 2 segundos que está vivo; se não houver essa notificação, o watchdog reseta o relógio
    • Ao executar cálculos pesados, é preciso atualizar o watchdog com hwResetWatchdog();
  • Virtual Datalink é um simulador open source de terceiros
    • Fonte
    • É exclusivo para Windows e foi escrito em Delphi
    • Oferece breakpoints condicionais, disassembler, estado salvo, análise de recursos e análise de energia

Como obter um dispositivo descontinuado e documentação de referência

  • O Timex m851 foi descontinuado há muito tempo e está cada vez mais difícil de encontrar
  • Era possível encontrar no eBay unidades que podiam ser usadas como novas apenas trocando a bateria
  • Se não houver cabo, é possível aproveitar o fato de ele usar a pinagem USB Type-A padrão e um conector incomum para usar um cabo USB antigo com garras jacaré
  • O Timex T5G751 também usa o mesmo conector e, por ser relativamente mais fácil de encontrar, pode ser aproveitado para obter um cabo
  • Uma variante do m851 chamada “dress edition” tem as mesmas especificações em uma carcaça diferente, e às vezes aparece anunciada com outro número de modelo
  • Documentação de referência

1 comentários

 
GN⁺ 2023-09-04
Opiniões do Hacker News
  • Uma das partes mágicas é que o SoC da Epson (PN S1C88349) é absurdamente econômico: ao operar no modo de baixo consumo de 32 kHz, consome apenas 9 microampères
    Faz pensar em quanta coisa dá para fazer com um orçamento de 32.000 ciclos por segundo
    Além disso, ele inclui 48K de ROM, 2K de RAM, 3 timers, UART e até conversor A/D
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • Talvez seja surpreendente saber que esses componentes de 8 bits de consumo ultrabaixo já existiam havia uns 30 anos
      Chips da Seiko-Epson, junto com chips EM-Swatch e OKI-Casio, eram usados em relógios, calculadoras, termômetros e dispositivos baratos de LCD segmentado de baixo consumo, que precisavam funcionar por anos com uma única bateria tipo botão
      Calculadoras e termômetros digitais com mais de 15 anos também usam esses chips Seiko-Epson e ainda funcionam com a bateria tipo botão de 1,5 V original. Considerando a autodescarga natural das baterias de lítio ao longo do tempo, é algo bem impressionante
    • Sistemas modernos, sejam SoCs, sistemas operacionais ou apps, têm um nível enorme de inchaço e complexidade
      O tamanho binário de muitos apps móveis atuais é maior do que sistemas operacionais e aplicações inteiros do passado que faziam coisas muito úteis
      Dá medo pensar para onde isso vai, e parece improvável que alguém ou alguma coisa puxe o freio
    • Os TMS430 mais recentes têm modos de consumo ultrabaixo, e também é possível usar um RTC externo de consumo ultrabaixo
      Se não me engano, mesmo incluindo coisas como vazamento do interruptor de energia, ficava nominalmente abaixo de 100 nA, o que é realmente incrível
    • O E0C6S46 ainda aciona os Tamagotchi de 1ª e 2ª geração
      É um microcontrolador de 4 bits(!) a 32 KHz, com 6.144 palavras de ROM de 12 bits(‼), 640 palavras de RAM interna de 4 bits e um framebuffer de 160 palavras de 4 bits para o driver LCD integrado. Dá até para fazer double buffering
      É um chip realmente lindo. Há cerca de um ano fiz um emulador em TypeScript, mas ainda não coloquei no GitHub. Se houver interesse, posso publicar, e ele também consegue executar o firmware não modificado do Tamagotchi
    • A expressão ROM me confundiu. Eu achava que significava algo que originalmente não podia ser alterado, mas a documentação diz que dados modificáveis são colocados e removidos dali
      Na prática, é EEPROM, e parece um pouco com memória Flash
  • Se quiser algo com um pouco mais de recursos, vale ver também o Bangle.js
    A vantagem é que tem Bluetooth, GPS, acelerômetro, motor de vibração e tela colorida. A desvantagem é que a bateria dura bem menos que 3 anos
    [0] https://banglejs.com/

    • Para quem tiver curiosidade, a duração da bateria do Bangle é informada como 4 semanas
      Ele apresenta o Bangle.js 2 como uma alternativa aos smartwatches caros, destacando “tela sempre ligada legível à luz do sol, 4 semanas de bateria, flexibilidade total e controle total sobre seus dados”
  • Eu tive esse relógio uns 15 anos atrás e dava para registrar várias coisas nele
    Eu colocava coisas como a sala da próxima aula, os horários de ônibus dos pontos que eu usava com frequência e as fases da lua
    Antes dos smartphones, consultar o horário do ônibus no relógio de pulso fazia a gente parecer o James Bond :)
    Seria bom se ainda fabricassem relógios assim. Com esse nível de consumo de energia, acho que daria para usar praticamente de forma contínua com recarga solar

    • Para ser justo, o primeiro iPhone saiu há 16 anos, e smartphones capazes de armazenar horários de ônibus já existiam antes disso
      Mais de 20 anos atrás, eu costumava salvar horários de ônibus como rascunhos de SMS em um celular Siemens
  • Uma abordagem mais moderna para um relógio hackeável poderia ser esta
    https://github.com/sharandac/My-TTGO-Watch
    Descobri isso enquanto pesquisava para tentar fazer um iPod Nano 7G DIY com uma placa de desenvolvimento LILYGO T5 E-Paper
    Produto: https://www.aliexpress.com/item/1005002474854718.html
    Repositório de código: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    Se eu tivesse mais tempo e habilidade com Arduino, acho que isso poderia ter sido um ótimo substituto para o iPod Nano 7G ;)

    • Tenho alguns desses, e a duração da bateria é bem ruim
      O código padrão quase não funcionava direito, e a bateria durava cerca de 12 horas sem fazer nada. Ainda assim, é mesmo um produto incrível pelo preço para quem gosta de depurar código dos outros
      Preenchi algumas lacunas e encontrei configurações para reduzir o consumo de energia, fazendo-o durar cerca de 6 horas em uso “normal”
      O código provavelmente está muito melhor agora, mas o orçamento de energia deve estar muito mais perto de um smartwatch da Apple ou da Samsung do que do m851 ultrabaixo consumo no estilo dos anos 80
      Se você gosta de experimentar, é um projetinho divertido e vale o preço. Se espera algo para competir com um iWatch, é bem provável que se decepcione
  • Se “durar 3 anos com uma bateria” é uma grande vantagem, a Casio definitivamente ainda fabrica coisas assim
    Basta procurar por “Casio MIP display”

  • Há mais informações sobre a série Timex Datalink aqui
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • Ironicamente, os modelos antigos com receptor óptico parecem muito mais avançados tecnologicamente do que os modelos USB posteriores
    • Fico curioso por que só era possível sincronizar com CRT e não com LCD
      Será que daria para reproduzir isso com um LCD IPS moderno?
  • Tomara que mais relógios e wearables sejam feitos com esses chips de baixo consumo de 8 bits e que possam ser hackeados por terem pinos de dados expostos.
    Para um relógio, o ponto essencial é ter 3 anos de bateria. Se eu tiver que me preocupar em carregar um relógio, para mim já está descartado.

    • Continuo comprando relógios mecânicos de corda baratos e Swatch no eBay.
      O Swatch que uso agora vem mantendo a hora certa há cerca de 1 ano com a mesma bateria. O problema dos relógios mecânicos baratos é que, se você não tomar cuidado, pode dar corda demais. Então acabo quebrando um a cada poucos anos, mas de qualquer forma são baratos.
      O legal dos dois relógios é que não preciso carregá-los todos os dias. Claro, no caso do relógio de corda, ainda é preciso dar corda.
  • Isso me faz lembrar de novo que podemos, de fato, ter coisas boas. Desde que exista mercado para elas.
    Eu gostaria que houvesse um relógio bem integrado, com baixo consumo de bateria, pouca inconveniência para usar ou trocar a bateria, e que também fizesse sentido em termos de design.
    É uma pena que o melhor que conseguimos hoje seja o Sensorwatch [1].
    [1] https://www.sensorwatch.net
    Edit: o Sensorwatch é ótimo, mas ainda não é um ecossistema.

    • Parece bem promissor; que tipos de coisas dá para fazer com essa placa?
      Fico curioso sobre o que alguém teria vontade de fazer com a placa.
  • Parece ainda mais simples que o Ez430-chronos da TI, e parece interessante.
    Só que 3 anos com uma única bateria não parece tão impressionante. Claro, deve depender de quais apps você usa e carrega, e o fato de ser programável é legal.
    [0] https://www.sparkfun.com/products/retired/10019

    • Acho que a duração da bateria é relativa.
      Em 2018, perdi um Casio F91 e o encontrei na semana passada enquanto arrumava as coisas para uma viagem de canoa. A hora e a data estavam apenas alguns segundos diferentes do Casio F91 que eu estava usando no pulso.
    • Ainda dá para comprar o chronos?
      Comprei um há um tempo, mas ele sumiu durante uma mudança. Queria mexer nele de novo.
      Edit: ah, você colocou um link em que a página do produto diz “RETIRED”. Sendo um produto da TI, seria estranho se a TI não o descontinuasse justamente quando o mercado começasse a reagir.