Índice:

Relógio de cubo multifuncional baseado em posição: 5 etapas (com imagens)
Relógio de cubo multifuncional baseado em posição: 5 etapas (com imagens)
Anonim
Image
Image
Relógio de cubo multifuncional baseado em posição
Relógio de cubo multifuncional baseado em posição
Relógio de cubo multifuncional baseado em posição
Relógio de cubo multifuncional baseado em posição

Projetos Fusion 360 »

Este é um relógio baseado em Arduino com um display OLED que funciona como um relógio com a data, como um cronômetro de cochilo e como uma luz noturna. As diferentes "funções" são controladas por um acelerômetro e são selecionadas girando o relógio do cubo.

Eu queria um novo relógio de mesa de cabeceira, mas não queria gastar dinheiro em um relógio sofisticado que tinha toneladas de funções que eu não usaria. Além disso, eu estava coletando componentes e sensores que estavam por aí, então decidi usá-los para fazer meu próprio relógio!

Eu tinha alguns objetivos para este projeto:

  1. Exibir esse tempo com uma opção para ser desligado
  2. Inclui uma função nightlight
  3. Inclui um cronômetro de sesta de 15 minutos com alarme
  4. Ser capaz de exibir a data

Suprimentos

  • Arduino Pro Mini 5V
  • ADXL335 Acelerômetro de 3 eixos
  • Relógio de tempo real DS3231 AT24C32 IIC de precisão
  • Mini alto-falante
  • Display OLED SSD1306 IIC 0,96 pol.
  • Fonte de alimentação 5 V DC
  • LED x 2
  • Resistores 220ohm x 2
  • Jack barril DC
  • Arame
  • Ferramentas

    • Cortadores de fio / decapantes
    • Ferro de solda / solda
    • Impressora 3D (opcional)
    • Programador FTDI para interface entre o Pro mini e o Arduino IDE

Etapa 1: protótipo e teste do circuito

Prototipar e testar o circuito
Prototipar e testar o circuito
Prototipar e testar o circuito
Prototipar e testar o circuito
Prototipar e testar o circuito
Prototipar e testar o circuito

Conecte componentes ao Arduino. O layout ou esquema do breadboard são mostrados acima. O RTC e o OLED usam o protocolo I2C para fazer interface com o Arduino e utilizar os pinos A4 e A5. O acelerômetro usa 3 pinos analógicos. Usei A0, A1, A2. Os LEDs e Piezo podem usar qualquer um dos pinos digitais, usei 4 e 8 respectivamente.

Interface com cada componente. Tive que instalar algumas bibliotecas do Arduino para fazer a interface com cada componente. Eles são mostrados na imagem acima.

Codifique usando o IDE Arduino. Eu examinei alguns esboços de exemplo fornecidos por cada biblioteca para descobrir a sintaxe apropriada para cada componente com base no que eu queria que eles fizessem. Eu criei um esboço para cada componente para testá-los individualmente. Eles são fornecidos abaixo. Comecei com o alto-falante piezo porque era o mais fácil. Na verdade, não precisava de uma biblioteca especial, apenas uma função específica que define a frequência e o som. Para fazer os LEDs funcionarem, bastou puxar um dos pinos digitais para cima e para baixo. Em seguida, mudei para o OLED, que também era muito simples de configurar. O esboço abaixo é uma demonstração da Adafruit que percorre todas as animações / textos que podem ser exibidos. Então, tentei fazer o RTC funcionar. O esboço que forneci fazia parte de um exemplo na biblioteca que obtém a hora atual e a imprime no monitor serial. Finalmente, usei o exemplo fornecido para testar o acelerômetro. As saídas de cada eixo são impressas no monitor serial.

Agora é hora de colocar tudo junto!

Etapa 2: Programa Principal

Programa principal
Programa principal
Programa principal
Programa principal

Agora que sei que tudo funciona individualmente, posso começar a criar um programa que reúna tudo. Discutirei meu processo para escrever o programa abaixo, mas sinta-se à vontade para apenas baixar o código completo abaixo para usar em seu próprio projeto. Tentei deixar comentários específicos para que você possa percorrer o código sozinho.

Eu precisava exibir a hora e a data no OLED, o que era bastante simples. Eu só tive que imprimir a hora atual no monitor em vez do monitor serial. Houve algumas coisas de formatação que eu tive que considerar para fazê-lo exibir um formato de 12 horas em vez de 24 e adicionar / remover 0's onde fossem apropriados. A data era semelhante com a adição da exibição do mês e do dia em retângulos desenhados na tela. Usei um loop FOR aninhado para criar o cronômetro e acionar o piezo após o final do loop. Decidi fazer a tela piscar enquanto a campainha estava tocando, que era uma animação básica tirada do demo do Adafruit. Eu fiz girar o cubo de volta para a posição do relógio a única maneira de desligar a campainha. Finalmente, eu queria uma maneira de desligar a tela, o que foi conseguido simplesmente limpando a tela. Agora, eu precisava que todas essas funções funcionassem com base nas saídas do acelerômetro. Usei o script Accel_Test para determinar as coordenadas do eixo de cada posição que queria que cada função executasse. Mudei manualmente o chip do acelerômetro e registrei as leituras no monitor serial. O diagrama acima fornece as coordenadas de saída de cada posição em CINZA. As coordenadas em RED são os limites entre cada posição e usei esses números para o meu programa. Nas 4 posições de exibição, apenas as coordenadas dos eixos X e Y são necessárias. A quinta posição para a luz noturna utiliza o eixo Z. Usei declarações IF simples para as posições do acelerômetro antes de cada bloco de funções. Se você usar um acelerômetro diferente, essas coordenadas podem variar e precisarão ser ajustadas no programa.

Etapa 3: impressão 3D do cubo

Impressão 3D do cubo
Impressão 3D do cubo
Impressão 3D do cubo
Impressão 3D do cubo
Impressão 3D do cubo
Impressão 3D do cubo

Achei que um cubo seria o melhor design para acomodar como eu queria que o relógio funcionasse. Usei o fusion360 para fazer o modelo. Eu precisava de um recorte para o OLED e o jack barril. Eu também queria um acesso fácil para substituir a bateria do RTC depois que tudo estivesse conectado. Eu precisava de um slot para manter o Arduino em uma orientação que fosse fácil de reprogramar, se necessário. Além disso, o gabinete precisava ser facilmente removível para que eu pudesse acessar o Arduino. Você pode ver o modelo CAD acima e os arquivos STL abaixo.

Imprimi o corpo em PLA preto com 20% de preenchimento e resolução de 0,2 mm.

O invólucro ou manga foi impresso em filamento flexível Solutech com 100% de preenchimento e resolução de 0,3 mm. Usei este material porque tem alguma flexibilidade que o torna fácil de esticar pelo corpo. Ele também tem uma sensação mais suave ao girar o relógio. Por último, escolhi um filamento transparente para que os LEDs das luzes noturnas brilhassem.

Etapa 4: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Eu conectei tudo usando o esquema da Etapa 1. Usei um pequeno pedaço de perfboard para conectar todos os fios comuns para que não precisasse soldar vários fios em um pino no Arduino. A cola quente foi usada para fixar tudo em seu respectivo lugar, exceto para o Arduino. Foi apenas empurrado para o slot designado. Certifiquei-me de que a placa do acelerômetro estava perpendicular e nivelada na parte inferior do corpo para que as coordenadas no código não precisassem ser alteradas.

Etapa 5: Faça o upload e pronto

Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!
Faça o upload e pronto!

Agora, o programa final pode ser carregado no relógio para definir a hora correta. A bateria celular deve manter a hora, mesmo quando a energia está desligada. Deslize a capa impressa em 3D sobre o corpo para ocultar todos os componentes e você terá um relógio de cubo completo!

Espero que você goste de fazer este projeto e o ache tão útil quanto eu. A parte boa desse projeto é que ele é muito personalizável. Sinta-se à vontade para adicionar suas próprias funções diferentes, como uma função de alarme, usar diferentes componentes como um OLED maior, receptor de rádio FM, etc.

Recomendado: