Turinys:

Tikras dvejetainis laikrodis su NTP sinchronizavimu: 4 žingsniai
Tikras dvejetainis laikrodis su NTP sinchronizavimu: 4 žingsniai

Video: Tikras dvejetainis laikrodis su NTP sinchronizavimu: 4 žingsniai

Video: Tikras dvejetainis laikrodis su NTP sinchronizavimu: 4 žingsniai
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Liepa
Anonim
Tikras dvejetainis laikrodis su NTP sinchronizavimu
Tikras dvejetainis laikrodis su NTP sinchronizavimu
Tikras dvejetainis laikrodis su NTP sinchronizavimu
Tikras dvejetainis laikrodis su NTP sinchronizavimu

Tikras dvejetainis laikrodis paros laiką rodo kaip visos dienos dvejetainių trupmenų sumą, priešingai nei tradicinis „dvejetainis laikrodis“, rodantis laiką kaip dvejetainiai koduoti dešimtainiai skaitmenys, atitinkantys valandas/minutes/sekundes. Tradiciniai „dvejetainiai laikrodžiai“iš tikrųjų naudoja dvejetainį kodavimą-dešimtainį kodavimą-lytinį skaičių. Kokia netvarka! Tikri dvejetainiai laikrodžiai nepaprastai supaprastina dalykus.

Tikrame dvejetainiame laikrodyje pirmasis skaitmuo nurodo pusę dienos, antrasis skaitmuo yra ketvirtis dienos, trečiasis skaitmuo yra aštuntoji dienos dalis ir tt Jis gali būti labai greitai nuskaitomas iki bet kokios skiriamosios gebos (žinoma, praktikuojant)). Pirmasis skaitmuo veiksmingai koduoja AM ir PM, antrasis - ankstyvą AM/PM ar vėlyvą AM/PM ir pan.

Kurdamas tikrąjį dvejetainį laikrodį, naudojau dvylika skyros skaitmenų, todėl diena yra padalinta į 2^12 = 4096 dalis (kiekviena pakopa yra maždaug 20 sekundžių). Užuot išsaugoję visus skaitmenis eilutėje, 12 skaitmenų buvo suskirstyti į 3 eilutes po 4 skaitmenis. Nors tikrieji dvejetainiai skaitmenys nesikeičia, tai leidžia laikrodį perskaityti kaip 3 dvejetainius koduotus šešioliktainius skaitmenis, pirmoje eilutėje rodomos 16-osios dienos dalys (1,5 val.), Antroje eilutėje-256-osios dienos dalys (~ 5 minutės) ir trečioji eilutė, rodanti 4096 -ąją dienos dalį (~ 20 sekundžių).

Laikrodis sinchronizuojamas su NTP (tinklo laiko protokolas) naudojant ESP8266. ESP8266 sukonfigūruotas taip, kad paleidus, paspaudus laikrodžio mygtuką, jis bus perkeltas į nustatymų režimą. Nustatymų režimu laikrodis sukurs „WiFi“tinklą, kuris aptarnaus tinklalapį, kurį galima naudoti norint įvesti savo „Wi -Fi“nustatymus, NTP serverį ir laiko juostą. Ši informacija saugoma ESP8266 EEPROM ir skaitoma, kai laikrodis paleidžiamas laikrodžio režimu, kad jis galėtų prisijungti prie interneto ir nuskaityti laiką.

Priedai:

  • NodeMCU ESP8266
  • WS2812B LED juostelė
  • Mygtukas
  • 470 omų rezistorius
  • 10K omų rezistorius
  • 470 uF kondensatorius
  • Popsicle lazdelės
  • Stiklo rutuliukai
  • Mediena (ar kitas medžiagos lapas), skirtas dėklui

1 žingsnis: grandinė

Grandinė
Grandinė
Grandinė
Grandinė
Grandinė
Grandinė
Grandinė
Grandinė

Norint turėti ekraną, šiame projekte naudojama RGB LED juostelė, išdėstyta 3 eilutėse. Aš iškirpiau 3 juostas iš 8 lempučių iš WS2812B lempų juostos ir lituojau jas kartu. (Jie yra trapūs ir gali būti sunku lituoti mažas trinkeles. Lituotus galus apvyniojau elektros juosta, kad izoliuotų juos nuo bet kokio lenkimo.) Nors man reikėjo tik 4 lempučių kiekvienoje eilutėje, aš išpjoviau 8 juostas. galėtų turėti didesnį atstumą tarp žibintų tik naudojant kiekvieną kitą lemputę. Tada šios juostelės buvo priklijuotos prie plokščio pagrindo, pagaminto iš lazdelių. Tarp kiekvienos eilės dvigubas popsicle lazdelių sluoksnis suteikia profilį, kad priekinis paviršius galėtų būti prigludęs prie laikrodžio korpuso vidinės pusės (žr. Nuotrauką).

LED lemputė maitinama iš „NodeMCU“VU ir GND. VU maitina (beveik) tiesiai iš USB, todėl jis tiekia 5 V į WS2812B šviesos diodus, nors ESP8266 veikia esant 3,3 V. Įdėjau 470 uF kondensatorių per WS2812B juostos maitinimą, kad apsaugotų šviesos diodus. LED juostos duomenys yra prijungti prie „NodeMCU“D3 kaiščio per 470 omų rezistorių. Daugiau informacijos apie tai, kaip valdyti WS2812B šviesos diodus su ESP8266, rasite šioje instrukcijoje. Grandinė buvo lituojama ant plokštės su kai kuriomis „NodeMCU“antraštėmis nuo vyrų iki moterų.

Mygtukas taip pat buvo prijungtas prie „NodeMCU“D6. Šį mygtuką galima paspausti, kol laikrodis paleidžiamas, kad jis būtų nusiųstas į nustatymų režimą (kuriame galima keisti „Wi -Fi“nustatymus, NTP serverį ir laiko juostos nuostatas). Viename gale mygtukas yra prijungtas prie D6, taip pat prie GND per 10K omo rezistorių, o kitame gale - prie maitinimo. Kai mygtukas nespaudžiamas, D6 rodo žemą lygį; paspaudus, D6 rodo aukštą.

2 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

ESP8266 programinė įranga buvo parašyta naudojant „Arduino“kodą. Šviesos diodai tvarkomi naudojant „FastLED“biblioteką, o NTP sinchronizavimą atlieka „NTPClient“biblioteka. Laikas NTP sinchronizuojamas kas valandą.

Pradedant sąrankos funkciją, programa patikrina, ar paspaustas prie D6 prijungtas mygtukas. Jei taip, ESP8266 sukuria „Wi -Fi“tinklą (SSID ir slaptažodį galima pakeisti kodu, numatytasis SSID yra „TrueBinary“, o slaptažodis - „thepoweroftwo“). Prisijunkite prie šio tinklo iš bet kurio įrenginio ir eikite į 192.168.1.1. ESP8266 pateiks tinklalapį su formomis, kuriose galėsite įvesti savo „Wi -Fi“SSID ir slaptažodį, pageidaujamą NTP serverį ir laiko juostos poslinkį iš UTC. Kai šios formos bus pateiktos ESP8266, informacija bus išsaugota vidinėje EEPROM saugykloje.

Jei mygtukas nepaspaudžiamas, laikrodis įsijungia įprastai, nuskaito nustatymus iš EEPROM, prisijungia prie „Wi -Fi“, kad galėtų naudoti NTP, ir pradeda rodyti laiką.

PASTABA: funkcija setDisplay (int indeksas) paima skaitmenų skaičių nuo 0 iki 11, kur 0 yra pirmasis skaitmuo (pusė dienos), o 11 yra paskutinis (1/4096 dienos) ir įjungia atitinkamą šviesos diodą naudodami LED “masyvas. Ši funkcija turi būti užpildyta atsižvelgiant į tai, kaip sukonfigūravote ekraną. Mano komentuotas pavyzdys atitinka tai, kaip aš lituodavau eilutes zigzago būdu, o ne nuo galo iki galo ir praleisdavau kiekvieną kitą šviesos diodą.

3 žingsnis: būstas

Būstas
Būstas
Būstas
Būstas
Būstas
Būstas

Laikrodžio laikymui naudoju atsitiktinai pagamintą dažytos medienos kampą. Ant vieno išorinio paviršiaus aš gręžiau 12 skylių tinklelyje, atitinkančiame šviesos diodų padėtį. Tada priklijavau šviesos diodus prie kampo vidinės pusės, priklijuodamas pakeltus popsicle lazdelių paviršius tarp eilučių prie medžio (kaip parodyta). Norėdami išsklaidyti šviesos diodų šviesą, ant skylių uždėjau stiklinius rutuliukus. Aš tai padariau panardindamas kiekvieno marmuro apatinę pusę į epoksidinę dervą ir įdėjęs jas į skyles. „NodeMCU“ir proto plokštė buvo įsukti į kitą vidinį kampo paviršių. Šonai buvo uždengti naudojant mažus medžio trikampius, pritvirtintus medžio klijais. Vienoje iš šonų yra skylė „NodeMCU“mikro USB prievadui ir mygtuko kampe yra išpjova.

4 žingsnis: padaryta

Padaryta!
Padaryta!
Padaryta!
Padaryta!

Mūsų tikrasis dvejetainis laikrodis baigtas! Norėdami jį nustatyti, laikykite nuspaudę mygtuką, kai prijungiate jį, kad įjungtumėte nustatymų režimą, tada įveskite „WiFi“prisijungimo duomenis savo tinklalapyje. Nustatęs laikrodį, jis gali būti prijungtas bet kur ir automatiškai prisijungs prie interneto ir pradės rodyti laiką dvejetainiu būdu.

Norint perskaityti laiką tikru dvejetainiu formatu, reikia praktikos, tačiau tai yra smagus pratimas, o po kurio laiko tai tampa greitu laiko praleidimo būdu tik žvilgsniu!

Rekomenduojamas: