Inhoudsopgave:

Echte binaire klok met NTP-synchronisatie - Ajarnpa
Echte binaire klok met NTP-synchronisatie - Ajarnpa

Video: Echte binaire klok met NTP-synchronisatie - Ajarnpa

Video: Echte binaire klok met NTP-synchronisatie - Ajarnpa
Video: Настройка камеры Reolink - настройки на сетевом видеорегистраторе | приложении | клиенте 2024, November
Anonim
Echte binaire klok met NTP-synchronisatie
Echte binaire klok met NTP-synchronisatie
Echte binaire klok met NTP-synchronisatie
Echte binaire klok met NTP-synchronisatie

Een echte binaire klok geeft de tijd van de dag weer als een som van binaire fracties van een volledige dag, in tegenstelling tot een traditionele "binaire klok" die de tijd weergeeft als binair gecodeerde decimale cijfers die overeenkomen met de uren/minuten/seconden. Traditionele "binaire klokken" gebruiken echt binair-gecodeerd-decimaal-gecodeerd-sexagesimaal. Wat een puinhoop! Echte binaire klokken vereenvoudigen de zaken enorm.

In een echte binaire klok geeft het eerste cijfer aan dat het de halve dag is, het tweede cijfer is een kwart dag, het derde cijfer is een achtste van een dag, enz. Het kan heel snel naar elke resolutie worden gelezen (met oefening natuurlijk). Het eerste cijfer codeert effectief AM versus PM, het tweede cijfer codeert of het vroege AM/PM of late AM/PM is, enzovoort.

Bij het ontwerpen van mijn echte binaire klok heb ik een resolutie van twaalf cijfers gebruikt, dus de dag is verdeeld in 2 ^ 12 = 4096 delen (elke stap is ongeveer 20 seconden). In plaats van alle cijfers op een lijn te houden, werden de 12 cijfers verdeeld in 3 rijen van 4 cijfers. Hoewel de werkelijke binaire cijfers ongewijzigd zijn, kan de klok worden gelezen als 3 binair gecodeerde hexadecimale cijfers, waarbij de eerste regel de 16e van een dag (1,5 uur) aangeeft, de tweede regel de 256e dag (~ 5 minuten), en de derde regel toont 4096ste van een dag (~ 20 seconden).

De klok wordt gesynchroniseerd met NTP (Network Time Protocol) met behulp van een ESP8266. De ESP8266 is zo geconfigureerd dat, bij het opstarten, op een knop op de klok wordt gedrukt, deze naar de instellingenmodus wordt gestuurd. In de instellingenmodus creëert de klok een wifi-netwerk dat een webpagina biedt die kan worden gebruikt om je eigen wifi-instellingen, NTP-server en tijdzone in te voeren. Deze informatie wordt opgeslagen in de EEPROM van de ESP8266 en wordt gelezen wanneer de klok opstart in klokmodus, zodat deze verbinding kan maken met internet en de tijd kan ophalen.

Benodigdheden:

  • NodeMCU ESP8266
  • WS2812B LED-strip
  • Druk op de knop
  • 470 Ohm weerstand
  • 10K Ohm weerstand
  • 470 uF condensator
  • Ijslollystokjes
  • knikkers
  • Hout (of ander vel materiaal) voor de koffer

Stap 1: Circuit

Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring

Om een display te hebben, maakt dit project gebruik van een RGB-ledstrip die in 3 rijen is gelegd. Ik heb 3 stroken van 8 leds uit de strook WS2812B leds gesneden en aan elkaar gesoldeerd. (Ze zijn kwetsbaar en het solderen van de kleine pads kan moeilijk zijn. Ik heb de gesoldeerde uiteinden in elektrische tape gewikkeld om ze te isoleren tegen buigen.) Hoewel ik maar 4 leds per rij nodig had, knipte ik stroken van 8 uit zodat ik zou een grotere afstand tussen de lichten kunnen hebben door alleen elke andere led te gebruiken. Deze strips werden vervolgens geplakt op een platte basis gemaakt van ijslollystokjes. Tussen elke rij zorgt een dubbele laag ijslollystokjes voor het profiel zodat de voorkant tegen de binnenkant van de kast van de klok kan worden geplakt (zie foto).

De ledstrip wordt gevoed vanuit de VU en GND van de NodeMCU. VU is stroom die (bijna) rechtstreeks van de USB komt, dus het levert 5V aan de WS2812B LED's, ook al werkt de ESP8266 op 3,3V. Ik heb een condensator van 470 uF over de voeding voor de WS2812B-strip geplaatst om de leds te beschermen. Gegevens voor de ledstrip zijn via de 470 Ohm-weerstand verbonden met de D3-pin van de NodeMCU. Raadpleeg deze instructable voor meer informatie over het besturen van WS2812B-leds met de ESP8266. Het circuit is op een proto-board gesoldeerd met enkele male-to-female headers voor de NodeMCU.

Er was ook een drukknop bevestigd aan D6 van de NodeMCU. Deze drukknop kan worden ingedrukt terwijl de klok loopt om hem naar de instellingenmodus te sturen (waarin wifi-instellingen, NTP-server en tijdzonevoorkeuren kunnen worden gewijzigd). Aan de ene kant is de drukknop verbonden met D6 en ook met GND via een weerstand van 10K Ohm en aan de andere kant is hij verbonden met voeding. Wanneer de knop niet wordt ingedrukt, geeft D6 laag aan; wanneer erop wordt gedrukt, geeft D6 hoog aan.

Stap 2: Software

Software
Software

De software voor de ESP8266 is geschreven met Arduino-code. De LED's worden afgehandeld met behulp van de FastLED-bibliotheek en NTP-synchronisatie wordt gedaan door de NTPClient-bibliotheek. De tijd wordt elk uur gesynchroniseerd door NTP.

Aan het begin van de setup-functie controleert het programma of de op D6 aangesloten knop is ingedrukt. Als dit het geval is, creëert de ESP8266 een wifi-netwerk (de SSID en het wachtwoord kunnen in de code worden gewijzigd, de standaard SSID is "TrueBinary" en het wachtwoord is "thepoweroftwo"). Maak vanaf elk apparaat verbinding met dit netwerk en navigeer naar 192.168.1.1. De ESP8266 biedt een webpagina met formulieren waar u uw wifi-SSID en wachtwoord, gewenste NTP-server en tijdzoneverschuiving van UTC kunt invoeren. Nadat deze formulieren zijn ingediend bij de ESP8266, wordt de informatie opgeslagen in de interne EEPROM-opslag.

Als de knop niet wordt ingedrukt, start de klok normaal, leest de instellingen van EEPROM, maakt verbinding met wifi om NTP te gebruiken en begint de tijd weer te geven.

OPMERKING: de functie setDisplay(int index) neemt het cijfer van 0-11, waarbij 0 het eerste cijfer is (de halve dag) en 11 het laatste is (1/4096 van een dag) en schakelt de overeenkomstige LED in met behulp van de " leds"-array. Deze functie moet worden ingevuld volgens de manier waarop u het display hebt geconfigureerd. Mijn voorbeeld met commentaar komt overeen met hoe ik de rijen op een zigzagmanier heb gesoldeerd in plaats van van begin tot eind en elke andere LED heb overgeslagen.

Stap 3: Huisvesting

huisvesting
huisvesting
huisvesting
huisvesting
huisvesting
huisvesting

Om de klok te huisvesten, gebruikte ik een hoek van geverfd hout die ik toevallig had. Aan een buitenzijde heb ik 12 gaten geboord in een raster dat overeenkomt met de posities van de LED's. Vervolgens heb ik de LED's aan de binnenkant van de hoek geplakt door de verhoogde vlakken van de ijslollystokjes tussen de rijen aan het hout te lijmen (zoals afgebeeld). Om het licht van de leds te verspreiden heb ik glazen knikkers op de gaatjes geplakt. Ik heb dit bereikt door de onderste helft van elk marmer in epoxyhars te dompelen en ze vervolgens in de gaten te plaatsen. De NodeMCU en het proto-board werden in de andere binnenkant van de hoek geschroefd. De zijkanten werden bedekt met kleine driehoekjes van hout, bevestigd met houtlijm. Een van de zijkanten heeft een gat voor de micro-USB-poort van de NodeMCU en een inkeping in de hoek voor de drukknop.

Stap 4: Klaar

Gedaan!
Gedaan!
Gedaan!
Gedaan!

Onze echte binaire klok is klaar! Om het in te stellen, houdt u de knop ingedrukt terwijl u het aansluit om het in de instellingenmodus te zetten en voert u vervolgens de WiFi-inloggegevens in op de webpagina. Eenmaal ingesteld, kan de klok overal worden aangesloten en maakt automatisch verbinding met internet en begint de tijd in binair weer te geven.

Het vergt wat oefening om de tijd in echt binair formaat te lezen, maar het is een leuke oefening en na een tijdje wordt het een snelle manier om de tijd te krijgen met slechts een oogopslag!

Aanbevolen: