Sisällysluettelo:

Todellinen binaarikello NTP -synkronoinnin kanssa: 4 vaihetta
Todellinen binaarikello NTP -synkronoinnin kanssa: 4 vaihetta

Video: Todellinen binaarikello NTP -synkronoinnin kanssa: 4 vaihetta

Video: Todellinen binaarikello NTP -synkronoinnin kanssa: 4 vaihetta
Video: How Burn Pits Are Killing Military Veterans 2024, Marraskuu
Anonim
Todellinen binaarikello NTP -synkronoinnin kanssa
Todellinen binaarikello NTP -synkronoinnin kanssa
Todellinen binaarikello NTP -synkronoinnin kanssa
Todellinen binaarikello NTP -synkronoinnin kanssa

Todellinen binaarikello näyttää kellonajan koko päivän binaariosien summana, toisin kuin perinteinen "binaarikello", joka näyttää ajan binäärikoodatuina desimaalinumeroina, jotka vastaavat tunteja/minuutteja/sekunteja. Perinteiset "binäärikellot" käyttävät todella binäärikoodattua-desimaalikoodattua-sukupuolen pienintä. Mikä sotku! Todelliset binaarikellot yksinkertaistavat asioita valtavasti.

Todellisessa binaarikellossa ensimmäinen numero kertoo puolet päivästä, toinen numero on neljännespäivä, kolmas numero on kahdeksasosa päivästä jne. Se voidaan lukea mihin tahansa resoluutioon hyvin nopeasti (käytännössä tietysti). Ensimmäinen numero koodaa tehokkaasti AM: ää ja PM: tä, toinen numero koodaa, onko kello AM/PM vai myöhäinen AM/PM jne.

Suunnitellessani todellista binaarikelloa käytin kaksitoista numeroa resoluutiota, joten päivä on jaettu 2^12 = 4096 osaan (jokainen lisäys on noin 20 sekuntia). Sen sijaan, että kaikki numerot säilyisivät rivillä, 12 numeroa jaettiin kolmeen 4 -numeroiseen riviin. Vaikka todelliset binääriluvut ovat muuttumattomia, tämä mahdollistaa kellon lukemisen kolmella binäärikoodatulla heksanumerolla. kolmas rivi, joka näyttää 4096th osaa päivästä (~ 20 sekuntia).

Kello synkronoidaan NTP: hen (Network Time Protocol) käyttäen ESP8266 -protokollaa. ESP8266 on konfiguroitu niin, että käynnistyksen yhteydessä kellon painikkeen painaminen lähettää sen asetustilaan. Asetustilassa kello luo WiFi -verkon, joka palvelee verkkosivua, jolla voidaan syöttää omat wifi -asetukset, NTP -palvelin ja aikavyöhyke. Nämä tiedot tallennetaan ESP8266: n EEPROMiin ja luetaan, kun kello käynnistyy kellotilassa, jotta se voi muodostaa yhteyden Internetiin ja hakea ajan.

Tarvikkeet:

  • NodeMCU ESP8266
  • WS2812B LED -nauha
  • Paina nappia
  • 470 ohmin vastus
  • 10K ohmin vastus
  • 470 uF kondensaattori
  • Popsicle tikkuja
  • Marmorit
  • Puu (tai muu materiaali) koteloa varten

Vaihe 1: Piiri

Piiri
Piiri
Piiri
Piiri
Piiri
Piiri
Piiri
Piiri

Näytön saamiseksi tässä projektissa käytetään RGB -led -nauhaa, joka on asetettu 3 riville. Leikkasin WS2812B -ledien nauhasta kolme 8 ledin nauhaa ja juotin ne yhteen. (Ne ovat hauraita ja pienten tyynyjen juottaminen voi olla vaikeaa. Käärin juotetut päät sähköteipillä eristämään ne kaikista taivutuksista.) Vaikka tarvitsin vain 4 lediä per rivi, leikkasin pois 8 nauhaa niin, että voisi olla suurempi etäisyys valojen välillä vain käyttämällä jokaista muuta lediä. Nämä nauhat kiinnitettiin sitten tasaiseen pohjaan, joka oli valmistettu popsicle -tikuista. Jokaisen rivin välissä on kaksinkertainen popsicle -tikku, joka tarjoaa profiilin, jotta etupinta voidaan kiinnittää kellon kotelon sisäpuolelle (katso kuva).

LED -nauha saa virtansa NodeMCU: n VU: sta ja GND: stä. Virtalähde saa virtaa (melkein) suoraan USB: ltä, joten se tarjoaa 5 V: n jännitteen WS2812B -LED -valolle, vaikka ESP8266 toimii 3,3 V: n jännitteellä. Laitoin 470 uF: n kondensaattorin WS2812B -nauhan virran yli LEDien suojaamiseksi. LED -nauhan tiedot on kytketty NodeMCU: n D3 -nastaan 470 ohmin vastuksen kautta. Katso tästä ohjeesta lisätietoja WS2812B -ledien ohjaamisesta ESP8266: lla. Piiri juotettiin proto-kortille joidenkin uros-naaras-otsikoiden kanssa NodeMCU: lle.

Painike liitettiin myös NodeMCU: n D6: een. Tätä painiketta voidaan painaa kellon käynnistyksen aikana lähettääksesi se asetustilaan (jossa wifi -asetuksia, NTP -palvelinta ja aikavyöhykkeen asetuksia voidaan muuttaa). Toisesta päästä painike on kytketty D6: een ja myös GND: hen 10K ohmin vastuksen kautta ja toisessa päässä virtalähteeseen. Kun painiketta ei paineta, D6 lukee matalaa; kun sitä painetaan, D6 lukee korkealla.

Vaihe 2: Ohjelmisto

Ohjelmisto
Ohjelmisto

ESP8266: n ohjelmisto on kirjoitettu Arduino -koodilla. LEDit käsitellään FastLED -kirjastolla ja NTP -synkronointi suoritetaan NTPClient -kirjastolla. NTP synkronoi ajan joka tunti.

Ohjelma tarkistaa asetustoiminnon alussa, onko D6: een kytkettyä painiketta painettu. Jos on, ESP8266 luo wifi -verkon (SSID ja salasana voidaan muuttaa koodissa, oletus -SSID on "TrueBinary" ja salasana "thepoweroftwo"). Muodosta yhteys tähän verkkoon mistä tahansa laitteesta ja siirry osoitteeseen 192.168.1.1. ESP8266 palvelee verkkosivua lomakkeilla, joihin voit syöttää wifi -SSID -tunnuksesi ja salasanasi, ensisijaisen NTP -palvelimen ja aikavyöhykkeen siirtymän UTC: stä. Kun nämä lomakkeet on lähetetty ESP8266: een, se tallentaa tiedot sisäiseen EEPROM -tallennustilaan.

Jos painiketta ei paineta, kello käynnistyy normaalisti, lukee asetukset EEPROMista, muodostaa yhteyden wifi -verkkoon käyttääkseen NTP: tä ja alkaa näyttää aikaa.

HUOMAUTUS: funktio setDisplay (int-indeksi) ottaa numeron 0-11, jossa 0 on ensimmäinen numero (puoli päivää) ja 11 on viimeinen (1/4096 päivästä), ja sytyttää vastaavan LED-valon ledit -ryhmä. Tämä toiminto on täytettävä sen mukaan, miten olet määrittänyt näytön. Kommentoitu esimerkki vastaa sitä, kuinka juotin rivit siksak-tavalla eikä päästä päähän ja ohitin kaikki muut LEDit.

Vaihe 3: Asuminen

Asuminen
Asuminen
Asuminen
Asuminen
Asuminen
Asuminen

Kellon asentamiseen käytin maalattua puuta, joka sattui olemaan. Yhdelle ulkopinnalle porasin 12 reikää ristikkoon, joka vastaa LEDien asentoa. Kiinnitin sitten LEDit kulman sisäpuolelle liimaamalla popsicle-tikkujen kohotetut pinnat rivien väliin puuhun (kuten kuvassa). LEDien valon hajottamiseksi laitoin lasimallit reikien päälle. Tein tämän kastamalla jokaisen marmorin alaosan epoksihartsiin ja asettamalla ne sitten reikiin. NodeMCU ja proto-levy ruuvattiin kulman toiseen sisäpintaan. Sivut peitettiin pienillä puukolmioilla, jotka oli kiinnitetty puuliimalla. Toisella puolella on reikä NodeMCU: n mikro -USB -portille ja leikkaus painikkeen kulmassa.

Vaihe 4: Valmis

Tehty!
Tehty!
Tehty!
Tehty!

Todellinen binaarikellomme on valmis! Aseta se pitämällä painiketta painettuna samalla, kun kytket sen, jotta se asetetaan asetustilaan, ja kirjoita sitten WiFi -tunnistetiedot sen verkkosivulle. Kun kello on määritetty, se voidaan kytkeä mihin tahansa ja muodostaa automaattisesti yhteyden Internetiin ja alkaa näyttää aikaa binäärinä.

Ajan lukeminen oikeassa binäärimuodossa vaatii harjoitusta, mutta se on hauska harjoitus ja jonkin ajan kuluttua siitä tulee nopea tapa saada aika vain yhdellä silmäyksellä!

Suositeltava: