Inhaltsverzeichnis:

Echte Binäruhr mit NTP-Synchronisierung - Gunook
Echte Binäruhr mit NTP-Synchronisierung - Gunook

Video: Echte Binäruhr mit NTP-Synchronisierung - Gunook

Video: Echte Binäruhr mit NTP-Synchronisierung - Gunook
Video: Eine Minute im Leben einer Binäruhr 2024, Kann
Anonim
Echte Binäruhr mit NTP Sync
Echte Binäruhr mit NTP Sync
Echte Binäruhr mit NTP Sync
Echte Binäruhr mit NTP Sync

Eine echte binäre Uhr zeigt die Tageszeit als Summe binärer Bruchteile eines ganzen Tages an, im Gegensatz zu einer herkömmlichen "binären Uhr", die die Zeit als binär codierte Dezimalziffern entsprechend den Stunden/Minuten/Sekunden anzeigt. Traditionelle "Binäruhren" verwenden wirklich binär-codiert-dezimal-codiert-sexagesimal. Was für ein Chaos! Echte Binäruhren vereinfachen die Dinge ungemein.

In einer echten binären Uhr gibt die erste Ziffer den halben Tag an, die zweite Ziffer einen Vierteltag, die dritte Ziffer einen Achteltag usw. Sie kann sehr schnell in jeder Auflösung gelesen werden (mit Übung natürlich). Die erste Ziffer kodiert effektiv AM gegenüber PM, die zweite Ziffer kodiert, ob es sich um frühes AM/PM oder spätes AM/PM handelt und so weiter.

Beim Entwerfen meiner echten Binäruhr habe ich eine Auflösung von zwölf Stellen verwendet, sodass der Tag in 2^12=4096 Teile unterteilt ist (jede Inkrementierung beträgt ungefähr 20 Sekunden). Anstatt alle Ziffern in einer Zeile zu halten, wurden die 12 Ziffern in 3 Reihen mit 4 Ziffern aufgeteilt. Obwohl die eigentlichen Binärziffern unverändert sind, ermöglicht dies, dass die Uhr als 3 binär codierte Hex-Ziffern gelesen wird, wobei die erste Zeile 16tel eines Tages (1,5 Stunden) anzeigt, die zweite Zeile 256stel des Tages (~5 Minuten) anzeigt und die dritte Zeile zeigt 4096stel eines Tages (~20 Sekunden).

Die Uhr wird über einen ESP8266 mit NTP (Network Time Protocol) synchronisiert. Der ESP8266 ist so konfiguriert, dass er beim Start durch Drücken einer Taste auf der Uhr in den Einstellungsmodus versetzt wird. Im Einstellungsmodus erstellt die Uhr ein WLAN-Netzwerk, das eine Webseite bereitstellt, auf der Sie Ihre eigenen WLAN-Einstellungen, NTP-Server und Zeitzone eingeben können. Diese Informationen werden im EEPROM des ESP8266 gespeichert und beim Start der Uhr im Uhrmodus gelesen, damit sie sich mit dem Internet verbinden und die Uhrzeit abrufen kann.

Lieferungen:

  • NodeMCU ESP8266
  • WS2812B LED-Streifen
  • Druckknopf
  • 470 Ohm Widerstand
  • 10K Ohm Widerstand
  • 470 uF Kondensator
  • Eis am Stiel
  • Murmeln
  • Holz (oder anderes Material) für den Koffer

Schritt 1: Schaltung

Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis

Um ein Display zu haben, verwendet dieses Projekt einen RGB-LED-Streifen, der in 3 Reihen verlegt ist. Ich schneide 3 Streifen von 8 LEDs aus dem Streifen der WS2812B-LEDs und löte sie zusammen. (Sie sind zerbrechlich und das Löten der kleinen Pads kann schwierig sein. Ich habe die gelöteten Enden mit Isolierband umwickelt, um sie vor Biegungen zu isolieren.) Obwohl ich nur 4 LEDs pro Reihe benötigte, schneide ich Streifen von 8 aus, damit ich könnte einen größeren Abstand zwischen den Lichtern haben, indem nur jede andere LED verwendet wird. Diese Streifen wurden dann auf eine flache Basis aus Eis am Stiel-Sticks geklebt. Zwischen jeder Reihe sorgt eine doppelte Lage Eis am Stiel für das Profil, so dass die Vorderseite gegen die Innenseite des Uhrengehäuses geklebt werden kann (siehe Foto).

Der LED-Streifen wird von der VU und GND der NodeMCU mit Strom versorgt. VU wird (fast) direkt vom USB mit Strom versorgt, sodass die WS2812B-LEDs mit 5 V versorgt werden, obwohl der ESP8266 mit 3,3 V arbeitet. Ich habe einen 470-uF-Kondensator über die Stromversorgung für den WS2812B-Streifen gelegt, um die LEDs zu schützen. Die Daten für den LED-Streifen werden über den 470-Ohm-Widerstand mit dem D3-Pin der NodeMCU verbunden. Weitere Informationen zur Steuerung von WS2812B-LEDs mit dem ESP8266 finden Sie in dieser Anleitung. Die Schaltung wurde mit einigen Stecker-zu-Buchse-Stiftleisten für die NodeMCU auf die Proto-Platine gelötet.

An D6 der NodeMCU wurde auch ein Taster angebracht. Diese Taste kann während des Starts der Uhr gedrückt werden, um sie in den Einstellungsmodus zu senden (in dem WLAN-Einstellungen, NTP-Server und Zeitzoneneinstellungen geändert werden können). An einem Ende ist der Taster mit D6 und auch über einen 10K Ohm Widerstand mit GND verbunden und am anderen Ende mit Strom verbunden. Wenn die Taste nicht gedrückt wird, zeigt D6 niedrig an; wenn es gedrückt wird, liest D6 hoch.

Schritt 2: Software

Software
Software

Die Software für den ESP8266 wurde mit Arduino-Code geschrieben. Die LEDs werden über die FastLED-Bibliothek verarbeitet und die NTP-Synchronisierung erfolgt über die NTPClient-Bibliothek. Die Zeit wird stündlich von NTP synchronisiert.

Beim Start der Setup-Funktion prüft das Programm, ob die an D6 angeschlossene Taste gedrückt ist. Wenn dies der Fall ist, erstellt der ESP8266 ein WLAN-Netzwerk (SSID und Passwort können im Code geändert werden, Standard-SSID ist "TrueBinary" und Passwort ist "thepoweroftwo"). Verbinden Sie sich von einem beliebigen Gerät aus mit diesem Netzwerk und navigieren Sie zu 192.168.1.1. Der ESP8266 zeigt eine Webseite mit Formularen an, auf der Sie Ihre WLAN-SSID und Ihr Passwort, den bevorzugten NTP-Server und den Zeitzonen-Offset von UTC eingeben können. Nachdem diese Formulare an den ESP8266 gesendet wurden, speichert er die Informationen in seinem internen EEPROM-Speicher.

Wenn die Taste nicht gedrückt wird, startet die Uhr normal, liest die Einstellungen aus dem EEPROM, verbindet sich mit dem WLAN, um NTP zu verwenden, und beginnt mit der Anzeige der Uhrzeit.

HINWEIS: Die Funktion setDisplay(int index) nimmt die Ziffernnummer von 0-11 an, wobei 0 die erste Ziffer (der halbe Tag) und 11 die letzte (1/4096 eines Tages) ist, und schaltet die entsprechende LED mit dem " LEDs"-Array. Diese Funktion muss entsprechend der Konfiguration der Anzeige ausgefüllt werden. Mein auskommentiertes Beispiel entspricht dem, wie ich die Reihen im Zick-Zack-Stil gelötet habe und nicht von Ende zu Ende und jede andere LED übersprungen habe.

Schritt 3: Gehäuse

Gehäuse
Gehäuse
Gehäuse
Gehäuse
Gehäuse
Gehäuse

Um die Uhr unterzubringen, benutzte ich einen Winkel aus bemaltem Holz, den ich zufällig hatte. Auf einer Außenfläche habe ich 12 Löcher in einem Raster gebohrt, das den Positionen der LEDs entspricht. Dann klebte ich die LEDs an die Innenseite des Winkels, indem ich die erhöhten Flächen der Eisstiele zwischen den Reihen auf das Holz klebe (wie abgebildet). Um das Licht der LEDs zu zerstreuen, habe ich Glasmurmeln auf die Löcher geklebt. Ich habe dies erreicht, indem ich die untere Hälfte jedes Marmors in Epoxidharz getaucht und dann in die Löcher gelegt habe. Die NodeMCU und das Proto-Board wurden in die andere Innenfläche des Winkels geschraubt. Die Seiten wurden mit kleinen Holzdreiecken bedeckt, die mit Holzleim befestigt wurden. Eine der Seiten hat ein Loch für den Micro-USB-Port der NodeMCU und einen Ausschnitt in der Ecke für den Taster.

Schritt 4: Fertig

Fertig!
Fertig!
Fertig!
Fertig!

Unsere echte Binäruhr ist fertig! Um es einzurichten, halten Sie die Taste gedrückt, während Sie es anschließen, um es in den Einstellungsmodus zu versetzen, und geben Sie dann die WLAN-Anmeldeinformationen auf seiner Webseite ein. Nach der Einrichtung kann die Uhr überall angeschlossen werden, verbindet sich automatisch mit dem Internet und zeigt die Uhrzeit in Binärform an.

Es erfordert etwas Übung, die Zeit im echten Binärformat abzulesen, aber es macht Spaß und nach einer Weile wird es eine schnelle Möglichkeit, die Zeit mit nur einem Blick zu erhalten!

Empfohlen: