3 pontos por GN⁺ 2025-03-30 | 1 comentários | Compartilhar no WhatsApp

Projeto de temporizador de foco baseado em ESP32

Um projeto de temporizador de foco usando ESP32, display ePaper e um dial giratório. O código deste repositório teve alguns recursos e fontes removidos, então é difícil usá-lo imediatamente, mas pode ser adaptado conforme necessário.

Lista de componentes

  • ESP32 (usado o AZDelivery ESP32 NodeMCU)
  • Display e-Paper HAT WaveShare de 4,26 polegadas, 800x480
  • Encoder rotativo KY-040 com botão
  • LED WS2812 (pode ser substituído por um LED RGB simples)
  • Conector USB-C
  • Gabinete impresso em 3D
  • Resistores e capacitor de 0.1uF

Origem do projeto

Gosta de experimentar técnicas para melhorar a produtividade e, todos os anos, dedica tempo a projetos que possam ajudar outras pessoas. Com base na sua experiência como engenheiro de eletrônica, quis criar um dispositivo físico e acabou desenvolvendo um temporizador de foco para resolver os problemas de gestão de tempo de um amigo.

Motivos para a escolha dos componentes

Display ePaper
  • Queria um display sem backlight, e escolheu o display de 4,26 polegadas pelos seguintes motivos:
    • excelente resolução
    • tamanho adequado
    • suporte a atualização parcial
Encoder rotativo
  • Escolheu um dial giratório como dispositivo de entrada intuitivo e adicionou um capacitor de 0.1uF para suavizar o sinal.
LED
  • Inicialmente não havia plano para usar LED, mas, para complementar a sutileza do display, foi usado um LED WS2812 para indicar vários estados.

Fabricação do gabinete

  • O gabinete é composto por duas partes, e há um problema em que a borda superior entorta ligeiramente durante a impressão. Para resolver isso, foram adicionados pés de borracha e peso.

Software

  • Foi escrito em C++ e usa o framework Arduino. O display é controlado com a biblioteca GxEPD2, e parte do código do projeto foi gerada com IA.

Como usar o dispositivo

  • Ao iniciar o dispositivo, é possível entrar no modo de alteração de configurações ou de seleção de presets. Quando o timer começa, o LED pisca e uma mensagem é exibida na tela. É possível continuar trabalhando ou iniciar um descanso e, após algumas repetições, é dado um período de descanso mais longo.

Desenvolvimento

Mapeamento de pinos
Encoder rotativo (KY-040)
  • CLK: 32
  • DT: 21
  • SW: 14
Display ePaper (GxEPD2_426_GDEQ0426T82, WaveShare 4.26" b/w)
  • BUSY: 4
  • RST: 16
  • DC: 17
  • CS: 5
  • CLK: 18
  • DIN: 23
LED (WS2812)
  • DIN: 25

1 comentários

 
GN⁺ 2025-03-30
Comentários do Hacker News
  • Gostei muito deste projeto. A UI é muito atraente e bem projetada. Parece perfeito como atividade de fim de semana

    • Se você está procurando um projeto de hackathon, o ecossistema de E-ink já está maduro o suficiente para programar. Claude/AI consegue usar a API com facilidade
    • Em geral, as pessoas preferem colocar telas E-ink na sala de estar, porque incomodam menos do que displays com luz de fundo
    • E-ink e pomodoros são, cada um, interesses meus
  • Projetos do tipo "dispositivo" são sempre interessantes. Mesmo quando o objetivo é simples, muitas vezes são os mais desafiadores

    • Gostei da escolha da tela e do cuidado com o propósito e a usabilidade
    • Algumas observações sobre o design do objeto
      • Se o knob ficasse largo e plano em cima do aparelho, daria para centralizar a tela e deixar o dispositivo menor
      • Cantos e filetes fazem os objetos parecerem refinados. É um detalhe pequeno, mas faz grande diferença
      • Se o menu sempre tiver três opções, eu sugeriria colocar três botões na parte superior em vez de um knob
      • Se usar filamento translúcido, dá para fazer peças legais de "condução de luz"
    • Fiquei curioso se foi usado OpenSCAD no design do knob. O padrão do knob parece ter sido muito bem gerado de forma programática
  • É um ótimo toque extra focar em três casos de uso diferentes e fornecer estatísticas

    • Acho que valeria a pena mencionar que pomodoro recebeu esse nome de um timer físico com encoder rotativo
  • Conheço alguém que tentou abrir um negócio com um timer pomodoro físico

    • Como recurso extra útil para quem usa isso no escritório, colocaram LEDs no topo do dispositivo para dar para saber o estado sem olhar para a tela
  • Projeto bacana. Recomendo dar uma olhada na biblioteca LVGL. Ela é útil para criar UI como biblioteca gráfica embarcada

  • Toda a ideia do pomodoro vem de um timer de cozinha. A melhor UX pode ser encontrada em timers de cozinha físicos

  • Estou pensando em como fazer um timer pomodoro físico. Gosto da ideia de não mostrar o tempo restante. Estou usando o app Visual Timer

  • Adorei muito este projeto. Isso me fez pensar em portar minhas próprias ferramentas de produtividade para um dispositivo real

  • Sempre que vejo algo relacionado a timer pomodoro, lembro da entrevista com um fundador da YC. A empresa faliu em um ano e, depois disso, nunca mais consegui respeitar essa técnica