3 pontos por GN⁺ 2025-08-05 | 1 comentários | Compartilhar no WhatsApp
  • Kilopixel é um display grande baseado em 1.000 pixels de madeira desenvolvido ao longo de seis anos, em que qualquer pessoa pode desenhar pela internet.
  • Este projeto foi concluído após diversas etapas de protótipos físicos, testes de materiais e mudanças na forma dos pixels.
  • Utiliza máquina CNC e Raspberry Pi, além de aplicativo web e sensores, com uma estrutura única que conecta online e offline.
  • Os usuários podem participar submetendo um desenho diretamente pelo site ou votando, e também há um ambiente para transmissão ao vivo e vídeo time-lapse.
  • É um projeto criativo e aberto que estuda a transferência do controle da tela para outras pessoas e diferentes usos futuros.

Visão geral do projeto

  • Kilopixel é o display de 1000 pixels de madeira mais ineficiente do mundo, desenvolvido em 6 anos
  • Foi projetado como um sistema interativo no qual qualquer pessoa pode desenhar na tela pelo site (kilopx.com)
  • O projeto é resultado da convergência de vários elementos de IT e makers, como app web, controlador físico, usinagem CNC, geração de G-code, modelagem e impressão 3D.

Ideia inicial e motivação

  • Pegou inspiração em obras de espelho não tradicionais de Danny Rozin e em um player de vídeo ultra-lento baseado em eInk
  • Diferente dos displays modernos de alta resolução, escolheu uma abordagem extremamente lenta e ineficiente de troca, alterando os pixels apenas 10 vezes por minuto
  • Representa exatamente 1.000 pixels em grade 40×25 e recebeu o nome kilopx.com por ser um domínio fácil de memorizar

Primeiro protótipo (21x3 pixels)

  • Partiu de uma base de madeira, migrando rapidamente para peças de alumínio do kit Openbuilds (estrutura similar à de uma impressora 3D)
  • Com montagem automatizada básica de Raspberry Pi, controlador CNC e motor de passo, fez testes iniciais
  • Descobriu várias limitações e problemas técnicos no mecanismo de seleção e operação dos pixels

Dificuldade em encontrar o pixel ideal

  • Testaram vários materiais esféricos, como bola de tênis de mesa, espuma rígida e bola de madeira
    • Encontraram dificuldades práticas de custo, peso, dificuldade de compra dos materiais e variação de tamanho
    • Ex.: 1.000 bolas de 50 centavos custariam US$ 500
  • A bola de tênis de mesa deforma facilmente ao perfurar e falha por variação de tamanho
  • Neop-ball, bounce-ball, bola de madeira e isopor também foram considerados inadequados por problemas com perfuração, pintura, durabilidade e peso

Teste do mecanismo de rotação de pixel

  • Tentou-se girar os pixels combinando roda de Lego, motor e sensores
  • Foram testados vários modos de operação, incluindo solenóide e servo motor, mas todos foram descartados por exigirem controle muito rígido

Transição de pixels esféricos para pixels cúbicos

  • Após uma conversa no podcast, houve uma mudança completa para pixels cúbicos de madeira e início da produção manual
  • A produção em escala demandou bastante tempo, mas ficou satisfeito com a qualidade visual e de movimento alcançada

Construção da grade de pixels

  • A precisão da matriz 40×25 foi garantida por projetar uma estrutura de grade fixa, em vez do próprio pixel
  • Foram usinadas 25 prateleiras finas perfuradas com 40 furos e os pixels são encaixados em fios metálicos para manter um espaçamento uniforme
  • O sistema foi projetado para que cada pixel funcione de forma totalmente independente, sem influenciar pelos vizinhos

CNC e controle do sistema

  • Inclui explicação dos princípios básicos de CNC e do uso de G-code
  • Utiliza Raspberry Pi e controlador CNC, scripts Python, sensor de luz, biblioteca pigpio e outros
  • Integrada à web API, seleciona o próximo pixel para alterar, controla via G-code, verifica os resultados com sensores e envia feedback de volta para a API

Mecanismo de manipulação de pixel (pixel poking)

  • Os pixels possuem ranhuras a cada 90° e giram ao empurrar a borda com um bastão flexível (gluestick)
  • Todos esses movimentos são automatizados por G-code

Modos de exibição de imagem e interface web

  • A API é controlada pelo app web e existem três modos de exibição da tela
    • Submissão do usuário: qualquer pessoa submete imagem 40×25 e vota, e as populares aparecem em sequência
    • Colaboração em tempo real: participantes alteram pixels em tempo real (menos ideal com grande quantidade de pessoas)
    • Modo idle: saída algorítmica de alterações como relógio, formas e outros
  • O stack do app web evoluiu de Node/Socket.IO para Laravel+Livewire e, por fim, para Laravel+InertiaJS+VueJS

Streaming ao vivo e time-lapse

  • Com 2 webcams (close-up e wide shot), utiliza OBS e ffmpeg para streaming ao vivo da tela no YouTube em tempo real
  • Após checagem de status da API, também oferece recursos de criação e publicação de vídeos time-lapse com as artes concluídas

Segurança e operação de sistema aberto

  • Foi construída checagem mínima para prevenir abuso e, quando necessário, a remoção rápida de arte publicada
  • Mantém-se uma estrutura de participação bastante aberta por padrão, com login via Bluesky OAuth, entre outros

Planos futuros

  • Espera-se participação diversa de usuários e, mais adiante, considera-se repassar o controle por API para outra pessoa
  • Em última instância, imagina-se usar o display como fundo de webcam ou em espaços como escritórios e cafeterias
  • Qualquer pessoa pode participar e apreciar em tempo real pelo site

Conclusão

  • O Kilopixel é um projeto único que combina interatividade online com fisicalidade offline
  • O processo de criação é um caso interessante, com muitas tentativas e erros e esforço técnico, capaz de inspirar makers e desenvolvedores

1 comentários

 
GN⁺ 2025-08-05
Comentário do Hacker News
  • Sinto que é um projeto incrível, e eu também já fiz uma vez uma tela de 30 pixels no passado. Consulte o projeto PixelWeaver. Era uma abordagem mecânica com cartões perfurados e alavanca, em que todos os pixels mudavam ao mesmo tempo; o processo de desenvolvimento do mecanismo pareceu muito familiar.

    • Percebi o quanto o trabalho é incrível e reconheço o quanto esforço levou para ficar pronto. Ao ver uma máquina Linotype real dos anos 1800, fiquei maravilhado com as conquistas das pessoas da geração anterior. A máquina era tão complexa que mal consigo imaginar como teria sido fabricada. Quando se fala de teares, lembro exatamente dessa sensação.
  • O Mumbo Jumbo já implementou algo semelhante no Hermitcraft usando trap door. Agora há uma revolução chamada "buildstone", uma corrente de criar estética com redstone. É possível conferir o vídeo do Mumbot 2.0. O Grian também já criou uma cachoeira animada usando dispenser, partículas de neve e flechas de poção. Vídeo da cachoeira do Grian

  • Projeto sensacional, assisti até a parte em que o gato diz "hi". Parece que não há novos posts há 9 dias no Bluesky de @kilopx.com. Sugestões de melhoria: mover a "caneta" o máximo possível após o envio para que a obra final fique mais limpa na foto, além de mostrar no site quem está enviando no momento; e mostrar as obras finalizadas em uma galeria de "history" separadamente. No momento, apenas os envios pendentes exibem links permanentes como "Timelapse will be available after this is drawn", mas não parece haver uma forma fácil de encontrar resultados concluídos ou em andamento.

  • Uma taxa de atualização de 370 microhertz dá um significado totalmente novo ao conceito de "Calm Technology", é muito legal. Explicação da Wikipedia sobre Calm Technology

    • Este tema é realmente interessante. Fico curioso se vale a pena ler o livro "Calm Technology", do Amber Case, se você já leu.

    • A taxa de frames do vídeo principal da transmissão do YouTube é, por acaso, o mesmo valor; espero que o OP possa ajustar isso.

  • Pela minha experiência, essa tela parece ser a mais cara por pixel, mas é a mais atraente dessa categoria que já vi; no sentido mais positivo, é algo realmente absurdamente caro.

    • Um outro exemplo de pixel bonito e caro é o trabalho de espelho de Danny Rosin mencionado no texto: vídeo relacionado

    • Também é vantagem não gastar energia nenhuma enquanto a imagem não muda.

    • O Mythbusters parece ainda ter o recorde: vídeo do experimento relacionado

    • Não quero nem pensar no preço por pixel; quando adiciono o custo do meu tempo, fica ainda pior, e acabei por não calcular o custo final de propósito.

    • Eu usei uma cola bastão flexível para criar o mecanismo de picoteamento recíproco. Foi a melhor escolha de "consumível" em termos de custo e criatividade.

  • Como outra ideia, é possível alinhar o cubo de forma que, quando estiver de frente, quem apontar seja a quina e não a face. Se cada cubo tiver 2 lados escuros e 2 claros adjacentes, dá para definir “duas imagens ao mesmo tempo”: uma vista a 45° da esquerda e outra a partir da direita (4 estados por pixel).

    • Se uma das cores for abandonada, talvez dê para usar um formato de prisma triangular para posicionar as faces como virtualmente adjacentes e girá-las separadamente: imagem esquemática

    • Também parece possível expandir para uma tela colorida pintando cada face com RGBK ou CYMK.

    • Da mesma forma, com a câmera frontal, também é possível dobrar o número de pixels com o hardware atual.

  • O projeto é ótimo, mas me faz pensar constantemente em maneiras de aumentar a velocidade (embora saiba que ela não é o ponto principal). Se o mecanismo que gira os blocos funcionar sem precisar alterar constantemente o alinhamento no eixo X, seria possível processar uma coluna inteira mais rápido; ou, se não precisar de alinhamento no eixo Y, talvez também por fileiras. Se o mecanismo de rotação do bloco não tivesse de ser reiniciado continuamente (ex.: arquitetura rotativa), pareceria mais rápido; imagino que isso seria implementado rapidamente por um especialista em automação industrial. Aliás, o fato de no início terem adotado uma abordagem analógica de e-ink com bola é bastante impressionante.

  • Sobre uma “alternativa de matriz de pontos que usa energia apenas na atualização da imagem”, vale imaginar uma forma que nunca vi antes: haveria uma impressora térmica de um lado da caixa e, no lado oposto, um carretel de enrolamento + mola de tração escondidos, com o scroll de papel térmico exibido atrás de vidro com [bloqueio UV] e atualizando a imagem ao imprimir uma nova arte no display.

    • Dando um passo além, talvez também seja possível cobrir a superfície do display com a tinta térmica apagável da caneta Pilot Frixion, que desaparece a 60° e escurece novamente a -10°, ficando estável nas temperaturas intermediárias. Então é possível reutilizar um ciclo todo, mas fica a dúvida de quantas vezes a tinta resistiria.

    • Algumas máquinas de fax usam papel térmico e conseguem chegar a pelo menos 8,5 polegadas.

    • Se for preciso jogar fora o papel cada vez que a imagem muda, acho discutível chamar isso de "display".

    • Aproveitando a estrutura da caixa, talvez o display possa ficar com 4 lados. Basta acertar o mecanismo: enquanto a imagem principal é trocada, as demais iam para o display 2, 3 e 4. E ficaria interessante colocar um rolo escondido no quadro em cada canto e uma abertura no bisel.

  • Acho isso muito legal, e gostei muito da leitura. O projeto me remeteu a algo de romance steampunk que já li. Fui procurar mais detalhes no Google e vi que é a kinotrope do Difference Engine de Gibson & Sterling. Alguém fez uma versão com servos em cada pixel; deve ter sido extremamente caro. Post de blog relacionado

    • No Breakfast Design, inspirado no trabalho do Rozin, já foram feitos vários painéis semelhantes em diferentes "mídias": painel da breakfaststudio
  • Continuo imaginando variações ainda “mais rápidas”; por exemplo, para cada linha de varredura, pode-se disparar bolas de madeira por tubos ou canais para abastecer cada linha com a cor certa. Um sistema de gravidade ou pneumático poderia ser usado para resetar/recarregar uma linha, e dá para imaginar expandir isso para o tamanho de um estádio com pixels de bola de boliche. Um desafio aqui seria acertar o momento certo para redistribuir cada cor de volta aos canais de alimentação e amortecer o impacto das bolas para reduzir ruído e desgaste. Do outro lado, também seria possível usar matriz ativa, com cada bloco girando no lugar via solenóide/servo para representar várias cores.