Índice:

NeoClock: 7 etapas (com imagens)
NeoClock: 7 etapas (com imagens)

Vídeo: NeoClock: 7 etapas (com imagens)

Vídeo: NeoClock: 7 etapas (com imagens)
Vídeo: CMC - MEMÓRIA RAM (2/2) 2024, Junho
Anonim
Image
Image

Trata-se de construir um relógio usando os fantásticos anéis de neopixel da Adafruit. A graça desse relógio é que, na verdade, ele tem dois anéis de neopixels, um para contar as horas e outro para os minutos, segundos e milissegundos. O relógio mantém a hora perfeita usando o chip DS3234 DeadOn Real Time Clock da Sparkfun. Fácil de construir e divertido de modificar. Minha esperança é que inspire outras pessoas a construir relógios ou outra arte usando os anéis de neopixel.

Para aqueles que desejam obter todos os meus arquivos em um formato simples de gerenciar, fiquem à vontade para baixá-los do meu repositório github para este projeto em

Etapa 1: projetando o relógio

Projetando o Relógio
Projetando o Relógio
Projetando o Relógio
Projetando o Relógio
Projetando o Relógio
Projetando o Relógio
Projetando o Relógio
Projetando o Relógio

Eu sabia desde o início que queria usar pelo menos dois anéis de neopixels. Depois de alguns trabalhos, decidi que o melhor seria ter um anel dentro do outro, mantendo a forma original de um relógio. O anel menor seria o das horas e o tempo restante seria mantido no anel maior. Algumas considerações de design incluíram o custo dos neopixels, a necessidade de energia, o tamanho das peças cortadas a laser e o tipo de arte que eu queria colocar nelas.

Concluída essa etapa, decidi que precisava entender a eletrônica antes de criar os planos para o corte a laser do corpo do relógio.

Etapa 2: Projetando os eletrônicos

Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica
Projetando a Eletrônica

Projetar a eletrônica se resumia a saber com antecedência os elementos que eu queria no relógio:

  • Anéis de neopixel (60 contagens e 24 contagens)
  • Arduino (o cérebro)
  • Regulagem do relógio (arduinos não marcam o tempo)
  • Gerenciamento de energia

O tamanho e os requisitos de energia dos neopixels estão bem documentados. Como eles funcionam em 5V DC, decidi usar um Arduino 5V e tornar as coisas mais simples para mim. Considerando o espaço, decidi fazer o protótipo em um Arduino Uno comum, mas para a parte eletrônica final escolhi um Arduino Mini.

A primeira iteração deste projeto veio diretamente da página NeoPixel Basic Connections da Adafruit. Incluí o diagrama do site para facilitar as coisas. Duas coisas são importantes a partir disso:

  1. Um capacitor 1000uF é necessário para evitar que a corrente inicial danifique os pixels.
  2. Um resistor de 470 ohm é necessário no primeiro pixel do anel de contagem de 60 (este resistor é integrado ao anel de contagem de 24)

Adafruit também tem um conjunto de Melhores Práticas NeoPixel que você deve ler antes de continuar com o design.

Manter o tempo no relógio é outro problema. O relógio embutido no arduino não é suficiente para manter um bom tempo por longos períodos de tempo. Um problema pior é que a hora no arduino pode precisar ser zerada todas as vezes. Os computadores resolvem esse problema usando uma pequena bateria no chip do relógio para manter o tempo entre as interrupções de energia. No passado, eu usaria algo como o ChronoDot da Adafruit. Mas neste caso eu queria uma desculpa para usar o DS3234 (DeadOn RTC) da SparkFun. Você também pode manter informações de data no DeadOn RTC se quiser integrá-las ao relógio.

Finalmente, o gerenciamento de energia precisava de alguma consideração. Eu já sabia que tudo precisava ser 5V, mas a quantidade de corrente necessária parecia ser um mistério. Um regulador de tensão comum na maioria dos projetos é o L7805. Isso levará tensões de até 24 V e uma corrente máxima de até 1,5 A. Eu sabia que tinha um wort de parede 12V 1.5A por aí, então decidi que este seria o regulador de tensão perfeito (e barato!) Para o projeto.

As peças restantes viriam da minha caixa de peças ou do Radio Shack. Eles incluíram os fios, interruptores e conector de alimentação DC.

Etapa 3: Construindo a Eletrônica

Construindo a Eletrônica
Construindo a Eletrônica
Construindo a Eletrônica
Construindo a Eletrônica
Construindo a Eletrônica
Construindo a Eletrônica

Uma lista completa dos eletrônicos que comprei para construir este projeto pode ser encontrada no meu repositório github aqui: Lista de peças de eletrônicos. Ele contém links para a página do produto para cada peça e inclui algumas informações adicionais, incluindo o SKU do produto. Fiz um protótipo disso rapidamente em uma placa de ensaio e passei para o corte e construção a laser antes de tirar qualquer foto. No entanto, eu o construí para ser fácil de desmontar, então dividi as peças nas fotos acima para você.

Observe atentamente as imagens, pois os fios foram intencionalmente dobrados de forma a serem fáceis de seguir e para manter todo o perfil da eletrônica fina. Fazer essa prototipagem inicial antes do desenho do corte a laser me permitiu verificar a espessura das peças para que eu pudesse descobrir as dimensões finais do corpo do relógio.

Você notará que fiz algumas placas de ensaio personalizadas. Tentei tirar fotos das costas dessas pranchas para que você possa repeti-las. Você pode comprar uma variedade de placas de ensaio como essas por alguns dólares e fazer com que se encaixem no seu projeto.

A fiação é direta, mas as coisas importantes a lembrar das imagens são estas:

  • Os interruptores Mode e Set precisarão de resistores pull down. Eu usei resistores de 2.21Ohm que eu tinha, mas qualquer resistor pequeno funcionará (de preferência não inferior a 1kOhm). Isso estabiliza os pinos de entrada do Arduino conectados para que, quando eles aumentem, seja distinguível do ruído.
  • A onda quadrada (SQW) no DS3234 foi aterrada, pois não está em uso.
  • A alimentação do L7805 é colocada no Arduino Mini no pino RAW. Sempre coloque a energia que entra no Arduino em RAW.
  • O primeiro pixel do anel de 60 neopixels tem um resistor de 470 ohm para reduzir qualquer dano ao primeiro pixel de picos de dados. Isso não deve ser um problema, pois o neopixel de 24 contagens já tem um resistor integrado para isso, mas é melhor prevenir do que remediar.
  • Os interruptores Mode e Set são interruptores de botão momentâneos SPST

As cores dos fios são:

  • Vermelho: + 5VDC
  • Preto: Chão
  • Verde: Dados
  • Amarelo, azul, branco: fios especiais para DS3234

Se esta é a primeira vez que usa neopixels, lembre-se de que eles podem ser considerados uma longa cadeia. Portanto, pode parecer estranho falar sobre um "primeiro pixel" em um anel, mas na verdade há um início e um fim para cada cadeia nos anéis. Neste projeto, os 24 pixels do anel pequeno vêm primeiro e os 60 pixels do anel maior vêm depois. Isso realmente significa que tenho uma cadeia de 84 neopixels.

Para fiação no Arduino Mini:

  • DS3234 conecta nos pinos 10 - 13
  • Os interruptores Mode e Set estão nos pinos 2 e 3
  • Os dados de neopixel vêm do pino 6.

Também recomendo colocar os 6 cabeçalhos na parte inferior do Arduino Mini para que você possa programá-lo por meio de um cabo FTDI.

Uma observação importante sobre o atual: este relógio exige muito. Tenho certeza de que poderia resolver isso, mas minha experiência prática é que qualquer coisa igual ou inferior a 500mA acabará por causar quedas de energia. Isso se manifesta como o relógio piscando em cores loucas e não marcando o tempo. Meu wort de parede final é 12 V e 1,5 A e eu nunca tive um escurecimento com ele. No entanto, 1,5 A é o limite que o regulador de tensão (e outras peças) irá assumir. Portanto, não exceda esse valor.

Etapa 4: Codificando o Relógio

Codificando o Relógio
Codificando o Relógio

O código completo do relógio pode ser encontrado no Código NeoClock no GitHub. Eu incluí o arquivo aqui, mas qualquer alteração acontecerá no repositório.

Acho que escrever código pode ser assustador se você tentar fazer tudo de uma vez. Em vez de fazer isso, tento começar com um exemplo prático e desenvolver recursos conforme preciso. Antes de entrar nisso, quero salientar que meu código veio da combinação de vários exemplos dos repositórios a seguir e do fórum do Arduino CC. Sempre dê crédito onde é devido!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Alguns exemplos de código desses repositórios podem ser encontrados em meu Diretório de exemplos de código

A ordem das operações que usei para construir o código foi mais ou menos assim:

  • Confirme se os neopixels funcionam com o Exemplo de Teste de Trança
  • Tenta rodar um relógio com o Código de Loop de Tempo
  • Modifique o relógio para funcionar em dois anéis em vez de apenas um
  • Adicione o DS3234 para manter o tempo por meio do Exemplo DeadOn RTC
  • Adicionar o modo e definir interruptores
  • Adicione o código do Debounce com a ajuda do Tutorial do Arduion Debounce
  • Adicione alguns temas de cores para os LEDs do relógio
  • Adicione algumas animações para as marcas de 0, 15, 30 e 45 minutos
  • Adicione pontos de bússola ao relógio para orientar as marcas de 0, 15, 30 e 45 minutos

Se você quiser ver como eu construí este código, você pode usar o GitHub para ver cada confirmação de código. A história do relógio está na História do Commit.

Foi divertido adicionar esquemas de cores, mas no final incluí apenas quatro deles no menu. Cada tema define uma cor específica nos "ponteiros" das horas, minutos, segundos e milissegundos. Realmente, as opções são infinitas aqui, mas incluí os temas (nomes de métodos listados):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

No entanto, você pode encontrar esses métodos adicionais no código:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

As animações foram adicionadas porque gostei da ideia de relógios antigos batendo nos quatro pontos de quinze minutos do relógio. Para este relógio fiz as seguintes animações:

  • 15 minutos: Colorir os anéis de Vermelho
  • 30 minutos: Colorir os anéis de Verde
  • 45 minutos: Colorir os anéis de Azul
  • Top of the Hour: Faça um arco-íris entre os dois anéis

A usabilidade acabou sendo um problema com o relógio porque ninguém conseguia orientá-lo. Afinal, são apenas dois anéis de LEDs. Então, para resolver o problema, adicionei os pontos da bússola ao relógio. Isso melhorou muito a habilidade de dizer as horas. Se eu soubesse disso antes de mandar buscar as peças cortadas a laser, poderia ter acrescentado algo à arte. Mas acontece que você não consegue ver a arte tão bem no escuro, então ter os pontos cardeais realmente ajuda. Uma consideração com isso é que, ao decidir colorir um pixel, você deve primeiro capturar a cor atual e criar uma nova cor combinada. Isso dá uma sensação mais natural.

Um último petisco é de cerca de milissegundos. Milissegundos no Arduino saem do cristal interno do Arduino e não do DS3234. Depende de você se deseja exibir milissegundos ou não, mas eu fazia isso o relógio sempre parecia estar fazendo alguma coisa. Pode incomodar você que os milissegundos e segundos nem sempre se alinham, mas na prática, ninguém nunca mencionou isso para mim ao olhar para o relógio e eu acho que parece bom.

Etapa 5: Projetar os arquivos de corte a laser

Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser
Projetando os arquivos de corte a laser

Há duas considerações que eu tive que fazer ao projetar as limas cortadas a laser. O primeiro era o material com o qual eu queria construir e o segundo era como seria construído. Eu sabia que queria um acabamento em madeira com acrílico para difundir os neopixels. Para descobrir o material, primeiro encomendei algumas amostras de Ponoko:

  • 1x folheado de MDF - nogueira
  • 1x folheado de MDF - cereja
  • 1x acrílico - cinza claro
  • 1x acrílico - opala

As seleções de madeira permitem-me ver como ficaria a rasterização e como ficaria a queimadura na lateral do relógio. O acrílico me permitiria testar a difusão dos neopixels e comparar como ficaria com a madeira. No final decidi por Merisier com acrílico Opala.

As dimensões do relógio foram determinadas principalmente pelo tamanho dos anéis de neopixel. O que eu não sabia era a espessura necessária para caber na parte eletrônica. Tendo construído a eletrônica e sabendo que a madeira tinha cerca de 5,5 mm de espessura, concluí que precisava de cerca de 15 mm de espaço dentro do relógio. Isso significava três camadas de madeira. Mas com a frente e a parte de trás já ocupando a maior parte do espaço no meu projeto, eu precisava quebrar aqueles anéis em "costelas" que eu poderia colar depois.

Usei o InkScape para desenhar no modelo fornecido por Ponoko. Depois de desenhar o relógio, comecei a desenhar a árvore à mão. Não consegui importar a imagem original que me inspirou, mas não foi terrível descobrir como fazer algo semelhante sozinho.

O custo dos materiais era de apenas US $ 20, mas o custo de corte acabou sendo cerca de US $ 100 a mais. Duas coisas contribuíram para isso:

  • Curvas e círculos custam mais porque a máquina está se movendo em dois eixos e este projeto tem muitas curvas
  • A rasterização requer muitas passagens para frente e para trás na peça. Descartar isso teria economizado mais dinheiro, mas eu gostei.

Depois de finalizar o design, enviei os arquivos EPS para Ponoko e minhas peças ficaram prontas cerca de uma semana depois.

Observe que eu não incluí os interruptores Mode e Set ou o DC Power Jack no design. Quando enviei isso, ainda não havia decidido quais seriam essas partes. Para me dar mais flexibilidade, eu os deixei de fora e decidi que iria perfurá-los mais tarde com a mão.

Etapa 6: Construindo o Relógio

Construindo o Relógio
Construindo o Relógio
Construindo o Relógio
Construindo o Relógio
Construindo o Relógio
Construindo o Relógio
Construindo o Relógio
Construindo o Relógio

Quando todas as peças chegaram, construí o relógio. O primeiro passo foi o corpo do relógio, que me obrigou a perfurar as costelas e colá-las atrás e na frente. Coloquei duas camadas de costelas nas costas e uma camada na frente e as fixei com cola de madeira. Para a frente usei cola de madeira para juntar os anéis de acrílico e os círculos de madeira. Eu tinha uma peça central sobressalente que cortei como um molde que foi útil durante a construção. Eu colei na parte de trás do pedaço da árvore e isso me deu um lugar onde eu poderia colar os neopixels mais tarde.

Com a carroceria construída, decidi fazer furos para os interruptores e a tomada de força. Um pouco de geometria (como pode ser visto na foto) me ajudou a alinhar tudo. Usando um pedaço de madeira separado do lado de fora enquanto eu fura (com muito cuidado!), Fiz os furos e colei os interruptores e o macaco.

Todos os componentes eletrônicos entraram em seguida. Colei os neopixels primeiro, seguidos pelo capacitor. Isso eu conectei na placa de fuga de energia de neopixel. Então, na parte de trás, coloquei os fios nos interruptores e na tomada. Também incluí o regulador de tensão L7805.

Uma nota rápida sobre a orientação dos anéis. Para o grande anel de 60 pixels, você precisa orientar o relógio de forma que um dos pixels esteja exatamente no topo para marcar os zero minutos. Qual pixel não importa e eu explicarei o porquê em um minuto. Para o pequeno anel de 24 pixels, você precisa orientar o relógio de forma que o topo esteja realmente entre dois pixels. A razão para isso é que se você quiser marcar 12 horas, você acaba iluminando dois pixels em vez de um. Por ter o deslocamento, e com a difusão do plástico, vai parecer que você realmente tem 12 pixels de largura.

Quanto a qual pixel o código designa como o "topo" de cada anel, você precisa editar um pouco o código. Eu tenho dois valores em meu código chamados "inner_top_led" e "outer_top_led". Em meus relógios, o "inner_top_led" tinha 11 pixels do início do anel pequeno e o "outer_top_led" tinha 36 pixels do início do anel grande. Se acontecer de você orientar os anéis de forma diferente, você deve alterar esses valores para serem os mesmos de sua orientação. Um pouco de experimentação e você encontrará o valor certo muito rapidamente.

Neste ponto, testei se tudo funcionou conforme o esperado.

Mas, como acontece com todos os projetos, tive um problema ao perceber que não havia descoberto como tudo funcionaria. Percebi que tinha cerca de 3/8 de polegada de espaço entre os neopixels e as costelas, então fui até a Home Depot e peguei um pino de 3/8 de polegada e vários ímãs de neodímio. Construí pequenos suportes de madeira em três locais e lixei-os para poder colocar dois ímanes em cada suporte (com super cola). Acabei com 3 pares de 2 estandes cada. Em seguida, colei-os na moldura e segurei tudo no lugar com uma braçadeira. Fiz isso enquanto a cola das arquibancadas estava molhada para que tudo ficasse alinhado e secasse no lugar correto. Funcionou perfeitamente e adoro que o lançamento esteja todo escondido.

Por último, descobri que precisava pendurá-lo na parede para perfurar um pequeno hangar na parte de trás para poder colocá-lo na parede.

Etapa 7: Reflexões Finais

Este projeto foi muito divertido de construir e gostei de aprender sobre neopixels e o DS3234. Eu gostei especialmente de finalmente construir um projeto que parecia bom do início ao fim. Há algumas coisas que eu atualizaria se fizesse isso novamente, mas são pequenas:

  • Escolhi dois botões em vez de três para simplificar. Mas ter um botão que me permitisse descer e subir teria sido bom para acertar o relógio
  • O botão de modo e o botão definir são indistinguíveis. Costumo misturá-los. Talvez eu os colocasse em lados opostos no futuro.
  • Nunca terminei a fachada de madeira. Eu gostei do visual no começo e depois fiquei preocupado que se eu bagunçasse o acabamento iria custar muito caro para consertar.
  • Rasterizar a árvore foi uma boa aparência, mas eu poderia ter desenhado mais detalhes para a árvore no futuro.
  • Diminuir o brilho do relógio também seria um bom recurso, já que é bastante claro no escuro. No entanto, o escurecimento está vinculado à cor e descobri que aquele pedaço estava demorando muito, então eu o abandonei. Provavelmente reinvestiria nesse recurso no futuro.

Obrigado por ler este instrutível. Espero que você faça seu próprio projeto de relógio ou neopixel e compartilhe comigo. Feliz construção!

Recomendado: