Índice:

Despertador Binário DIY Arduino: 14 etapas (com imagens)
Despertador Binário DIY Arduino: 14 etapas (com imagens)
Anonim
Despertador Binário DIY Arduino
Despertador Binário DIY Arduino
Despertador Binário DIY Arduino
Despertador Binário DIY Arduino
Despertador Binário DIY Arduino
Despertador Binário DIY Arduino

É o relógio binário clássico de novo! Mas desta vez com ainda mais funções adicionais! Neste instrutível, mostrarei como construir um despertador binário com Arduino que pode mostrar não apenas a hora, mas a data, o mês, mesmo com funções de timer e alarme que também podem ser usados como abajur! Sem mais delongas, vamos começar!

Nota: Este projeto não utiliza um módulo RTC, então a precisão depende da placa que você usou. Eu incluí um mecanismo corretivo que corrigirá o desvio do tempo ao longo de um determinado período de tempo, mas você precisará experimentar para encontrar o valor correto para o período de tempo (mais sobre isso abaixo), e mesmo com o mecanismo corretivo ele ainda irá desviar ao longo do tempo (quando comparado a sem um). Se alguém estiver interessado, sinta-se à vontade para implementar o uso do módulo RTC neste projeto

Suprimentos

LED de 5 mm (de qualquer cor, usei 13 LEDs brancos com um LED RGB como indicador) --- 14 pcs

Arduino Nano (outros podem funcionar) --- 1 pc

Micro-switch --- 1 pc

Pequeno pedaço de folha de alumínio

Placa de montagem (para gabinete, mas sinta-se à vontade para projetar a sua própria)

Pedaço de papel branco (ou qualquer outra cor)

Algum filme plástico (aquele usado como capa do livro)

Monte de fios

Campainha --- 1 unidade

Transistor NPN --- 1pc

Resistores 6k8 --- 14 pcs, 500R --- 1 pc, 20R (10Rx2) --- 1 pc, 4k7 --- 1 pc

Fonte de alimentação para o projeto (usei bateria li-on)

Fita LED 5050 e interruptor deslizante (opcional)

Etapa 1: Conecte o circuito

Conecte o circuito!
Conecte o circuito!

Vou dividir esta etapa em:

1) A parte da campainha

2) O painel LED

3) O interruptor (botão de pressão)

4) faixa de LED

5) O sensor de capacitância

6) Fonte de alimentação

7) Conecte todos eles ao Arduino

Na maioria das vezes, essa é apenas uma etapa de "seguir o esquema". Portanto, verifique o esquema acima ou até mesmo baixe e imprima!

Etapa 2: Preparando a Parte da Campainha

Preparando a parte da campainha
Preparando a parte da campainha
Preparando a parte da campainha
Preparando a parte da campainha
Preparando a parte da campainha
Preparando a parte da campainha

Se você já usou a campainha com o Arduino antes, saberá que, se conectarmos diretamente ao Arduino, não será alto o suficiente. Portanto, precisamos de um amplificador. Para construir o amplificador, precisamos de um transistor NPN (basicamente qualquer NPN funcionará, usei o S9013 porque comprei em um projeto antigo) e algum resistor para limitar a corrente. Para começar, primeiro identifique o coletor, emissor e base do transistor. Um pouco de pesquisa no Google a folha de dados funcionará para isso. Em seguida, solde o coletor do transistor ao terminal negativo da campainha. No terminal positivo da campainha, apenas soldamos um pedaço de fio nele para que possamos soldá-lo em nosso Arduino mais tarde. Depois disso, solde o resistor 500R (ou qualquer valor semelhante de resistor) à base do transistor e, a partir do resistor, solde outro pedaço de fio para uso futuro. Finalmente, solde os dois resistores 10R em série ao emissor do transistor e conecte outro fio dos resistores.

Realmente, consulte o esquema.

p / s: Eu ainda não sei como escolher resistor para transistor no momento em que escrevo isto. O valor que usei é selecionado empiricamente.

Etapa 3: Preparando o Painel de LED

Preparando o Painel de LED
Preparando o Painel de LED
Preparando o Painel de LED
Preparando o Painel de LED
Preparando o Painel de LED
Preparando o Painel de LED

Conecte os LEDs e o resistor na placa de prototipagem em conformidade e solde. É isso. Siga o esquema. Caso esteja interessado no espaçamento que usei, 3 furos separados para cada coluna e dois furos separados para cada linha (consulte a figura). E o LED indicador? Liguei aleatoriamente.

Depois de soldar os LEDs e o resistor na placa, conecte todos os terminais positivos dos LEDs juntos. Em seguida, solde os fios um por um em cada um dos resistores nos terminais negativos dos LEDs para que possamos soldá-los ao Arduino mais tarde.

NOTA: Você pode ficar confuso nesta etapa. Lembre-se, em vez de conectar todos os aterramentos juntos, conectamos todos os terminais positivos juntos e o terminal negativo ao pino individual no Arduino. Portanto, estamos usando o pino GPIO do Arduino como aterramento, não o Vcc. No caso de você conectá-lo acidentalmente ao contrário, não se preocupe. Você pode modificar todos os HIGH para LOW e LOW para HIGH na função ledcontrol.

Etapa 4: Preparando o interruptor (botão na verdade)

Preparando o interruptor (botão na verdade)
Preparando o interruptor (botão na verdade)
Preparando o interruptor (botão na verdade)
Preparando o interruptor (botão na verdade)
Preparando o interruptor (botão na verdade)
Preparando o interruptor (botão na verdade)

Para o switch (vou chamá-lo de switch porque usei um micro-switch, mas você sabe que é um botão), precisamos de um resistor pull-down 4k7 e, claro, do próprio switch. Ah, não se esqueça de preparar alguns fios. Comece soldando o resistor e um pedaço de fio ao terra comum (COM) do microinterruptor. Em seguida, solde outro pedaço de fio ao normalmente aberto (NO) do microinterruptor. Finalmente, conecte outro fio ao resistor. Fixe com um pouco de cola quente.

Canto do conhecimento: Por que precisamos de um resistor pull-down?

"Se você desconectar o pino de E / S digital de tudo, o LED pode piscar erraticamente. Isso ocorre porque a entrada está" flutuando "- ou seja, ela retornará aleatoriamente ALTO ou BAIXO. É por isso que você precisa de um pull-up ou resistor pull-down no circuito. " - Fonte: Webisite do Arduino

Etapa 5: Preparando a Faixa de LED

Preparando Faixa de LED
Preparando Faixa de LED
Preparando Faixa de LED
Preparando Faixa de LED

A faixa LED é para a lâmpada do lado da cama, que é opcional. Basta conectar a faixa de LED e o interruptor deslizante em série, nada de especial.

Etapa 6: Preparando o sensor de capacitância

Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância
Preparando o sensor de capacitância

Ok, consulte a foto. Basicamente, vamos apenas prender o fio a um pequeno pedaço de folha de alumínio (porque a folha de alumínio não pode ser soldada) e depois colá-lo em um pequeno pedaço de placa de montagem. Lembrete, certifique-se de não colar completamente a folha de alumínio. Deixe um pouco exposto para contato direto.

Etapa 7: Preparando a Fonte de Alimentação

Preparando a fonte de alimentação
Preparando a fonte de alimentação
Preparando a fonte de alimentação
Preparando a fonte de alimentação
Preparando a fonte de alimentação
Preparando a fonte de alimentação

Como usei bateria li-on como fonte de alimentação, preciso de um módulo TP4056 para carregamento e proteção, e um conversor boost para converter a tensão para 9v. Se você decidiu usar um adaptador de parede de 9 V, talvez precise de um conector DC ou apenas conecte-o diretamente. Observe que o valor do resistor para o amplificador é projetado para 9 V e se você quiser usar outra tensão, pode ser necessário alterar o resistor.

Etapa 8: conectando-os ao Arduino

Conectando-os ao Arduino
Conectando-os ao Arduino
Conectando-os ao Arduino
Conectando-os ao Arduino
Conectando-os ao Arduino
Conectando-os ao Arduino

Siga o esquema! Siga o esquema! Siga o esquema!

Não conecte o pino errado ou as coisas ficarão estranhas.

Etapa 9: Gabinete

Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete

A dimensão do meu desenho é 6,5 cm * 6,5 cm * 8 cm, por isso é um pouco volumoso. Consiste em uma janela frontal para tela de LED e janela superior para a lâmpada de cabeceira. Para o meu design, consulte as fotos.

Etapa 10: Tempo de programação

Image
Image
Tempo de programação!
Tempo de programação!

Baixe meu esboço abaixo e carregue-o em seu Arduino. Se você não sabe como fazer isso, não se preocupe em fazer este projeto! Nah, estou brincando, aqui está um bom tutorial sobre isso: Upload sketch to arduino

Em seguida, abra o monitor serial e você verá a saída da hora atual. Para definir a hora, veja como fazer isso.

Para definir a hora: h, XX - onde xx é a hora atual

Para definir os minutos: min, XX - xx é o minuto atual

Para definir o segundo: s, XX

Para definir a data: d, XX

Para definir o mês: seg, XX

Quando o comentário acima é executado, ele deve retornar o valor que você acabou de definir. (Por exemplo, quando você define a hora com h, 15, ele deve retornar Hora: 15 no monitor serial.

Para o sensor de capacitância, pode ser necessário calibrá-lo antes de funcionar. Para fazer isso, pressione o microinterruptor duas vezes e olhe para o monitor serial. Deve produzir um monte de números. Agora coloque o dedo no sensor de capacitância e veja anote a faixa do número. A seguir, modifique a variável "captrigger". Digamos que você obtenha 20-30 quando pressionado e, em seguida, defina o captrigger para 20.

O esboço usa a biblioteca ADCTouch, certifique-se de instalá-lo.

Etapa 11: Mecanismo Corretivo

O período de tempo para o mecanismo corretivo em meu código é definido como aquele que é preciso para mim. Se a hora ainda não for precisa, você precisa alterar o valor da variável "corrdur"

O corrdur agora padrão para 0 na atualização mais recente.

O valor de corrdur significa quantos milissegundos são necessários para desacelerar um segundo

Para descobrir o valor de corrdur, use a fórmula:

2000 / (y-x) / x)

onde x = duração real do tempo decorrido ey = duração do tempo decorrido do relógio, ambos em segundos

Para encontrar o valor de xey, você precisa fazer uma pequena experiência.

Ajuste a hora do relógio para a hora real e registre a hora inicial (a hora inicial real e a hora inicial do relógio devem ser iguais). Depois de um tempo (algumas horas), registre a hora real final e a hora final do relógio.

x = hora final real - hora inicial ey = hora final do relógio - hora inicial

Em seguida, altere o valor de corrdur no código e recarregue para o Arduino.

Em seguida, repita o teste e, desta vez, a fórmula mudou para:

2000 / ((2 / z) + (y-x / x))

Onde x e y são iguais a antes, enquanto z é o valor de corrdur atual.

Faça upload novamente e faça o teste repetidamente até que seja preciso o suficiente para você.

Caso seu relógio ainda esteja acelerando, mesmo corrdur esteja definido como 0 (significa nenhum mecanismo corretivo), você precisa alterar o segundo ++ para o segundo - na parte do mecanismo corretivo do código (eu comentei), defina corrdur como 0, em seguida, encontre o não. de milissegundos para acelerar um segundo.

Etapa 12: como usar todas as funções

Image
Image

Você pode alterar o modo pressionando o microinterruptor.

No primeiro modo, ele simplesmente exibe o tempo. Se a luz indicadora piscar 1 vez por segundo, o alarme está desligado. Se 2 vezes por segundo, o alarme está ativado. Você pode adiar o alarme por 10 minutos no primeiro modo pressionando o sensor de capacitância.

No segundo modo, exibe a data. Pressionar o sensor de capacitância não faz nada.

No terceiro modo, você pode definir o temporizador. Pressionar o sensor de capacitância ligará o cronômetro e você deverá ver a luz indicadora começar a piscar. O sensor de capacitância também é usado para definir o tempo do temporizador. O intervalo do temporizador é de 1 a 59 minutos.

No quarto modo, você pode definir a hora do alarme usando o sensor de capacitância

No quinto modo, você pode definir os minutos do alarme usando o sensor de capacitância.

No sexto modo, pressionar o sensor de capacitância redefinirá os minutos para 30 e os segundos para 0 sem alterar a hora. Isso significa que, desde que seu relógio não ultrapasse 30 minutos, você pode recalibrá-lo usando este modo.

O sétimo modo é o modo não fazer nada no caso de o sensor de capacitância falhar durante o carregamento.

Oh, para ignorar o alarme, basta pressionar o microinterruptor. (ÚLTIMA ATUALIZAÇÃO PARA INCLUIR ALARME SNOOZE)

Bem, que tal ler o relógio? É fácil! Reading Binary Clock - Wikihow Você pode se sentir estranho no começo, mas vai se acostumar!

Etapa 13: Conclusão

Conclusão
Conclusão
Conclusão
Conclusão

Por que comecei este projeto. Inicialmente é porque tenho um relógio digital antigo que está por aí e quero transformá-lo em um despertador. Infelizmente, o relógio antigo está quebrado. Então eu pensei: por que não construir um usando o Arduino? Com um pouco de pesquisa no google, encontrei este projeto de relógio binário sem RTC no instrutível por Cello62. No entanto, ele não tem o recurso de despertador que desejo, então pego o código e o modifico sozinho. E o projeto nasce. Além disso, vi o concurso do relógio rodando no instructable recentemente, o que me deu ainda mais motivação para fazer isso. De qualquer forma, este ainda é meu primeiro projeto usando Arduino, então um monte de melhorias possíveis.

Melhoria futura:

1) Use RTC

2) Defina o alarme ou a hora ou o cronômetro sem fio!

3) Qualquer recurso que eu pensar

Etapa 14: atualização: após uma semana de uso

Atualização: após uma semana de uso
Atualização: após uma semana de uso
Atualização: após uma semana de uso
Atualização: após uma semana de uso
Atualização: após uma semana de uso
Atualização: após uma semana de uso

Além do problema óbvio - o desvio do tempo, o próximo que eu diria é o consumo de energia. Em primeiro lugar, aumentei a tensão para 9 V, que então será reduzida pelo regulador linear no Arduino. O regulador linear é muito ineficiente. O relógio dura apenas UM DIA. Isso significa que tenho que recarregá-lo todos os dias. Isso não é o maior problema até que você perceba que todo o sistema é apenas cerca de 50% eficiente. Visto que minha bateria é de 2.000 mAh, eu seria capaz de calcular a energia desperdiçada todos os dias.

Energia desperdiçada = (7,4Wh * 10%) + (7,4Wh * 90% * 50%) = 4,07Wh por dia

Isso é 1,486 kWh por ano! Isso pode ser usado para ferver, uh, 283g de água (de 25 C até 100 C)? De qualquer forma, vou melhorar a eficiência do relógio. A maneira de fazer isso é não usar o regulador linear. Isso significa que temos que ajustar o conversor de reforço para a saída de 5 V diretamente no pino de 5 V do Arduino. A seguir, para minimizar ainda mais o desperdício de energia, tenho que remover os dois LEDs da placa (pino 13 e alimentação), pois vão desperdiçar 0,95Wh por dia. Infelizmente, sou totalmente novato em solda SMD, então a única maneira de fazer isso é cortando o trilho da placa. Depois disso, tenho que remover o resistor do emissor da campainha e a lâmpada de cabeceira (a faixa de LED não funciona em 5V). Mas isso significa que você tem que desistir desse recurso incrível? Não! Você tem duas opções aqui: Use o diodo normal de LED de 5 mm ou use a faixa de LED de 5V. Mas para mim, já me sentia cansado de fazer esse projeto por toda a semana passada, então resolvi desistir desse recurso. No entanto, usei o interruptor originalmente para o recurso de luz para ligar ou desligar o painel do relógio para economizar ainda mais energia, mas acabei fazendo o LED piscar quando eu o desliguei. Bug tornou-se recurso? Não sei (Alguém sabe me diga abaixo).

Ao final da modificação, o relógio agora dura mais de 2 dias!

Em seguida, tenho um problema menos sério com o relógio. Durante o carregamento, o sensor de capacitância ficaria louco, então adiciono outro modo que não faz nada.

Quanto à variação do tempo, uma vez que é muito inconveniente conectar-se ao computador todos os dias para redefini-lo, adicionei outro modo que definirá o minuto como 30 e o segundo como 0. Isso significa que você pode redefini-lo a qualquer hora e meia!

Recomendado: