Índice:

Relógio do Space Invaders (dentro do orçamento!): 6 etapas (com fotos)
Relógio do Space Invaders (dentro do orçamento!): 6 etapas (com fotos)

Vídeo: Relógio do Space Invaders (dentro do orçamento!): 6 etapas (com fotos)

Vídeo: Relógio do Space Invaders (dentro do orçamento!): 6 etapas (com fotos)
Vídeo: Acidente de trabalho em máquina 2024, Julho
Anonim
Image
Image
Reúna peças
Reúna peças

Recentemente eu vi um build legal do GeckoDiode e imediatamente quis construí-lo sozinho. O Instructable é Space Invaders Desktop Clock e eu recomendo que você dê uma olhada nele depois de ler isto.

O projeto foi quase exclusivamente construído com peças fornecidas pela Adafruit com um gabinete impresso em 3D e facia cortada a laser. Somando tudo, o custo da construção torna-se muito caro! (cerca de £ 100 ou mais). O problema é que, se você não possui uma impressora 3D, precisa pagar para imprimir seu modelo ou comprar uma caixa feia no ebay, que geralmente é um pouco pequena demais, estreita demais, curta ou o contrário.

A maioria das minhas compilações tem que ser feita com um orçamento de amadores e os gabinetes sempre acabam sendo a parte mais cara. Então decidi construir o mesmo relógio, mas com um orçamento decente.

Se você gosta de assistir relógios estranhos, dê uma olhada no meu Steampunk Voltmeter Clock, que usa os mesmos materiais de construção para o gabinete:-)

Etapa 1: Reúna as peças

Para fazer este projeto, você precisará do seguinte. Tenha em mente que com os materiais para o gabinete você terá um monte de sobras que você pode usar em outros projetos (o que torna o custo de construções futuras ainda mais barato). Eu carreguei PDFs das coisas que você precisa se quiser verificar o preço, etc, no ebay.

Ferramentas (presumo que você já as tenha)

  • Ferro de solda
  • Solda
  • Bomba de solda (se você cometer um erro e precisar remover a solda)
  • Pistola de cola quente
  • Bastões de cola quente
  • Faca artesanal (também conhecida como faca Stanley)
  • Régua / fita métrica / compasso Vernier
  • Broca sem fio + brocas (1 mm a 13 mm)
  • Multiferramenta rotativa com disco de corte (também conhecido como Dremel)
  • Fluido de limpeza como álcool isopropílico (loção pós-barba barata também funciona)
  • Máscara de segurança (usada ao pintar em spray)

Eletrônica (Custo da eletrônica = £ 13,05)

Alguns desses eu tinha de graça. Brinquedos eletrônicos antigos têm esses lindos alto-falantes Mylar dentro, se você desmontá-los. Enquanto você estiver lá, você provavelmente poderá obter um barril DC e um botão de pressão também.

  • Cabos Dupont / Jumper - £ 0,99
  • DS1307 Módulo de relógio em tempo real - £ 0,99 (eu recomendo adquirir o DS3231 quando disponível)
  • Arduino nano + cabo usb - £ 2,23
  • Alto-falante 8 Ohm Mylar - £ 0,99
  • Botão momentâneo SPST - £ 1,49
  • Soquete de barril CC de 5,5 mm - £ 1,26
  • Fonte de alimentação 5v, 0,5A DC - £ 2,83
  • MAX7219 Visor de matriz de pontos - £ 3,76

Gabinete (Custo dos materiais do gabinete = £ 17,19)

  • Tubo de drenagem quadrado de 60 mm - £ 5,99 (você terá muito disso sobrando para mais projetos)
  • Tinta spray preta - £ 4,85
  • PVC preto (foamboard) - £ 2,99
  • Super cola - £ 0,99
  • Tampas de 60 mm - £ 2,37

Custo total = £ 30,24:-) ……..como hoje é o equivalente a 38 USD para qualquer leitor internacional.

Gosto de trabalhar com o tubo quadrado de PVC. Eles são fáceis de perfurar, cortar, pintar e usei um para o meu relógio Steampunk.

Etapa 2: Prepare seu tubo de drenagem

Prepare seu tubo de drenagem
Prepare seu tubo de drenagem

Marque onde você quer colocar as coisas

Isso foi tão fácil. Eu não usei nada extravagante. Primeiro cortei os 2,5 m de comprimento até um tamanho razoável para minha bancada em casa (cerca de 30 cm) com uma serra de corte. Mais tarde, cortei com uma dremel para deixar as bordas bem retas. Então, descansei os componentes na superfície do tubo e usei um mercado permanente para marcar onde queria perfurar e cortar. Eu tracei a parte externa da matriz de LED e usei uma multiferramenta rotativa para fazer um orifício quadrado para que ela se encaixasse perfeitamente. Usei um paquímetro digital para medir o diâmetro do botão e o cilindro DC para cortar os orifícios do tamanho correto na parte traseira e superior.

Corte uma moldura

Tenho montes de placas de espuma de PVC de projetos anteriores. Eles são ótimos para montar circuitos em gabinetes, usá-los para misturar epóxi e fazer outros bits e bobs. Pegue uma peça de tamanho A4 ou A5 e corte uma moldura quadrada de 5 mm ou moldura para enquadrar a matriz de LED. Isso ocultará quaisquer pontas tortas que você tenha feito ao cortar o orifício quadrado para a matriz. Para isso, desenhei um pequeno modelo no Inkscape e imprimi-o (arquivo SVG em anexo). Em seguida, colei-o com fita adesiva no foamboard e cortei cuidadosamente ao redor com uma faca artesanal. É complicado acertar, recomendo cortar primeiro o interior e depois o exterior.

Pintar tudo

Depois que todos os orifícios forem perfurados e cortados, remova todas as bordas rebarbas. Limpe as superfícies com um pano embebido em álcool para remover qualquer poeira ou poluição (ou alguma loção pós-barba barata se você não tiver nenhum IPA). Tente pulverizar em uma área bem ventilada e use uma máscara sempre que possível. Fiz isso do lado de fora com um pouco de papelão no chão, mas não é o ideal, mesmo uma pequena brisa pode fazer com que a tinta volte para o seu rosto. Seja cuidadoso e use equipamento de proteção sempre que possível.

Pulverize o tubo, a moldura e as tampas das extremidades para que fiquem do mesmo tipo de preto e deixe secar por algumas horas.

Etapa 3: programar o Arduino

Programe o Arduino
Programe o Arduino

Algumas informações sobre o código

Crédito para GeckoDiode porque peguei seu código e o modifiquei para funcionar com o Chip MAX7219. A versão Adafruit usa barramento I2C e o MAX usa barramento SPI. Para isso usei a biblioteca MaxMatrix, que baixei e instalei no IDE do Arduino. Se você quiser saber mais sobre MaxMatrix e como a matriz de LED funciona, há um breve tutorial em HowToMechatronics.com. A matriz de LED é composta exclusivamente de uma única cor de LED, em vez de ter um display multicolorido.

Uma frustração que eu tive é que NÃO há definições claras do que são as funções para a biblioteca e quais argumentos precisam ser passados para cada uma. Felizmente, consegui descobrir o que fazia o quê por tentativa e erro e, no final, não foi muito difícil fazer com que funcionasse corretamente. A primeira coisa a entender é que você deve definir quantos módulos 8x8 estão em sua matriz. No meu código, isso é armazenado em um número inteiro chamado "módulos" como este:

"módulos int = 4;"

Este é o NÚMERO de módulos 8x8 que você vinculou em seu display. Não o número de LEDs ou o pino que você está usando para enviar os dados. A próxima coisa a lembrar é que se o seu "sprite" ou qualquer outra coisa cobre todas as quatro matrizes, a matriz de bytes precisa ser definida assim:

"byte text_start_bmp = {32, 8,… * alguns dados de byte *…};"

Os números indicam a quantidade de linhas e colunas na matriz. Nesta ocasião, o byte denominado "text_start_bmp" é exibido em 32 colunas e 8 linhas. Os números são exibidos apenas em uma única matriz 8x8, portanto, o número do minuto 10 tem a seguinte aparência:

"byte minute_ten_bmp = {8, 8,… * alguns dados de byte *…};"

Os invasores cobrem duas matrizes, então o byte receberá 16, 8 nos dados do byte.

A outra coisa que me chamou a atenção foi o posicionamento dos dados do sprite. Você pode pedir ao Arduino para exibir o sprite em uma posição X / Y diferente na matriz da posição inicial padrão. O código é assim para o minuto zero:

"matrix.writeSprite (8, 0, minuto_zero_bmp);"

Um número é o ajuste X e o outro é Y. Não consigo me lembrar qual é qual agora, mas se você quiser empurrar o sprite para cima ou para baixo em 1 linha ou coluna, você simplesmente incrementa o número positivo ou negativo. Simples o suficiente para a matriz 8x8, mas quando seu sprite cobre mais de uma matriz, você deve definir a posição inicial de acordo. O sprite "POP" é mostrado abaixo:

"matrix.writeSprite (16, 0, invader_pop_bmp);"

Observe agora como a posição inicial é 16 e não 8? Aqui, o código está indicando que o sprite é exibido da esquerda para a direita da linha / coluna de posição 16. Ele considera dois monitores 8x8 como um único monitor 16x8, embora haja 4! Portanto, é importante pensar em quantas telas o sprite será exibido e dimensionar a matriz de bytes de cada sprite de acordo. Caso contrário, você terá alguns sprites muito interessantes!

DS1307 RTC

Embora o DS1307 funcione bem com a biblioteca Adafruit RTClib.h, você não pode definir a hora manualmente, o que é uma dor de cabeça. Eu só aceitei isso porque significava menos código para alterar. O DS1307 define a hora usando a hora e a data em que o código foi compilado a partir da hora do seu computador. Em vez disso, aprenda a usar a biblioteca DS3231 e configure-a uma vez para um ou dois minutos no futuro. Ele também tem menos "deriva", portanto, mantém o tempo melhor ao longo do tempo. Ambos os módulos usam o barramento I2C e acredito que o DS3231 pode ser usado com o RTClib.h se você quiser continuar a usá-lo.

Faça upload do código

Quando estiver satisfeito com o código, faça o upload para o Arduino. Anexei meu esboço do Arduino para sua consideração.

Etapa 4: montagem de eletrônicos

Montagem de eletrônicos
Montagem de eletrônicos

Durante o upload do código, eu recomendaria que os componentes eletrônicos fossem montados com fios duplos / jumpers em uma placa de ensaio primeiro, para que, ao fazer o upload do código, você saiba que tudo funciona como planejado. Isso permite que você resolva quaisquer problemas com a exibição de sprites, etc, antes de começar a colar e colar. No meu código, você pode ver que estou usando os pinos digitais 4, 5, 6, 7, 9, mas você pode alterá-los se necessário. Você pode precisar soldar os cabos no botão, no conector DC e no alto-falante, mas a maioria deve ser de conectores fáceis de encaixar.

Quando estiver satisfeito com o funcionamento dos componentes eletrônicos, você deve considerar soldar as conexões. Você pode fazer isso com stripboard / veroboard de cobre, mas para a pequena quantidade de componentes você pode soldar diretamente nos pinos do Arduino. Vai parecer um ninho de rato, mas ninguém vai ver o interior do recinto depois de montado, apenas certifique-se de que todas as partes metálicas estão segregadas, você não quer que nada entre em curto no gabinete.

Eu fiz o botão funcionar quando o pino "mainButton" é puxado para baixo. Descobri que o Arduino estava reconhecendo o botão falso pressionado quando a eletrônica flutuante instalou-se nele. Usar um resistor suspenso de 10K no botão e definir o pino como "INPUT_PULLUP" resolveu esse problema para mim.

Em anexo está o esquema em PDF e-p.webp

Etapa 5: Monte os eletrônicos e close-up

Monte a Eletrônica e Close Up
Monte a Eletrônica e Close Up
Monte a Eletrônica e Close Up
Monte a Eletrônica e Close Up

Para o meu relógio montei os eletrônicos usando cola quente, mas tome cuidado para não aplicar muito (os eletrônicos não gostam de ficar aquecidos por muito tempo). Usei uma pequena gota de supercola espalhada ao redor da moldura e pressionei contra a frente. Terminei o gabinete empurrando as tampas de cada extremidade. Claro que você pode colar as tampas das extremidades para envolver completamente o conjunto, mas deixei um lado do meu aberto para que ainda possa acessar a porta USB do arduino para redefinir a data e a hora no futuro.

Etapa 6: aproveite

Aproveitar
Aproveitar
Aproveitar
Aproveitar

No geral, estou satisfeito com a forma como isso saiu, considerando que é apenas um cano de sarjeta e tinta spray. Espero que goste e me diga se encontrar alguma atualização interessante que possa ser adicionada. Gostaria de saber se alguém pode baratear isso ou se existe outra maneira econômica de fazer um invólucro que eu possa experimentar em meu próximo projeto.

Recomendado: