Obsah:
- Zásoby
- Krok 1: Nápad
- Krok 2: Nějaká teorie binárních hodinek
- Krok 3: Dostat se do práce
- Krok 4: Výběr komponent
- Krok 5: Schéma
- Krok 6: Rozložení DPS
- Krok 7: 3D design
- Krok 8: Kód
- Krok 9: Programování
- Krok 10: Pájení
- Krok 11: Sestavení
- Krok 12: Závěr a vylepšení
Video: The Ultimate Binary Watch: 12 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Nedávno jsem se seznámil s konceptem binárních hodinek a začal jsem provádět průzkum, abych zjistil, jestli bych si je mohl postavit sám. Nebyl jsem však schopen najít existující design, který by byl funkční i stylový zároveň. Rozhodl jsem se tedy vytvořit svůj vlastní design zcela od nuly!
Zásoby
Všechny soubory pro tento projekt:
Knihovny pro kód Arduino lze stáhnout z GitHub zde:
Knihovna RTC M41T62
FastLED knihovna
LowPower Library
Krok 1: Nápad
Nedávno jsem narazil na následující video:
DIY binární náramkové hodinky
Video výše ukazuje základní domácí binární hodinky. Netušil jsem, že něco takového existuje, ale poté, co jsem provedl další výzkum na téma binárních hodinek, jsem rychle zjistil, že existuje spousta různých designů! Chtěl jsem si jeden postavit pro sebe, ale nenašel jsem design, který by se mi líbil. Binární hodinky, které jsem našel, postrádaly mnoho funkcí a nevypadaly zvlášť dobře. Rozhodl jsem se tedy navrhnout svůj vlastní úplně od začátku!
Prvním krokem bylo stanovení kritérií pro můj návrh. Na to jsem přišel:
- Binární RGB rozhraní
- Zobrazení času (s velmi přesným měřením času)
- Zobrazení data
- Funkce stopek
- Funkce alarmu
- Výdrž baterie minimálně 2 týdny
- USB nabíjení
- Software snadno přizpůsobitelný uživatelem
- Čistý a jednoduchý design
Tato kritéria se stala základem celého projektu. Dalším krokem bylo zjistit, jak chci, aby hodinky fungovaly!
Krok 2: Nějaká teorie binárních hodinek
Plán byl jednoduchý. Binární hodinky by fungovaly stejně jako běžné hodinky s tím rozdílem, že rozhraní by bylo binární, konkrétně BCD (Binary Coded Decimal). BCD je typ binárního kódování, kde každá desetinná číslice je reprezentována pevným počtem bitů. Potřebuji 4 bity, abych mohl reprezentovat číslici od 0 do 9. A za standard
hh: mm
časový formát, potřebuji 4 z těchto číslic. To znamená, že potřebuji celkem 16 bitů, které budou reprezentovány 16 LED diodami.
Čtení času v BCD je docela snadné, jakmile si na to zvyknete. Řádek ve spodní části hodinek představuje nejméně významný bit (1) a řádek v horní části je nejvýznamnější bit (8). Každý sloupec představuje číslici v
hh: mm
časový formát. Pokud LED dioda svítí, tuto hodnotu započítáte. Pokud LED dioda nesvítí, ignorujete ji.
Chcete -li přečíst první číslici, jednoduše sečtěte všechny hodnoty aktivovaných LED diod v prvním (nejvíce vlevo) sloupci. Totéž proveďte pro ostatní číslice zleva doprava. Nyní jste si přečetli čas v BCD!
Tento princip bude stejný pro ostatní funkce hodinek. Použití RGB LED pomůže rozlišit různé funkce a režimy pomocí různých barev. Barvy si vybírá uživatel a lze je snadno přizpůsobit jakékoli barevné paletě, kterou upřednostňuje. To umožňuje uživateli snadnou navigaci mezi funkcemi, aniž by byl zmaten.
Dalším krokem bylo vytvoření blokového diagramu!
Krok 3: Dostat se do práce
Jako každý typický elektronický projekt je blokové schéma nezbytnou součástí v rané fázi návrhu. Pomocí kritérií se mi podařilo sestavit výše uvedené blokové schéma. Každý blok v diagramu představuje funkci v obvodu a šipky ukazují vztah mezi funkcemi. Blokové schéma jako celek poskytuje dobrý přehled o tom, jak obvod bude fungovat.
Dalším krokem bylo začít se rozhodovat o jednotlivých komponentách pro každý blok v blokovém diagramu!
Krok 4: Výběr komponent
Ukázalo se, že v tomto obvodu je poměrně mnoho komponent. Níže jsem vybral některé z nejdůležitějších spolu s vysvětlením, proč jsem si je vybral.
LED diody
Pro binární rozhraní byla volba poměrně přímočará. Věděl jsem, že chci na displej použít LED diody, a přišel jsem na to, že jich potřebuji 16 (v mřížce 4 × 4), abych zobrazil co nejvíce informací. Během mého výzkumu dokonalé LED se APA102 stále objevoval. Jedná se o velmi malou (2 mm x 2 mm) adresovatelnou LED se širokou škálou barev a je poměrně levná. I když jsem s nimi nikdy předtím nepracoval, zdálo se, že jsou pro tento projekt perfektní, a tak jsem se rozhodl je použít.
Mikrokontrolér
Volba mikrokontroléru byla také docela jednoduchá. Mám mnoho zkušeností s používáním Atmega328P-AU v samostatných aplikacích a jeho funkce jsem velmi dobře znal. Jedná se o stejný mikrokontrolér, který se používá v deskách Arduino Nano. Jsem si vědom toho, že pravděpodobně existuje levnější mikrokontrolér, který jsem mohl použít, ale vědomí, že Atmega328 bude mít plnou podporu pro všechny knihovny Arduino, bylo velkým faktorem při jeho výběru pro tento projekt.
RTC (hodiny v reálném čase)
Primárním požadavkem RTC byla přesnost. Věděl jsem, že hodinky nebudou mít žádnou internetovou konektivitu, a proto nebudou schopny se znovu kalibrovat prostřednictvím internetového připojení, uživatel by je musel znovu kalibrovat ručně. Chtěl jsem proto, aby bylo měření času co nejpřesnější. M41T62 RTC má jednu z nejvyšších přesností, jaké jsem mohl najít (± 2 str./min., Což odpovídá ± 5 sekundám za měsíc). Díky kombinaci vysoké přesnosti s kompatibilitou I2C a extrémně nízké spotřeby proudu byl tento RTC dobrou volbou pro tento projekt.
DC-DC Boost Converter
Výběr IC DC-DC Boost Converter byl proveden jednoduše pohledem na obvod a zjištění, jaká napětí a proudy jsou požadovány. Spuštění obvodu na nízké napětí by snížilo spotřebu proudu, ale nemohl jsem jít pod 4,5 V (minimální napětí mikrokontroléru při taktu 16 MHz) a nemohl bych jít nad 4,5 V (maximální napětí RTC). To znamenalo, že jsem musel spustit obvod přesně na 4,5 V, abych komponenty provozoval v rámci jejich doporučených specifikací. Vypočítal jsem, že maximální proud obvodu nepřekročí 250mA. Začal jsem tedy hledat posilovač převodu, který by mohl splňovat požadavky, a rychle jsem narazil na TPS61220. TPS61220 vyžadoval minimální externí komponenty, byl poměrně levný a byl schopen uspokojit požadavky na proud a napětí.
Baterie
Primárním požadavkem na baterii byla velikost. Baterie musela být dostatečně malá, aby se vešla do pouzdra hodinek, aniž by vypadala objemně. Došlo mi, že baterie nesmí překročit 20 mm × 35 mm × 10 mm. S těmito omezeními velikosti a současným požadavkem 250mA byl můj výběr baterií omezen na baterie LiPo. Na Hobbykingu jsem našel baterii „Turnigy nano-tech 300mAh 1S“, kterou jsem se rozhodl použít.
Nabíjecí IC
Na regulátor nabíjení nebyl kladen žádný zvláštní požadavek, kromě toho, že musí být kompatibilní s baterií 1S LiPo. Našel jsem MCP73831T, což je plně integrovaný regulátor nabíjení určený pro jednobunkové nabíjecí aplikace. Jednou z jeho funkcí je schopnost upravit nabíjecí proud pomocí externího odporu, což mi v této aplikaci přišlo docela užitečné.
LiPo ochrana
Chtěl jsem zahrnout monitorování napětí a proudu, aby byla baterie chráněna před nebezpečnými podmínkami přebití a přebití. Existovalo omezené množství integrovaných obvodů, které poskytovaly takové funkce, a jednou z levnějších možností byl integrovaný obvod BQ29700. Vyžadovalo minimální množství externích komponent a obsahovalo veškerou potřebnou ochranu pro jednočlánkovou LiPo baterii.
Nyní, když byly vybrány komponenty, bylo načase vytvořit schéma!
Krok 5: Schéma
Pomocí Altium Designer jsem dokázal sestavit výše uvedené schéma pomocí doporučení z každého datového listu komponenty. Schéma je rozděleno do různých bloků, aby bylo lépe čitelné. Také jsem přidal několik poznámek s důležitými informacemi pro případ, že by někdo jiný chtěl tento design znovu vytvořit.
Dalším krokem bylo vyložení schématu na PCB!
Krok 6: Rozložení DPS
Uspořádání desky plošných spojů se ukázalo jako nejnáročnější část tohoto projektu. Rozhodl jsem se použít 2vrstvou desku plošných spojů, aby se náklady na výrobu desky plošných spojů snížily na minimum. Rozhodl jsem se použít standardní velikost hodinek 36 mm, protože to vypadalo, že se docela dobře hodí k LED diodám. Přidal jsem několik otvorů pro šrouby 1 mm pro zajištění desky plošných spojů v krytu hodinek. Cílem bylo zachovat čistý a dobře vypadající design umístěním všech komponent (samozřejmě kromě LED) na spodní vrstvu. Také jsem chtěl použít absolutně minimální počet průchodů, abych se vyhnul viditelným průchodům v horní vrstvě. To znamenalo, že jsem musel směrovat všechny stopy na jednu vrstvu, přičemž jsem se ujistil, že „hlučné“části obvodu zůstanou mimo stopy citlivých signálů. Také jsem se ujistil, že všechny stopy budou co nejkratší, umístění obtokových kondenzátorů blízko zátěže, použití silnějších stop pro vysoce výkonné komponenty a jinak dodržování všech běžných osvědčených postupů návrhu desek plošných spojů. Směrování zabralo docela dost času, ale myslím, že to dopadlo velmi dobře.
Dalším krokem bylo vytvoření 3D modelu pro pouzdro hodinek!
Krok 7: 3D design
Pouzdro hodinek bylo navrženo po velmi konvenčním, klasickém designu hodinek pomocí Fusion 360. Použil jsem standardní rozteč 18 mm pro řemínek hodinek, aby byly hodinky kompatibilní s řadou dalších řemínků. Výřez pro desku plošných spojů byl navržen o 0, 4 mm větší než samotná deska plošných spojů, aby vyhovovala všem výrobním nepřesnostem. Zahrnul jsem několik šroubových sloupků pro montáž desky plošných spojů a malou hranu pro položení desky plošných spojů. Zajistil jsem zapuštění desky plošných spojů o několik milimetrů shora, aby se zabránilo uvíznutí ostrých hran diod LED na oblečení. Výška pouzdra byla určena výhradně tloušťkou baterie. Zbytek skříně byl navržen tak, aby jednoduše vypadal dobře se zaoblenými hranami a leštěnými rohy. Musel jsem zachovat design pro 3D tisk přátelský, abych jej mohl 3D tisknout doma bez jakéhokoli podpůrného materiálu.
Nyní, když byl hardware dokončen, bylo načase začít pracovat na softwaru!
Krok 8: Kód
Začal jsem kód zahrnutím všech potřebných knihoven. To zahrnuje knihovnu pro komunikaci s RTC a pro ovládání LED diod. Poté jsem pro každý z režimů vytvořil samostatné funkce. Když uživatel přepíná režimy stisknutím tlačítka, program vyvolá funkci odpovídající tomuto režimu. Pokud uživatel ve stanoveném čase nestiskne tlačítko, hodinky přejdou do režimu spánku.
Režim spánku je indikován blikáním všech LED diod, dokud zcela nezhasnou. Použití režimu spánku výrazně prodlužuje životnost baterie a ponechává diody LED vypnuté, když se nepoužívají. Uživatel může hodinky probudit stisknutím horního tlačítka. Když se probudí, hodinky zkontrolují stav baterie, aby zajistily, že nevyžadují nabíjení. Je -li vyžadováno nabíjení, LED diody několikrát před zobrazením času několikrát zablikají červeně. Pokud je baterie pod kritickou úrovní, vůbec se nezapne.
Zbytek času programování směřovalo k tomu, aby ostatní režimy byly co nejintuitivnější. Přišel jsem na to, že nejintuitivnější bude mít stejné tlačítko zodpovědné za stejnou funkčnost ve všech režimech. Po nějakém testování je toto konfigurace tlačítek, se kterou jsem přišel:
- Stiskněte horní tlačítko: Probuzení / cyklování mezi režimy „Čas zobrazení“, „Zobrazit datum“, „Stopky“a „Alarm“.
- Podržení horního tlačítka: Zadejte režim „Nastavit čas“, „Nastavit datum“, „Spustit stopky“nebo „Nastavit budík“.
- Stiskněte spodní tlačítko: Zvyšte jas.
- Podržení spodního tlačítka: Vstupte do režimu „Vybrat barvu“.
Spodní tlačítko je vždy zodpovědné za nastavení jasu a barev, nezávisle na tom, v jakém režimu se nacházíte. Když uživatel vstoupí do režimu „Choose Color“, začnou LED diody procházet všemi možnými barvami RGB. Uživatel může pozastavit animaci a zvolit barvu, kterou upřednostňuje pro konkrétní režim (čas zobrazení červeně, datum zobrazení modře atd.). Barvy mají být uživatelem snadno přizpůsobitelné, aby jim pomohly rozlišit mezi různými režimy.
Nyní, když byl kód dokončen, bylo načase jej nahrát do mikrokontroléru!
Krok 9: Programování
Už bylo skoro na pájení a montáž, ale předtím jsem potřeboval naprogramovat mikrokontrolér. Sledoval jsem tento návod
Vypalte zavaděč na ATmega328P-AU SMD
o tom, jak vypálit bootloader a naprogramovat mikrokontrolér pomocí běžného Arduino Uno jako programátoru.
Prvním krokem bylo přeměnit Arduino Uno na ISP nahráním ukázkového kódu „ArduinoISP“. Použil jsem prkénko společně s programovací zásuvkou a zapojil jsem schéma z tutoriálu. Poté jsem byl schopen vypálit bootloader na mikrokontrolér pouhým stisknutím „Burn Bootloader“v Arduino IDE.
Jakmile měl mikrokontrolér bootloader, jednoduše jsem odstranil stávající mikrokontrolér z Arduino Uno a použil desku Arduino Uno jako USB na sériový adaptér k nahrání kódu do mikrokontroléru v programovací zásuvce. Jakmile bylo nahrávání dokončeno, mohl jsem začít proces pájení.
Dalším krokem bylo shromáždit všechny součásti a spojit je dohromady!
Krok 10: Pájení
Proces pájení byl rozdělen na dvě části. Nejprve bylo třeba pájet spodní vrstvu a poté vrchní vrstvu.
Zajistil jsem PCB hodinek mezi pár prototypových desek pomocí pásky. Tím bylo zajištěno, že se PCB během pájení nepohybuje, což je velmi důležité. Poté jsem umístil pájecí šablonu na desku plošných spojů a použil velké množství pájecí pasty na pokrytí všech pájecích podložek. Pokračoval jsem pomocí tenké pinzety, abych všechny součásti umístil na jejich odpovídající podložky. Potom jsem pomocí horkovzdušné pistole přetavil všechny součásti na místě.
Když byla spodní vrstva pájena, provedl jsem rychlou vizuální kontrolu, abych se ujistil, že pájení bylo úspěšné. Poté jsem překlopil desku a zopakoval proces pájení na druhé straně, tentokrát se všemi LED diodami. Při pájení vrchní vrstvy bylo velmi důležité desku nepřehřívat, protože u všech součástek na spodní straně hrozí riziko spadnutí. Naštěstí všechny součásti zůstaly na svém místě a po pájení tlačítek na místě pomocí běžné páječky byla PCB hotová!
Nyní byl čas na finální montáž!
Krok 11: Sestavení
Sestavení bylo velmi jednoduché. Připojil jsem baterii k desce plošných spojů a vložil baterii a desku s plošnými spoji do 3D tištěného pouzdra. Pokračoval jsem zašroubováním čtyř šroubů do montážních otvorů v každém rohu desky plošných spojů. Poté jsem pomocí 18mm pružinových tyčí připevnil řemínky hodinek a hodinky byly kompletní!
Krok 12: Závěr a vylepšení
Hodinky fungují podle očekávání a jsem velmi spokojený s tím, jak to dopadlo. Doposud jsem s tím neměl žádné problémy a baterie zůstává po celém týdnu používání téměř plně nabitá.
Do hodinek bych mohl v budoucnu přidat další funkce. Protože je port USB připojen k mikrokontroléru, firmware lze kdykoli aktualizovat pomocí nových funkcí. Prozatím však budu nadále používat tuto verzi hodinek a uvidíme, jak to vydrží po delším používání.
Pokud máte k tomuto projektu jakékoli myšlenky, komentáře nebo dotazy, zanechte je níže. Můžete je také poslat na [email protected].
První cena v soutěži Hodiny
Doporučuje:
Islámské modlitby RaspberryPi Watch & Alarm: 15 kroků (s obrázky)
Islámské modlitby RaspberryPi Watch & Alarm: Muslimové na celém světě mají každý den pět modliteb a každá modlitba se musí konat v určitou denní dobu. díky eliptickému způsobu, jakým se naše planeta pohybuje kolem Slunce, což způsobuje, že se čas vycházejícího a klesajícího slunce v průběhu roku liší
Binary Tree Morse Decoder: 7 kroků (s obrázky)
Binary Tree Morse Decoder: a.articles {font-size: 110,0%; font-weight: bold; styl písma: kurzíva; textová dekorace: žádná; color-background: red;} a.articles: hover {background-color: black;} This instructable explains how to decode Morse Code using a Arduino Uno R3.T
Náramkové hodinky Vortex Watch: Infinity Mirror: 10 kroků (s obrázky)
Náramkové hodinky Vortex Watch: Infinity Mirror: Cílem tohoto projektu bylo vytvořit nositelnou verzi zrcadlových hodin s nekonečnem. Svými LED diodami RGB indikuje čas přiřazením hodin, minut a sekund červenému, zelenému a modrému světlu a překrytím těchto odstínů
Nerd Watch: 10 kroků (s obrázky)
Nerd Watch: Nerd Watch zobrazuje čas binárně po stisknutí tlačítka a vytvořil jej Sam DeRose během letní stáže na našem velitelství. Hodinky ukazují hodinu a minuty blikáním dvou LED diod za sebou, což představuje dvě 4bitová binární čísla (v
TTGO T-Watch: 9 kroků (s obrázky)
TTGO T-Watch: Tento návod ukazuje, jak začít hrát s TTGO T-Watch