Innehållsförteckning:

Äkta binär klocka med NTP -synkronisering: 4 steg
Äkta binär klocka med NTP -synkronisering: 4 steg

Video: Äkta binär klocka med NTP -synkronisering: 4 steg

Video: Äkta binär klocka med NTP -synkronisering: 4 steg
Video: Binär klocka/Binary clock 2024, November
Anonim
Äkta binär klocka med NTP -synkronisering
Äkta binär klocka med NTP -synkronisering
Äkta binär klocka med NTP -synkronisering
Äkta binär klocka med NTP -synkronisering

En sann binär klocka visar tiden på dagen som en summa av binära fraktioner av en hel dag, i motsats till en traditionell "binär klocka" som visar tiden som binärkodade decimaler som motsvarar timmar/minuter/sekunder. Traditionella "binära klockor" använder verkligen binärt-kodade-decimal-kodade-sexagesimala. Vilken röra! Sanna binära klockor förenklar saker oerhört.

I en sann binär klocka säger den första siffran att halva dagen, den andra siffran är en fjärdedag, den tredje siffran är en åttondel, etc. Den kan läsas till valfri upplösning mycket snabbt (med övning förstås). Den första siffran kodar effektivt AM kontra PM, den andra siffran kodar om det är tidigt AM/PM eller sent AM/PM, och så vidare.

Vid utformningen av min sanna binära klocka använde jag tolv siffror i upplösning, så dagen är uppdelad i 2^12 = 4096 delar (varje steg är cirka 20 sekunder). Istället för att hålla alla siffror på en rad, separerades de 12 siffrorna i 3 rader med 4 siffror. Även om de faktiska binära siffrorna är oförändrade, så kan klockan läsas som 3 binärkodade sexsiffror, den första raden visar 16: e om dagen (1,5 timmar), den andra raden visar 256: e dagen (~ 5 minuter), och den tredje raden visar 4096: e av dagen (~ 20 sekunder).

Klockan synkroniseras med NTP (Network Time Protocol) med hjälp av en ESP8266. ESP8266 är konfigurerad så att vid start genom att trycka på en knapp på klockan skickas den till inställningsläge. I inställningsläge skapar klockan ett WiFi -nätverk som serverar en webbsida som kan användas för att ange dina egna wifi -inställningar, NTP -server och tidszon. Denna information lagras i EEPROM i ESP8266 och läses när klockan startar i klockläge så att den kan ansluta till internet och hämta tiden.

Tillbehör:

  • NodeMCU ESP8266
  • WS2812B LED -remsa
  • Tryckknapp
  • 470 Ohm motstånd
  • 10K Ohm motstånd
  • 470 uF kondensator
  • isglasspinnar
  • Marmor
  • Trä (eller annat materialark) för fodralet

Steg 1: Krets

Krets
Krets
Krets
Krets
Krets
Krets
Krets
Krets

För att få en bildskärm använder detta projekt en RGB -ledremsa i tre rader. Jag klippte 3 remsor med 8 lysdioder från remsan av WS2812B -lysdioder och lödde ihop dem. (De är ömtåliga och lödning av de små dynorna kan vara svårt. Jag lindade in de lödade ändarna i eltejp för att isolera dem från eventuella böjningar.) Även om jag bara behövde 4 lysdioder per rad, skar jag ut remsor med 8 så att jag kunde ha större avstånd mellan lamporna genom att bara använda varannan lysdiod. Dessa remsor sattes sedan fast på en platt bas gjord av popsicle -pinnar. Mellan varje rad ger ett dubbelt lager av popsicle -pinnar profilen så att framsidan kan fastna mot insidan av klockfodralet (se foto).

LED -remsan drivs från VU och GND för NodeMCU. VU kommer ström (nästan) direkt från USB, så den ger 5V till WS2812B -lysdioderna trots att ESP8266 fungerar med 3,3V. Jag placerade en 470 uF kondensator över strömmen för WS2812B -remsan för att skydda lysdioderna. Data för ledremsan är ansluten till D3 -stiftet på NodeMCU via motståndet 470 Ohm. Se denna instruktionsbok för mer information om hur du styr WS2812B -lysdioder med ESP8266. Kretsen löddes på proto-board med några man-till-kvinnliga rubriker för NodeMCU.

En tryckknapp var också ansluten till D6 i NodeMCU. Du kan trycka på denna knapp medan klockan startar för att skicka den till inställningsläge (där wifi -inställningar, NTP -server och tidszonsinställningar kan ändras). I ena änden är tryckknappen ansluten till D6 och även till GND via ett 10K Ohm -motstånd och i den andra änden är den ansluten till ström. När knappen inte trycks in läser D6 lågt; när den trycks läser D6 högt.

Steg 2: Programvara

programvara
programvara

Programvaran för ESP8266 skrevs med Arduino -kod. Lysdioderna hanteras med hjälp av FastLED -biblioteket och NTP -synkronisering utförs av NTPClient -biblioteket. Tiden synkroniseras med NTP varje timme.

I början av installationsfunktionen kontrollerar programmet om knappen som är ansluten till D6 trycks in. Om det är det skapar ESP8266 ett wifi -nätverk (SSID och lösenord kan ändras i koden, standard SSID är "TrueBinary" och lösenord är "thepoweroftwo"). Anslut till detta nätverk från vilken enhet som helst och navigera till 192.168.1.1. ESP8266 kommer att tillhandahålla en webbsida med formulär där du kan ange ditt wifi -SSID och lösenord, föredragen NTP -server och tidszonförskjutning från UTC. Efter att dessa formulär har skickats till ESP8266 kommer informationen att sparas i dess interna EEPROM -lagring.

Om knappen inte trycks in startar klockan normalt, läser inställningarna från EEPROM, ansluter till wifi för att använda NTP och börjar visa tiden.

OBS: funktionen setDisplay (int index) tar siffran från 0-11 där 0 är den första siffran (den halva dagen) och 11 är den sista (1/4096 av en dag) och tänder motsvarande lysdiod med " leds "array. Denna funktion måste fyllas i enligt hur du konfigurerade displayen. Mitt kommenterade exempel motsvarar hur jag lödde raderna i sicksack snarare än från ände till ände och hoppade över varannan lysdiod.

Steg 3: Bostäder

Hus
Hus
Hus
Hus
Hus
Hus

För att hysa klockan använde jag en vinkel av målat trä som jag råkade ha. På ena ytterytan borrade jag 12 hål i ett rutnät som motsvarar lysdiodernas positioner. Jag fastnade sedan lysdioderna på insidan av vinkeln genom att limma de upphöjda ytorna på popsicle sticks mellan raderna på träet (som visas). För att sprida ljuset från lysdioderna satte jag glasmarmor ovanpå hålen. Jag uppnådde detta genom att doppa nedre halvan av varje marmor i epoxiharts och sedan placera dem i hålen. NodeMCU och proto-board skruvades fast i den andra insidan av vinkeln. Sidorna täcktes med små trianglar av trä, fästa med trälim. En av sidorna har ett hål för mikro -USB -porten på NodeMCU och ett snitt i hörnet för tryckknappen.

Steg 4: Klar

Gjort!
Gjort!
Gjort!
Gjort!

Vår sanna binära klocka är klar! För att ställa in den, håll knappen intryckt medan du ansluter den för att sätta den i inställningsläge och ange sedan WiFi -uppgifterna på webbsidan. När klockan är inställd kan den anslutas var som helst och kommer automatiskt att ansluta till internet och börja visa tiden i binär.

Det tar lite övning att läsa tid i riktigt binärt format, men det är en rolig övning och efter ett tag blir det ett snabbt sätt att få tiden med bara en blick!

Rekommenderad: