Índice:

Relógio binário verdadeiro com sincronização NTP: 4 etapas
Relógio binário verdadeiro com sincronização NTP: 4 etapas

Vídeo: Relógio binário verdadeiro com sincronização NTP: 4 etapas

Vídeo: Relógio binário verdadeiro com sincronização NTP: 4 etapas
Vídeo: O Relógio Atômico 2024, Novembro
Anonim
Relógio binário verdadeiro com sincronização NTP
Relógio binário verdadeiro com sincronização NTP
Relógio binário verdadeiro com sincronização NTP
Relógio binário verdadeiro com sincronização NTP

Um verdadeiro relógio binário exibe a hora do dia como uma soma das frações binárias de um dia inteiro, ao contrário de um "relógio binário" tradicional que exibe a hora como dígitos decimais codificados em binário correspondentes às horas / minutos / segundos. Os "relógios binários" tradicionais realmente usam sexagesimal codificado-decimais codificado binário. Que bagunça! Os verdadeiros relógios binários simplificam as coisas imensamente.

Em um relógio binário verdadeiro, o primeiro dígito diz que é meio dia, o segundo dígito é um quarto de dia, o terceiro dígito é um oitavo de um dia, etc. Ele pode ser lido em qualquer resolução muito rapidamente (com a prática, é claro) O primeiro dígito codifica efetivamente AM versus PM, o segundo dígito codifica se é cedo AM / PM ou tarde AM / PM e assim por diante.

Ao projetar meu verdadeiro relógio binário, usei doze dígitos de resolução, então o dia é dividido em 2 ^ 12 = 4096 partes (cada incremento é de aproximadamente 20 segundos). Em vez de manter todos os dígitos em uma linha, os 12 dígitos foram separados em 3 linhas de 4 dígitos. Embora os dígitos binários reais permaneçam inalterados, isso permite que o relógio seja lido como 3 dígitos hexadecimais codificados por binários, a primeira linha mostrando 16 dias (1,5 horas), a segunda linha mostrando 256 dias (~ 5 minutos) e a terceira linha mostrando 4096 dias de um dia (~ 20 segundos).

O relógio é sincronizado com o NTP (Network Time Protocol) usando um ESP8266. O ESP8266 está configurado para que, na inicialização, pressione um botão no relógio para colocá-lo no modo de configurações. No modo de configurações, o relógio criará uma rede WiFi que fornece uma página da web que pode ser usada para inserir suas próprias configurações de wifi, servidor NTP e fuso horário. Essas informações são armazenadas na EEPROM do ESP8266 e são lidas quando o relógio é inicializado no modo relógio para que ele possa se conectar à internet e obter a hora.

Suprimentos:

  • NodeMCU ESP8266
  • WS2812B tira LED
  • Botão de apertar
  • Resistor de 470 ohms
  • Resistor de 10K Ohm
  • Capacitor 470 uF
  • picolés
  • Mármores
  • Madeira (ou outra folha de material) para a caixa

Etapa 1: circuito

O circuito
O circuito
O circuito
O circuito
O circuito
O circuito
O circuito
O circuito

Para ter um display, este projeto usa uma faixa de led RGB disposta em 3 filas. Cortei 3 tiras de 8 leds da tira de leds WS2812B e os soldei. (Eles são frágeis e soldar as pastilhas pequenas pode ser difícil. Enrolei as pontas soldadas em fita isolante para isolá-las de qualquer dobra.) Embora eu só precisasse de 4 leds por linha, cortei tiras de 8 para que eu poderia ter um espaçamento maior entre as luzes usando apenas todos os outros leds. Essas tiras foram então coladas a uma base plana feita de palitos de picolé. Entre cada linha, uma dupla camada de palitos de picolé fornece o perfil para que a face frontal possa ser colada no interior da caixa do relógio (ver foto).

A faixa de led é alimentada pelo VU e GND do NodeMCU. VU é a energia que vem (quase) diretamente do USB, portanto, fornece 5 V aos LEDs WS2812B, embora o ESP8266 funcione a 3,3 V. Coloquei um capacitor 470 uF na alimentação da tira WS2812B para proteger os leds. Os dados da faixa de led são conectados ao pino D3 do NodeMCU por meio do resistor de 470 Ohm. Consulte este manual para obter mais informações sobre como controlar os leds WS2812B com o ESP8266. O circuito foi soldado em uma protoplaca com alguns conectores macho-fêmea para o NodeMCU.

Um botão de pressão também foi anexado ao D6 do NodeMCU. Este botão pode ser pressionado enquanto o relógio está inicializando para enviá-lo para o modo de configurações (no qual as configurações de wi-fi, servidor NTP e preferências de fuso horário podem ser modificadas). Em uma extremidade, o botão de pressão é conectado ao D6 e também ao GND por meio de um resistor de 10K Ohm e na outra extremidade é conectado à alimentação. Quando o botão não está pressionado, D6 tem uma leitura baixa; quando é pressionado, D6 lê alto.

Etapa 2: Software

Programas
Programas

O software para o ESP8266 foi escrito usando o código Arduino. Os LEDs são manipulados usando a biblioteca FastLED e a sincronização NTP é feita pela biblioteca NTPClient. A hora é sincronizada por NTP a cada hora.

No início da função de configuração, o programa verifica se o botão conectado ao D6 está pressionado. Se for, o ESP8266 cria uma rede wi-fi (o SSID e a senha podem ser alterados no código, o SSID padrão é "TrueBinary" e a senha é "thepoweroftwo"). Conecte-se a esta rede a partir de qualquer dispositivo e navegue até 192.168.1.1. O ESP8266 servirá uma página da Web com formulários onde você pode inserir seu SSID e senha de wi-fi, servidor NTP preferido e deslocamento de fuso horário do UTC. Depois que esses formulários forem enviados ao ESP8266, ele salvará as informações em seu armazenamento EEPROM interno.

Se o botão não for pressionado, o relógio inicia normalmente, lê as configurações da EEPROM, conecta-se ao wi-fi para usar NTP e começa a exibir a hora.

NOTA: a função setDisplay (int index) leva o número do dígito de 0-11 onde 0 é o primeiro dígito (meio dia) e 11 é o último (1/4096 de um dia) e liga o LED correspondente usando o " matriz de leds ". Esta função deve ser preenchida de acordo com a configuração do display. Meu exemplo comentado corresponde a como eu soldava as linhas em zigue-zague em vez de ponta a ponta e pulei todos os outros LEDs.

Etapa 3: Alojamento

Habitação
Habitação
Habitação
Habitação
Habitação
Habitação

Para abrigar o relógio, usei um ângulo de madeira pintada que por acaso tinha. Em uma face externa, fiz 12 furos em uma grade correspondente às posições dos LEDs. Em seguida, colei os LEDs no interior do ângulo, colando as faces elevadas dos palitos de picolé entre as fileiras na madeira (como mostrado). Para difundir a luz dos LEDs, coloquei bolinhas de vidro no topo dos orifícios. Consegui isso mergulhando a metade inferior de cada mármore em resina epóxi e, em seguida, colocando-os nos orifícios. O NodeMCU e a protoplaca foram aparafusados na outra face interna do ângulo. As laterais foram cobertas com pequenos triângulos de madeira, fixados com cola de madeira. Um dos lados tem um orifício para a porta micro USB do NodeMCU e um corte no canto para o botão.

Etapa 4: Pronto

Feito!
Feito!
Feito!
Feito!

Nosso verdadeiro relógio binário terminou! Para configurá-lo, mantenha o botão pressionado enquanto o conecta para colocá-lo no modo de configurações e, em seguida, insira as credenciais de WiFi em sua página da web. Depois de configurado, o relógio pode ser conectado em qualquer lugar e se conectará automaticamente à Internet e começará a exibir a hora em binário.

É necessário um pouco de prática para ler as horas no verdadeiro formato binário, mas é um exercício divertido e depois de um tempo torna-se uma maneira rápida de obter as horas com apenas um relance!

Recomendado: