Innholdsfortegnelse:

Ekte binær klokke med NTP -synkronisering: 4 trinn
Ekte binær klokke med NTP -synkronisering: 4 trinn

Video: Ekte binær klokke med NTP -synkronisering: 4 trinn

Video: Ekte binær klokke med NTP -synkronisering: 4 trinn
Video: He Was A Dark Man! ~ Untouched Abandoned Mansion of Mr. Jean-Louis 2024, Juli
Anonim
Ekte binær klokke med NTP -synkronisering
Ekte binær klokke med NTP -synkronisering
Ekte binær klokke med NTP -synkronisering
Ekte binær klokke med NTP -synkronisering

En ekte binær klokke viser tiden på dagen som en sum av binære brøkdeler av en hel dag, i motsetning til en tradisjonell "binær klokke" som viser tiden som binærkodede desimaler som tilsvarer timer/minutter/sekunder. Tradisjonelle "binære klokker" bruker virkelig binær-kodet-desimal-kodet-sexagesimal. For et rot! Ekte binære klokker forenkler ting enormt.

I en ekte binær klokke forteller det første sifferet deg at den halve dagen er, det andre sifferet er en fjerdedag, det tredje sifferet er en åttende om dagen, etc. Det kan leses til hvilken som helst oppløsning veldig raskt (med øvelse selvfølgelig). Det første sifferet koder effektivt AM mot PM, det andre sifferet koder om det er tidlig AM/PM eller sent AM/PM, og så videre.

Ved utformingen av min sanne binære klokke brukte jeg tolv siffer med oppløsning, så dagen er delt inn i 2^12 = 4096 deler (hvert trinn er omtrent 20 sekunder). I stedet for å holde alle sifrene på en linje, ble de 12 sifrene delt inn i 3 rader med 4 sifre. Selv om de faktiske binære sifrene er uendret, tillater dette at klokken kan leses som 3 binærkodede sekssifre, den første linjen viser 16. av en dag (1,5 timer), den andre linjen viser 256. dag (~ 5 minutter), og den tredje linjen som viser 4096ths av dagen (~ 20seconds).

Klokken er synkronisert med NTP (Network Time Protocol) ved hjelp av en ESP8266. ESP8266 er konfigurert slik at ved oppstart ved å trykke på en knapp på klokken, sendes den til innstillingsmodus. I innstillingsmodus vil klokken opprette et WiFi -nettverk som serverer en webside som kan brukes til å angi dine egne wifi -innstillinger, NTP -server og tidssone. Denne informasjonen lagres i EEPROM på ESP8266 og leses når klokken starter i klokkemodus, slik at den kan koble seg til internett og hente tiden.

Rekvisita:

  • NodeMCU ESP8266
  • WS2812B LED -stripe
  • Trykknapp
  • 470 Ohm motstand
  • 10K Ohm motstand
  • 470 uF kondensator
  • ispinner
  • Marmor
  • Tre (eller annet ark) for saken

Trinn 1: Krets

Krets
Krets
Krets
Krets
Krets
Krets
Krets
Krets

For å få en skjerm bruker dette prosjektet en RGB -ledestripe lagt i 3 rader. Jeg kuttet 3 strimler med 8 lysdioder fra stripen med WS2812B lysdioder og loddet dem sammen. (De er skjøre og lodding av de små putene kan være vanskelig. Jeg pakket de loddede endene inn i elektrisk tape for å isolere dem fra enhver bøyning.) Selv om jeg bare trengte 4 lysdioder per rad, skar jeg ut strimler med 8 slik at jeg kunne ha større avstand mellom lysene ved bare å bruke annenhver LED. Disse stripene ble deretter festet til en flat base laget av popsicle -pinner. Mellom hver rad gir et dobbelt lag med popsicle -pinner profilen slik at forsiden kan sitte fast mot innsiden av uret på klokken (se bildet).

LED -stripen drives av VU og GND for NodeMCU. VU kommer strøm (nesten) direkte fra USB, så den gir 5V til WS2812B -lysdiodene, selv om ESP8266 fungerer på 3,3V. Jeg plasserte en 470 uF kondensator på tvers av strømmen for WS2812B -stripen for å beskytte lysdiodene. Data for led -stripen er koblet til D3 -pinnen på NodeMCU via 470 Ohm -motstanden. Se denne instruksjonsboken for mer informasjon om hvordan du kontrollerer WS2812B -lysdioder med ESP8266. Kretsen ble loddet på proto-board med noen mann-til-kvinnelige overskrifter for NodeMCU.

En trykknapp var også festet til D6 på NodeMCU. Denne trykknappen kan trykkes mens klokken starter for å sende den til innstillingsmodus (der wifi -innstillinger, NTP -server og tidssone -preferanser kan endres). I den ene enden er trykknappen koblet til D6 og også til GND via en 10K Ohm motstand, og i den andre enden er den koblet til strøm. Når knappen ikke trykkes, leser D6 lavt; når den trykkes, leser D6 høyt.

Trinn 2: Programvare

Programvare
Programvare

Programvaren for ESP8266 ble skrevet med Arduino -kode. Lysdiodene håndteres ved hjelp av FastLED -biblioteket, og NTP -synkronisering utføres av NTPClient -biblioteket. Tid synkroniseres med NTP hver time.

Ved starten av oppsettfunksjonen, sjekker programmet om det er trykket på knappen som er koblet til D6. Hvis det er det, oppretter ESP8266 et wifi -nettverk (SSID og passord kan endres i koden, standard SSID er "TrueBinary" og passord er "thepoweroftwo"). Koble til dette nettverket fra hvilken som helst enhet og naviger til 192.168.1.1. ESP8266 vil vise en webside med skjemaer der du kan legge inn wifi -SSID og passord, foretrukket NTP -server og tidssone -offset fra UTC. Etter at disse skjemaene er sendt til ESP8266, lagrer den informasjonen i den interne EEPROM -lagringen.

Hvis du ikke trykker på knappen, starter klokken normalt, leser innstillingene fra EEPROM, kobler til wifi for å bruke NTP, og begynner å vise tiden.

MERK: funksjonssettet Display (int-indeks) tar siffernummeret fra 0-11 hvor 0 er det første sifferet (den halve dagen) og 11 er det siste (1/4096 av en dag) og slår på den tilhørende lysdioden ved å bruke " leds "matrise. Denne funksjonen må fylles ut i henhold til hvordan du konfigurerte skjermen. Mitt kommenterte eksempel tilsvarer hvordan jeg loddet radene på en sikksakk-måte i stedet for ende-til-ende og hoppet over annenhver LED.

Trinn 3: Boliger

Boliger
Boliger
Boliger
Boliger
Boliger
Boliger

For å huse klokken brukte jeg en vinkel av malt tre som jeg tilfeldigvis hadde. På det ene utsiden boret jeg 12 hull i et rutenett som tilsvarer posisjonene til lysdiodene. Jeg satte deretter lysdiodene på innsiden av vinkelen ved å lime de hevede ansiktene på ispinnene mellom radene på treet (som vist). For å spre lyset fra lysdiodene, satte jeg glassmarmor på toppen av hullene. Jeg oppnådde dette ved å dyppe den nedre halvdelen av hver marmor i epoksyharpiks og deretter plassere dem i hullene. NodeMCU og proto-board ble skrudd inn i den andre innsiden av vinkelen. Sidene ble dekket med små trekanter av tre, festet med trelim. Den ene siden har et hull for mikro -USB -porten på NodeMCU og et snitt i hjørnet for trykknappen.

Trinn 4: Ferdig

Ferdig!
Ferdig!
Ferdig!
Ferdig!

Vår sanne binære klokke er ferdig! For å sette den opp, hold knappen inne mens du kobler den til for å sette den i innstillingsmodus og skriv deretter inn WiFi -legitimasjonen på nettsiden. Når den er satt opp, kan klokken kobles til hvor som helst og vil automatisk koble til internett og begynne å vise tiden i binær.

Det krever litt øvelse å lese tid i ekte binært format, men det er en morsom øvelse, og etter en stund blir det en rask måte å få tiden med bare et blikk!

Anbefalt: