Indholdsfortegnelse:

Ægte binært ur med NTP -synkronisering: 4 trin
Ægte binært ur med NTP -synkronisering: 4 trin

Video: Ægte binært ur med NTP -synkronisering: 4 trin

Video: Ægte binært ur med NTP -synkronisering: 4 trin
Video: Har kræft i hjernen: Robot går i skole for Magnus | Ultra Ægte 2024, Juli
Anonim
Ægte binært ur med NTP -synkronisering
Ægte binært ur med NTP -synkronisering
Ægte binært ur med NTP -synkronisering
Ægte binært ur med NTP -synkronisering

Et sandt binært ur viser tidspunktet på dagen som en sum af binære brøker på en hel dag, i modsætning til et traditionelt "binært ur", der viser tiden som binært kodede decimalcifre svarende til timer/minutter/sekunder. Traditionelle "binære ure" bruger virkelig binært-kodet-decimal-kodet-sexagesimal. Sikke et rod! Ægte binære ure forenkler tingene enormt.

I et sandt binært ur fortæller det første ciffer dig, at det er den halve dag, det andet ciffer er en kvart dag, det tredje ciffer er en ottendedel af dagen osv. Det kan læses til enhver opløsning meget hurtigt (med øvelse selvfølgelig). Det første ciffer koder effektivt AM versus PM, det andet ciffer koder om det er tidlig AM/PM eller sent AM/PM osv.

Ved udformningen af mit sande binære ur brugte jeg tolv cifre med opløsning, så dagen er opdelt i 2^12 = 4096 dele (hvert trin er cirka 20 sekunder). I stedet for at holde alle cifrene på en linje, blev de 12 cifre adskilt i 3 rækker med 4 cifre. Selvom de faktiske binære cifre er uændrede, tillader dette uret at blive læst som 3 binært kodede hex-cifre, den første linje viser 16. af en dag (1,5 timer), den anden linje viser 256. dag (~ 5 minutter), og den tredje linje, der viser 4096ths af en dag (~ 20sekunder).

Uret synkroniseres til NTP (Network Time Protocol) ved hjælp af en ESP8266. ESP8266 er konfigureret således, at ved opstart ved at trykke på en knap på uret sendes den til indstillingstilstand. I indstillingstilstand opretter uret et WiFi -netværk, der serverer en webside, der kan bruges til at indtaste dine egne wifi -indstillinger, NTP -server og tidszone. Disse oplysninger gemmes i EEPROM i ESP8266 og læses, når uret starter i urfunktion, så det kan oprette forbindelse til internettet og hente tiden.

Tilbehør:

  • NodeMCU ESP8266
  • WS2812B LED -strimmel
  • Trykknap
  • 470 Ohm modstand
  • 10K Ohm modstand
  • 470 uF kondensator
  • Popsicle sticks
  • Kugler
  • Træ (eller andet ark) til sagen

Trin 1: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb

For at få et display bruger dette projekt en RGB -ledstrimmel lagt i 3 rækker. Jeg klippede 3 strimler med 8 lysdioder fra strimlen af WS2812B lysdioder og lodde dem sammen. (De er skrøbelige og lodning af de små puder kan være svært. Jeg pakkede de lodde ender ind i elektrisk tape for at isolere dem fra enhver bøjning.) Selvom jeg kun havde brug for 4 leds pr. Række, skar jeg strimler af 8 ud, så jeg kunne have større afstand mellem lysene ved kun at bruge hver anden LED. Disse strimler blev derefter fastgjort til en flad bund lavet af popsicle sticks. Mellem hver række giver et dobbelt lag af popsicle sticks profilen, så forsiden kan sidde fast mod indersiden af uret (se foto).

LED -strimlen drives fra VU og GND for NodeMCU. VU kommer strøm (næsten) direkte fra USB, så det giver 5V til WS2812B LED'erne, selvom ESP8266 fungerer ved 3.3V. Jeg placerede en 470 uF kondensator på tværs af strømmen til WS2812B -strimlen for at beskytte lysdioderne. Data for ledstrimlen er forbundet til D3 -stiften på NodeMCU via 470 Ohm modstanden. Se denne instruktionsbog for mere information om, hvordan du betjener WS2812B -leds med ESP8266. Kredsløbet blev loddet på proto-board med nogle mand-til-hun-headere til NodeMCU.

En trykknap var også knyttet til D6 i NodeMCU. Der kan trykkes på denne trykknap, mens uret starter for at sende den til indstillingstilstand (hvor wifi -indstillinger, NTP -server og tidszoneindstillinger kan ændres). I den ene ende er trykknappen forbundet til D6 og også til GND via en 10K Ohm modstand, og i den anden ende er den forbundet til strøm. Når der ikke trykkes på knappen, læser D6 lavt; når den trykkes, læser D6 højt.

Trin 2: Software

Software
Software

Softwaren til ESP8266 blev skrevet ved hjælp af Arduino -kode. Lysdioderne håndteres ved hjælp af FastLED -biblioteket, og NTP -synkronisering udføres af NTPClient -biblioteket. Tid synkroniseres med NTP hver time.

Ved starten af opsætningsfunktionen kontrollerer programmet, om der trykkes på knappen, der er forbundet til D6. Hvis det er tilfældet, opretter ESP8266 et wifi -netværk (SSID og adgangskode kan ændres i koden, standard SSID er "TrueBinary" og adgangskode er "thepoweroftwo"). Opret forbindelse til dette netværk fra enhver enhed, og naviger til 192.168.1.1. ESP8266 serverer en webside med formularer, hvor du kan indtaste dit wifi SSID og adgangskode, foretrukne NTP -server og tidszone -offset fra UTC. Efter at disse formularer er indsendt til ESP8266, gemmer de oplysningerne i dets interne EEPROM -lager.

Hvis der ikke trykkes på knappen, starter uret normalt, læser indstillingerne fra EEPROM, opretter forbindelse til wifi for at bruge NTP og begynder at vise tiden.

BEMÆRK: funktionen setDisplay (int index) tager cifretallet fra 0-11, hvor 0 er det første ciffer (den halve dag) og 11 er det sidste (1/4096 på en dag) og tænder den tilsvarende LED ved hjælp af " leds "array. Denne funktion skal udfyldes i henhold til, hvordan du konfigurerede displayet. Mit kommenterede eksempel svarer til, hvordan jeg lodde rækkerne i zig-zag-mode frem for ende-til-ende og sprang hver anden LED over.

Trin 3: Boliger

Boliger
Boliger
Boliger
Boliger
Boliger
Boliger

Til at huse uret brugte jeg en vinkel af malet træ, jeg tilfældigvis havde. På den ene yderside borede jeg 12 huller i et gitter svarende til positionerne på lysdioderne. Jeg stak derefter lysdioderne fast på indersiden af vinklen ved at lime de løftede flader af ispinde mellem rækkerne på træet (som vist). For at sprede lyset fra lysdioderne satte jeg glasmarmor oven på hullerne. Jeg opnåede dette ved at dyppe den nederste halvdel af hver marmor i epoxyharpiks og derefter placere dem i hullerne. NodeMCU og proto-board blev skruet ind i den anden indvendige side af vinklen. Siderne blev dækket af små trekanter af træ, fastgjort med trælim. Den ene side har et hul til mikro -USB -porten på NodeMCU og et snit i hjørnet til trykknappen.

Trin 4: Udført

Færdig!
Færdig!
Færdig!
Færdig!

Vores sande binære ur er færdigt! For at konfigurere det skal du holde knappen nede, mens du tilslutter den for at sætte den i indstillingstilstand, og derefter indtaste WiFi -legitimationsoplysningerne på dens webside. Når det er sat op, kan uret tilsluttes hvor som helst og vil automatisk oprette forbindelse til internettet og begynde at vise tiden i binær.

Det kræver en smule øvelse at læse tid i ægte binært format, men det er en sjov øvelse, og efter et stykke tid bliver det en hurtig måde at få tiden med kun et blik!

Anbefalede: