Sommario:

Vero orologio binario con sincronizzazione NTP: 4 passaggi
Vero orologio binario con sincronizzazione NTP: 4 passaggi

Video: Vero orologio binario con sincronizzazione NTP: 4 passaggi

Video: Vero orologio binario con sincronizzazione NTP: 4 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Luglio
Anonim
Vero orologio binario con sincronizzazione NTP
Vero orologio binario con sincronizzazione NTP
Vero orologio binario con sincronizzazione NTP
Vero orologio binario con sincronizzazione NTP

Un vero orologio binario visualizza l'ora del giorno come somma di frazioni binarie di un giorno intero, al contrario di un tradizionale "orologio binario" che visualizza l'ora come cifre decimali codificate in binario corrispondenti alle ore/minuti/secondi. I tradizionali "orologi binari" utilizzano in realtà la codifica binaria-decimale-codifica-ssagesimale. Che casino! I veri orologi binari semplificano immensamente le cose.

In un vero orologio binario, la prima cifra ti dice che è la mezza giornata, la seconda cifra è un quarto di giorno, la terza cifra è un ottavo di giorno, ecc. Può essere letto a qualsiasi risoluzione molto rapidamente (con la pratica ovviamente). La prima cifra codifica effettivamente AM rispetto a PM, la seconda cifra codifica se è la mattina presto/il pomeriggio o la tarda mattinata/pomeridiana e così via.

Nel progettare il mio vero orologio binario, ho usato dodici cifre di risoluzione, quindi il giorno è diviso in 2^12=4096 parti (ogni incremento è di circa 20 secondi). Invece di tenere tutte le cifre in una riga, le 12 cifre sono state separate in 3 righe di 4 cifre. Sebbene le cifre binarie effettive siano invariate, ciò consente di leggere l'orologio come 3 cifre esadecimali codificate in binario, la prima riga mostra i 16esimi di un giorno (1,5 ore), la seconda riga mostra i 256esimi del giorno (~5 minuti) e la terza riga mostra i 4096esimi di un giorno (~20 secondi).

L'orologio è sincronizzato con NTP (Network Time Protocol) utilizzando un ESP8266. L'ESP8266 è configurato in modo tale che, all'avvio, premendo un pulsante sull'orologio lo si mandi in modalità impostazioni. In modalità impostazioni, l'orologio creerà una rete Wi-Fi che serve una pagina Web che può essere utilizzata per inserire le proprie impostazioni Wi-Fi, server NTP e fuso orario. Queste informazioni sono memorizzate nella EEPROM dell'ESP8266 e vengono lette quando l'orologio si avvia in modalità orologio in modo che possa connettersi a Internet e recuperare l'ora.

Forniture:

  • NodoMCU ESP8266
  • Striscia LED WS2812B
  • Premi il bottone
  • Resistenza da 470 Ohm
  • Resistenza da 10K Ohm
  • Condensatore da 470 uF
  • bastoncino del ghiacciolo
  • Marmi
  • Legno (o altro foglio di materiale) per il caso

Passaggio 1: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Per avere un display, questo progetto utilizza una striscia led RGB disposta su 3 file. Ho tagliato 3 strisce di 8 led dalla striscia di led WS2812B e li ho saldati insieme. (Sono fragili e saldare i pad piccoli può essere difficile. Ho avvolto le estremità saldate con del nastro isolante in modo da isolarle da eventuali piegature.) Anche se mi servivano solo 4 led per fila, ho ritagliato delle strisce da 8 in modo da potrebbe avere una maggiore distanza tra le luci utilizzando solo ogni altro led. Queste strisce sono state poi attaccate a una base piatta fatta di bastoncini di ghiacciolo. Tra ogni fila, un doppio strato di bastoncini di ghiacciolo fornisce il profilo in modo che la faccia anteriore possa essere attaccata all'interno della cassa dell'orologio (vedi foto).

La striscia led è alimentata dalla VU e GND del NodeMCU. La VU proviene (quasi) direttamente dall'USB, quindi fornisce 5 V ai LED WS2812B anche se ESP8266 funziona a 3,3 V. Ho posizionato un condensatore da 470 uF sull'alimentazione della striscia WS2812B per proteggere i led. I dati per la striscia led sono collegati al pin D3 del NodeMCU tramite il resistore da 470 Ohm. Fare riferimento a questa istruzione per maggiori informazioni su come controllare i led WS2812B con ESP8266. Il circuito è stato saldato sulla scheda proto con alcune intestazioni maschio-femmina per il NodeMCU.

Un pulsante è stato collegato anche a D6 del NodeMCU. Questo pulsante può essere premuto durante l'avvio dell'orologio per inviarlo in modalità impostazioni (in cui è possibile modificare le impostazioni Wi-Fi, il server NTP e le preferenze del fuso orario). Da un lato il pulsante è collegato a D6 e anche a GND tramite una resistenza da 10K Ohm e dall'altro è collegato all'alimentazione. Quando il pulsante non è premuto, D6 legge basso; quando viene premuto, D6 legge alto.

Passaggio 2: software

Software
Software

Il software per ESP8266 è stato scritto utilizzando il codice Arduino. I LED vengono gestiti utilizzando la libreria FastLED e la sincronizzazione NTP viene eseguita dalla libreria NTPClient. L'ora viene sincronizzata da NTP ogni ora.

All'inizio della funzione di configurazione, il programma verifica se il pulsante collegato a D6 è premuto. Se lo è, ESP8266 crea una rete wifi (l'SSID e la password possono essere modificati nel codice, l'SSID predefinito è "TrueBinary" e la password è "thepoweroftwo"). Connettiti a questa rete da qualsiasi dispositivo e vai a 192.168.1.1. L'ESP8266 offrirà una pagina Web con moduli in cui è possibile inserire il SSID e la password Wi-Fi, il server NTP preferito e l'offset del fuso orario dall'UTC. Dopo che questi moduli sono stati inviati a ESP8266, salverà le informazioni nella sua memoria EEPROM interna.

Se il pulsante non viene premuto, l'orologio si avvia normalmente, legge le impostazioni da EEPROM, si connette al wifi per utilizzare NTP e inizia a visualizzare l'ora.

NOTA: la funzione setDisplay(int index) prende il numero della cifra da 0-11 dove 0 è la prima cifra (la mezza giornata) e 11 è l'ultima (1/4096 di un giorno) e accende il led corrispondente tramite il tasto " serie di led". Questa funzione deve essere compilata in base a come è stato configurato il display. Il mio esempio commentato corrisponde a come ho saldato le file a zig-zag piuttosto che end-to-end e ho saltato ogni altro LED.

Passaggio 3: alloggio

alloggiamento
alloggiamento
alloggiamento
alloggiamento
alloggiamento
alloggiamento

Per alloggiare l'orologio ho utilizzato un angolo di legno dipinto che avevo per caso. Su una faccia esterna, ho praticato 12 fori in una griglia corrispondente alle posizioni dei LED. Ho quindi incollato i LED all'interno dell'angolo incollando le facce rialzate dei bastoncini del ghiacciolo tra le file al legno (come mostrato). Per diffondere la luce dei LED, ho incollato delle biglie di vetro sopra i fori. Ho realizzato questo immergendo la metà inferiore di ogni marmo in resina epossidica e poi inserendoli nei fori. Il NodeMCU e la proto-scheda sono stati avvitati nell'altra faccia interna dell'angolo. I lati erano coperti con piccoli triangoli di legno, fissati con colla per legno. Uno dei lati ha un foro per la porta micro USB del NodeMCU e un taglio nell'angolo per il pulsante.

Passaggio 4: fatto

Fatto!
Fatto!
Fatto!
Fatto!

Il nostro vero orologio binario è finito! Per configurarlo, tieni premuto il pulsante mentre lo colleghi per metterlo in modalità impostazioni e quindi inserisci le credenziali WiFi sulla sua pagina web. Una volta impostato, l'orologio può essere collegato ovunque e si collegherà automaticamente a Internet e inizierà a visualizzare l'ora in formato binario.

Ci vuole un po' di pratica per leggere l'ora in un vero formato binario, ma è un esercizio divertente e dopo un po' diventa un modo rapido per prendere l'ora con un solo sguardo!

Consigliato: