NTP hodiny s LED displejem a odbíjením

NTP hodiny s LED displejem a odbíjením.Vzniklo to původně jako ptákovina - dostala se mi do ruky krabička, která by správně vyplnila místo na stole. Tak jsem si do ní chtěl vestavět nějaké pěkné, jednoduché a dobře čitelné hodiny. A ono se to zase trochu zvrtlo - zvlášť, když  jsem si vymyslel, že správné hodiny mají odbíjet...


Nahoře budoucí čtyřkanalový voltmetr, vlevo bluepill serial monster, vpravo hodiny.Na začátku byly dvě hezké bezprizorní krabičky Fischer Elektronik AKG 105 22. Protože jsou "tak akorát" nízké (22 mm, to je ideální třeba pro konektory DB9 pro RS232), do jedné z nich jsem v minulosti vestavěl Bluepill serial monster (já ho udělal ve verzi 2x RS232 a 1x RS485), ale vedle něj v polici tím vznikl prázdný prostor. Pro jeho zaplnění jsem si tedy do druhé krabičky prostě musel postavit tyhle fakt prďácký hodiny :)

Takže co to umí?

  • NTP hodiny - čelní pohledUkazovat hodiny, minuty a vteřiny. Hodně dostatečně přesně. A s automatickým přechodem ze standardního na letní čas a zase zpět (obojí právě díky NTP). Zobrazení je na osmiznakovém sedmisegmentovém LED displeji, protože ten jediný se mi do té krabičky rozumně vešel. Původně jsem tam chtěl nějaký OLED, ale buď se vešly na výšku, ale byly příliš úzké, nebo byly ideální na šířku, ale o pár milimetrů přesahovaly výškově. Takže bohužel, ale LEDky jsou krásné. A protože se mi zdál displej příliš statický, tak ještě pomlčky v rytmu vteřin poskakují nahoru a dolů - když se na to chvíli koukám, tak se mi zdá, že hodiny dělají kliky :)
  • Každou noc se sesynchronizují přes WiFi s NTP serverem a dorovnají si čas - ale i když jsou trvale offline, mají odchylku pod vteřinu za den. Kvůli spotřebě je celý WiFi modul vypnutý a zapíná se právě jen na dobu synchronizace.
  • Každou půlhodinu odbijí půl, každou hodinu odbijí počet hodin. Zvuky lze celkem snadno změnit - aktuální zvuk je sejmutý zvuk našich domácích stolních bicích hodin od p. Suchého, vyrobených někdy kolem roku 1910. (To nahrávání zvuku byla taky radost, o tom se zmíním v samostatném článku.) Zvuk bití je (na rozdíl od originálu) vypnutý přes noc, takže v době mezi 22:00 (poslední bití) a 07:30 (první bití) je doma ticho. Pokud si v tomto rozmezí nastavíte alarm, tak ten se samozřejmě nevypne.
  • Alarm - v současné verzi FW zatím nejde přenastavit čas (zatím napevno v kódu, v plánu to samozřejmě je), jednou denně se spustí. V případě potřeby by nebyl problém dopsat více časů, ale zatím nemám praktické využití ani pro ten jeden. Nyní tam je tam úvodní zvuk z Time od Pink Floyd - kdo to slyší poprvé, docela hezky nadskočí :)
  • NTP hodiny - zadní pohledHodiny vydrží něco přes dva dny na baterii, dobíjí (resp. provozují) se z libovolné USB nabíječky 5V/0.5A -  je to daň za jasný a dobře čitelný displej.
  • Zadní čelo, nožičky, držák enkodéru a displeje jsou 3D tisk, přední čelo bylo také, ale teď je frézované z eloxovaného hliníku, a přemýšlím, která verze je hezčí. Zatím vede hliník, už jen proto, že vyfrézovat ho byla děsná práce (a to tmavé plexi taky!), tak jak by to vypadalo, kdybych ho teď nepoužil, že ano.

A co je uvnitř? Vlastně skoro nic:

  • ESP32 Devkit - můj oblíbený :) Zadrátovaný opět do "papírové" čínské univerzálky - jako na potvoru jsem neměl po ruce desku 100x160 mm v nějakém slušnějším provedení. Po pořádném přeleštění skleněným kartáčkem se na ni dá pájet, ale žádná velká radost to není.
  • Audiomodul DFplayer MP3 - můj nepříliš oblíbený. Je nenažraný, s různými omezeními a limity, ale pořád to je ta nejjednodušší metoda, jak dostat z hodin poměrně čistý zvuk. K němu jsem připojil reproduktor z rozebraného notebooku HP - a ono to dohromady hraje kupodivu docela věrně.
  • NTP hodiny - výklopné nožičky, prozatím přilepené oboustrankou, bál jsem se, jestli nebudou praskat.modul RTC s DS3231 a EEPROM - asi nejpřesnější RTC, co je v čínských modulech za pár korun na trhu. Když máte štěstí na kus, dostanete se k odchylce pod vteřinu za den. Když ne, čeká vás dolaďování přes "registry stárnutí", kterými se dá ledacos dohnat (jeden z mých modulů se zpožďoval asi o dvacet vteřin za den a taky se to dalo vykompenzovat, jen to chtělo trochu trpělivosti - ladil jsem to asi týden).
  • červený sedmisegmentový LED displej se sériovým řízením. Čínská klasika s MAX7219.
  • Nabíjecí modul TP4056 s 3.3Ah baterií. Hodiny mají v klidu s plným jasem displeje spotřebu cca 100 mA, při odbíjení i dvojnásobek. Na první pohled za to může ten LED displej, ale on ani ten DFplayer není zrovna etalon úspornosti. Výrobce to zjevně tuší, takže modul umí i nějaký standby mod, hloupé ale je, že se z něj nerad budí a pak dělá hodně podivné věci (lupání do reproduktoru, vynechání přehrávaného zvuku, špatná indikace BUSY a podobně.)
  • Inkrementální enkodér s tlačítkem (vstupuje se s ním do menu nastavení - regulace jasu, hlasitosti, výběr aktuálních zvuků atp.)
  • NTP hodiny - nahlédnutí pod sukně.K dodělání je ještě měření napětí baterie a automatická regulace jasu displeje - stav baterie bude indikován pomocí desetinných teček na displeji a jejich blikáním, jas v místnosti bude snímán čidlem v čelním panelu (to je ta dírka na levé straně od displeje).
  • Tlakové, vlhkostní a teplotní čidlo BME280 - Samotný senzor je fajn a dobře se s ním pracuje, ale data mi zatím posílá jen po sériovém kanále, kde je to celkem k ničemu. V plánu sice bylo posílání dat na server a zobrazení hodnot na displeji na vyžádání po stisku tlačítka, ale pro přesné měření to opravdu není. Celá elektronika to čidlo totiž ohřívá asi o pět stupňů, takže přepočet tlaku na hladinu moře je mimo, vlhkost uvnitř krabičky je díky vytápění taky kapku jinde, no a o vnější teplotě asi nemá smysl se zmiňovat... Buď půjde úplně do pryč, nebo ho namontuju vně krabičky, aby se neohřívalo tolik. Ještě uvidím, co s tím, ale zatím to nemá prioritu a v krabičce nepřekáží.

NTP hodiny - nedopadlo to špatně.Postupně tedy dolaďuju FW a chystám se na další zvukové sady - a pak se dám do výroby ještě jednoho kusu, protože když jsou hodiny v práci, tak nejsou doma a naopak. (Jo, zvášť to odbíjení se kolegům líbí, a když hodiny náhodou nemám v práci, chybí jim. To fakt říkali. Bez pohrůžky násilím. Víceméně.)

Celé to píšu opět v Arduino IDE za využítí příslušných pluginů od Espressif pro ESP32 - prakticky všechny knihovny pro periferie jsem modifikoval nebo napsal znovu, v podstatě jediné, co mi zůstalo bez zásahu, je obsluha RTC DS3231. No a kapku mi to narostlo, projekt na jedno, dvě odpoledne už má zase pár tisíc řádků... A to jsem si tam vymyslel ještě další "drobnosti" - jednak aktualizaci FW OTA (to už jsem použil v jiném projektu, tak to snad klapne) a ovládání různých interních funkcí pomocí sériového kanálu přes SCPI (to je tak, když máte jednou "ochočenej" parser, tak ho cpete všude - i na nastavení WiFi v hodinách).

Jistě se to dalo celé udělat jinak - místo problematického DFplayeru použít I2S DAC a nějaký malý zesilovač v třídě D, k ESP32 připojit SD kartu - a pak to "jen" další tři měsíce programovat. Zase bych mohl mít nejen hodiny, ale třeba i malý BT repráček, internetové rádio nebo něco podobně užitečného...

Otázkou je, jestli by mi to pak ještě stálo za tu námahu - stávající konstrukce vycházela z toho, co jsem našel v "domácím archivu" a co víceméně umím použít (a jak vidno, i s tím mám co dělat).

Já jsem i s tímhle mezivýsledkem navýsost spokojený - mám hezkou a vlastně i docela praktickou hračku. Ale nejspíš si budu muset udělat ještě jednu :)


Komentáře:


Vložit komentář





J5aB4x