Obsah:
- Zásoby
- Krok 1: Myšlienka
- Krok 2: Trochu teórie binárnych hodiniek
- Krok 3: Dostať sa do práce
- Krok 4: Výber komponentov
- Krok 5: Schéma
- Krok 6: Rozloženie DPS
- Krok 7: 3D návrh
- Krok 8: Kód
- Krok 9: Programovanie
- Krok 10: Spájkovanie
- Krok 11: Zostavenie
- Krok 12: Záver a zlepšenia
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Nedávno som sa zoznámil s konceptom binárnych hodiniek a začal som robiť nejaký prieskum, aby som zistil, či by som si ich nemohol postaviť sám. Nepodarilo sa mi však nájsť existujúci dizajn, ktorý by bol funkčný aj štýlový súčasne. Preto som sa rozhodol vytvoriť svoj vlastný dizajn úplne od začiatku!
Zásoby
Všetky súbory pre tento projekt:
Knižnice pre kód Arduino si môžete stiahnuť z GitHubu tu:
Knižnica R41 M41T62
Knižnica FastLED
Knižnica LowPower
Krok 1: Myšlienka
Nedávno som narazil na nasledujúce video:
DIY binárne náramkové hodinky
Video vyššie ukazuje základné domáce binárne hodinky. Netušil som, že niečo také existuje, ale po ďalšom skúmaní témy binárnych hodiniek som rýchlo zistil, že existuje veľa rôznych prevedení! Chcel som si postaviť jeden pre seba, ale nenašiel som dizajn, ktorý by sa mi páčil. Binárne hodinky, ktoré som našiel, postrádali veľa funkcií a nevyzerali obzvlášť dobre. Preto som sa rozhodol navrhnúť svoj vlastný úplne od začiatku!
Prvým krokom bolo stanovenie kritérií pre môj návrh. Na toto som prišiel:
- Binárne rozhranie RGB
- Zobrazenie času (s veľmi presným časomierou)
- Zobrazenie dátumu
- Funkcia stopiek
- Funkcia alarmu
- Výdrž batérie najmenej 2 týždne
- USB nabíjanie
- Softvér ľahko prispôsobiteľný užívateľom
- Čistý a jednoduchý dizajn
Tieto kritériá sa stali základom celého projektu. Ďalším krokom bolo zistiť, ako chcem, aby hodinky fungovali!
Krok 2: Trochu teórie binárnych hodiniek
Plán bol jednoduchý. Binárne hodinky by fungovali rovnako ako bežné hodinky, ibaže rozhranie by bolo binárne, konkrétne BCD (binárne kódované desatinné miesto). BCD je typ binárneho kódovania, kde každá desatinná číslica je reprezentovaná pevným počtom bitov. Potrebujem 4 bity, aby som mohol reprezentovať číslicu od 0 do 9. A za štandard
hh: mm
časový formát, potrebujem 4 z týchto číslic. To znamená, že potrebujem celkom 16 bitov, ktoré budú reprezentované 16 diódami LED.
Keď si na to zvyknete, čítanie času v BCD je veľmi jednoduché. Riadok v spodnej časti hodiniek predstavuje najmenej významný bit (1) a riadok v hornej časti je najvýznamnejší bit (8). Každý stĺpec predstavuje číslicu v
hh: mm
formát času. Ak LED dióda svieti, túto hodnotu započítate. Ak LED dióda nesvieti, ignorujete ju.
Ak chcete prečítať prvú číslicu, jednoducho súčet všetkých aktivovaných LED zodpovedajúcich hodnôt v prvom (najviac vľavo) stĺpci. To isté urobte pre ostatné číslice zľava doprava. Teraz ste si prečítali čas v BCD!
Tento princíp bude rovnaký pre ostatné funkcie hodiniek. Použitie RGB LED diód pomôže rozlíšiť rôzne funkcie a režimy pomocou rôznych farieb. Farby si vyberá užívateľ a dajú sa ľahko prispôsobiť akejkoľvek palete farieb, ktorú uprednostňujú. To umožňuje užívateľovi jednoduchú navigáciu vo funkciách bez toho, aby bol zmätený.
Ďalším krokom bolo vytvorenie blokového diagramu!
Krok 3: Dostať sa do práce
Ako každý typický projekt v oblasti elektroniky, blokový diagram je zásadnou súčasťou v ranej fáze návrhu. Pomocou kritérií sa mi podarilo zostaviť vyššie uvedený blokový diagram. Každý blok v diagrame predstavuje funkciu v obvode a šípky znázorňujú vzťah medzi funkciami. Blokový diagram ako celok poskytuje dobrý prehľad o tom, ako obvod bude fungovať.
Ďalším krokom bolo začať rozhodovať o jednotlivých komponentoch pre každý blok v blokovej schéme!
Krok 4: Výber komponentov
Ukázalo sa, že v tomto obvode je pomerne veľa komponentov. Nižšie som vybral niektoré z najdôležitejších spolu s vysvetlením, prečo som si ich vybral.
LED diódy
Pokiaľ ide o binárne rozhranie, voľba bola pomerne jednoduchá. Vedel som, že na displej chcem použiť LED diódy a prišiel som na to, že ich potrebujem 16 (v mriežke 4 × 4), aby sa zobrazilo čo najviac informácií. Počas môjho výskumu perfektnej LED diódy sa APA102 stále objavoval. Je to veľmi malá (2 mm x 2 mm) adresovateľná LED dióda so širokou škálou farieb a je pomerne lacná. Napriek tomu, že som s nimi nikdy predtým nepracoval, zdalo sa, že sa pre tento projekt perfektne hodia, a tak som sa rozhodol ich využiť.
Mikrokontrolér
Voľba mikrokontroléra bola tiež veľmi jednoduchá. Mám veľa skúseností s používaním Atmega328P-AU v samostatných aplikáciách a jeho funkcie som veľmi dobre poznal. Je to ten istý mikrokontrolér, ktorý sa používa v doskách Arduino Nano. Som si vedomý toho, že pravdepodobne existuje lacnejší mikrokontrolér, ktorý som mohol použiť, ale vedomie, že Atmega328 bude mať plnú podporu pre všetky knižnice Arduino, bolo veľkým faktorom pri jeho výbere pre tento projekt.
RTC (hodiny v reálnom čase)
Primárnou požiadavkou na RTC bola presnosť. Vedel som, že hodinky nebudú mať žiadne internetové pripojenie, a preto sa nebudú schopné samy kalibrovať prostredníctvom internetového pripojenia, používateľ by ich musel znova kalibrovať ručne. Preto som chcel, aby bol časomiera čo najpresnejšia. M41T62 RTC má jednu z najvyšších presností, aké som mohol nájsť (± 2 str./min., Čo je ekvivalent ± 5 s za mesiac). Vďaka kombinácii vysokej presnosti s kompatibilitou I2C a extrémne nízkej spotreby prúdu je tento RTC dobrou voľbou pre tento projekt.
DC-DC Boost Converter
Voľba IC zosilňovača DC-DC zosilňovača sa vykonala jednoduchým pohľadom na obvod a zistením, aké napätia a prúdy sú potrebné. Prevádzka obvodu na nízke napätie by znížila spotrebu prúdu, ale nemohol som ísť pod 4,5 V (minimálne napätie mikrokontroléra pri takte 16 MHz) a nemohol by som ísť nad 4,5 V (maximálne napätie RTC). To znamenalo, že som musel spustiť obvod presne na 4,5 V, aby som komponenty prevádzkoval v rámci ich odporúčaných špecifikácií. Vypočítal som, že maximálny prúd obvodu neprekročí 250mA. Začal som teda hľadať zosilňovač, ktorý by mohol spĺňať požiadavky, a rýchlo som narazil na TPS61220. TPS61220 vyžadoval minimálne externé komponenty, bol dosť lacný a dokázal uspokojiť požiadavky na prúd a napätie.
Batéria
Hlavnou požiadavkou na batériu bola veľkosť. Batéria musela byť dostatočne malá, aby sa vošla do puzdra hodiniek bez toho, aby pôsobila objemne. Zistil som, že batéria nemôže prekročiť 20 mm × 35 mm × 10 mm. Pri týchto obmedzeniach veľkosti a súčasnej požiadavke 250 mA bol môj výber batérií obmedzený na batérie LiPo. Na Hobbykingu som našiel batériu „Turnigy nano-tech 300mAh 1S“, ktorú som sa rozhodol použiť.
Nabíjací IC
Na regulátor nabíjania sa nevzťahovali žiadne osobitné požiadavky, okrem toho, že musí byť kompatibilný s batériou 1S LiPo. Našiel som MCP73831T, ktorý je plne integrovaným regulátorom nabíjania určený pre jednobunkové nabíjacie aplikácie. Jednou z jeho funkcií je schopnosť nastaviť nabíjací prúd pomocou externého odporu, čo sa mi v tejto aplikácii zdalo dosť užitočné.
LiPo ochrana
Chcel som zahrnúť monitorovanie napätia a prúdu, aby som batériu chránil pred nebezpečnými podmienkami prebitia a prebitia. Existovalo obmedzené množstvo integrovaných obvodov, ktoré poskytovali také funkcie, a jednou z lacnejších možností bol IC BQ29700. Vyžadovalo to minimálne množstvo externých komponentov a obsahovala všetku potrebnú ochranu pre jednobunkovú LiPo batériu.
Teraz, keď boli zvolené komponenty, bolo načase vytvoriť schému!
Krok 5: Schéma
Pomocou Altium Designer som dokázal zostaviť vyššie uvedenú schému pomocou odporúčaní z každého technického listu komponentu. Schéma je rozdelená do rôznych blokov, aby bola čitateľnejšia. Tiež som pridal niekoľko poznámok s dôležitými informáciami pre prípad, že by niekto iný chcel tento dizajn znova vytvoriť.
Ďalším krokom bolo rozloženie schémy na DPS!
Krok 6: Rozloženie DPS
Rozloženie DPS sa ukázalo ako najnáročnejšia časť tohto projektu. Rozhodol som sa použiť dvojvrstvovú dosku PCB, aby som znížil náklady na výrobu DPS na minimum. Rozhodol som sa použiť štandardnú veľkosť hodiniek 36 mm, pretože sa zdalo, že celkom dobre pasuje na LED diódy. Pridal som niekoľko 1 mm otvorov pre skrutky na zaistenie DPS v kryte hodiniek. Cieľom bolo zachovať čistý a dobre vyzerajúci dizajn umiestnením všetkých komponentov (samozrejme okrem diód LED) na spodnú vrstvu. Tiež som chcel použiť absolútne minimálny počet priechodov, aby som sa vyhnul viditeľným priechodom v hornej vrstve. To znamenalo, že som musel nasmerovať všetky stopy na jednu vrstvu, pričom som sa uistil, že „hlučné“časti obvodu zostanú mimo citlivých signálových stôp. Tiež som sa ubezpečil, že všetky stopy budú čo najkratšie, umiestnením obtokových kondenzátorov blízko záťaže, použitím silnejších stôp pre komponenty s vysokým výkonom a inak dodržiavam všetky bežné osvedčené postupy pri návrhu DPS. Trasa trvala dosť dlho, ale myslím si, že to dopadlo veľmi dobre.
Ďalším krokom bolo vytvorenie 3D modelu pre kryt hodiniek!
Krok 7: 3D návrh
Kryt hodiniek bol navrhnutý podľa veľmi konvenčného, klasického, hodinkového dizajnu pomocou Fusion 360. Na remienok hodiniek som použil štandardný rozstup 18 mm, aby boli hodinky kompatibilné s veľkým počtom ďalších remienkov. Výrez pre DPS bol navrhnutý o 0, 4 mm väčší ako samotný DPS, aby sa prispôsobil všetkým výrobným nepresnostiam. Priložil som niekoľko skrutkových stĺpikov na montáž dosky plošných spojov a malú hranu, na ktorú sa doska plošných spojov položí. Uistil som sa, že dosku s plošnými spojmi zapustíte o niekoľko milimetrov zhora, aby sa zabránilo zaseknutiu ostrých hrán LED na oblečení. Výška krytu bola určená výlučne hrúbkou batérie. Zvyšok krytu bol navrhnutý tak, aby jednoducho vyzeral dobre so zaoblenými hranami a leštenými rohmi. Musel som zachovať priateľský dizajn voči 3D tlači, aby som ho mohol 3D tlačiť doma bez akéhokoľvek podporného materiálu.
Teraz, keď je hardvér hotový, bolo načase začať pracovať na softvéri!
Krok 8: Kód
Kód som začal zahrnutím všetkých potrebných knižníc. To zahŕňa knižnicu na komunikáciu s RTC a na ovládanie LED diód. Potom som pre každý z režimov vytvoril samostatné funkcie. Keď používateľ prepne režimy stlačením tlačidla, program vyvolá funkciu zodpovedajúcu tomuto režimu. Ak používateľ v určenom čase nestlačí tlačidlo, hodinky sa prepnú do režimu spánku.
Režim spánku je indikovaný zhasnutím všetkých LED diód, kým nie sú úplne vypnuté. Použitie režimu spánku výrazne zvyšuje životnosť batérie a necháva diódy LED vypnuté, keď sa nepoužívajú. Používateľ môže hodinky prebudiť stlačením horného tlačidla. Keď sa hodinky prebudia, skontrolujú úroveň batérie, aby sa ubezpečili, že nevyžadujú nabíjanie. Ak je potrebné nabíjanie, diódy LED niekoľkokrát zablikajú pred zobrazením času. Ak je batéria pod kritickou úrovňou, vôbec sa nezapne.
Zvyšok času programovanie viedlo k tomu, aby boli ostatné režimy čo najintuitívnejšie. Prišiel som na to, že najintuitívnejšie bude mať rovnaké tlačidlo zodpovedné za rovnakú funkcionalitu vo všetkých režimoch. Po nejakom testovaní som prišiel s touto konfiguráciou tlačidiel:
- Stláčanie horného tlačidla: Prebudenie / cyklus medzi režimami „Čas zobrazenia“, „Zobraziť dátum“, „Stopky“a „Alarm“.
- Podržanie horného tlačidla: Zadajte režim „Nastaviť čas“, „Nastaviť dátum“, „Spustiť stopky“alebo „Nastaviť budík“.
- Stlačenie spodného tlačidla: Zvýšte jas.
- Podržanie spodného tlačidla: Vstúpte do režimu „Vybrať farbu“.
Spodné tlačidlo je vždy zodpovedné za úpravu jasu a farieb, bez ohľadu na to, v ktorom režime sa nachádzate. Keď používateľ vstúpi do režimu „Choose Color“, diódy LED začnú cyklovať všetkými možnými farbami RGB. Užívateľ môže pozastaviť animáciu a zvoliť farbu, ktorú uprednostňuje pre konkrétny režim (červený čas zobrazenia, modrý dátum zobrazenia atď.). Farby sú navrhnuté tak, aby ich užívateľ mohol ľahko prispôsobiť, aby im pomohol rozlíšiť rôzne režimy.
Teraz, keď bol kód hotový, bolo načase ho nahrať do mikrokontroléra!
Krok 9: Programovanie
Už bolo skoro na spájkovanie a montáž, ale predtým som potreboval naprogramovať mikrokontrolér. Nasledoval som tento návod
Vypálte bootloader na ATmega328P-AU SMD
o tom, ako napáliť bootloader a naprogramovať mikrokontrolér pomocou bežného Arduino Uno ako programátora.
Prvým krokom bolo zmeniť Arduino Uno na ISP nahraním vzorového kódu „ArduinoISP“. Použil som breadboard spolu s programovacou zásuvkou a zapojil som schému z tutoriálu. Potom som dokázal napáliť bootloader na mikrokontrolér jednoduchým stlačením „Burn Bootloader“v Arduino IDE.
Akonáhle mal mikrokontrolér bootloader, jednoducho som odstránil existujúci mikrokontrolér z Arduino Uno a použil som dosku Arduino Uno ako adaptér USB na sériový prenos na nahranie kódu do mikrokontroléra v programovacej zásuvke. Po dokončení nahrávania som mohol začať proces spájkovania.
Ďalším krokom bolo zhromaždenie všetkých komponentov a ich spájkovanie!
Krok 10: Spájkovanie
Proces spájkovania bol rozdelený na dve časti. Najprv je potrebné spájkovať spodnú vrstvu a potom hornú vrstvu.
PCB hodiniek som zaistil páskou medzi pár prototypových dosiek. To zaistilo, že sa PCB počas spájkovania nepohybuje, čo je veľmi dôležité. Potom som umiestnil spájkovaciu šablónu na DPS a použil som veľké množstvo spájkovacej pasty na pokrytie všetkých spájkovacích podložiek. Pokračoval som pomocou tenkej pinzety na umiestnenie všetkých komponentov na ich zodpovedajúce podložky. Potom som pomocou tepelnej pištole pretavil spájku na mieste.
Keď bola spodná vrstva spájkovaná, vykonal som jej rýchlu vizuálnu kontrolu, aby som sa ubezpečil, že spájkovanie bolo úspešné. Potom som preklopil dosku a zopakoval proces spájkovania na druhej strane, tentoraz so všetkými LED diódami. Pri spájkovaní vrchnej vrstvy bolo veľmi dôležité, aby sa doska neprehriala, pretože hrozí riziko spadnutia všetkých komponentov v spodnej časti. Našťastie všetky komponenty zostali na svojom mieste a po spájkovaní tlačidiel na mieste pomocou bežnej spájkovačky bola DPS hotová!
Teraz bol čas na konečnú montáž!
Krok 11: Zostavenie
Montáž bola veľmi jednoduchá. Pripojil som batériu k DPS a umiestnil som batériu a DPS do priestoru s 3D tlačou. Pokračoval som v zaskrutkovaní štyroch skrutiek do montážnych otvorov v každom rohu dosky plošných spojov. Potom som remienky hodiniek pripevnil pomocou 18 mm pružinových tyčí a hodinky boli hotové!
Krok 12: Záver a zlepšenia
Hodinky fungujú podľa očakávania a som veľmi spokojný s tým, ako dopadli. Doteraz som s ním nemal žiadne problémy a batéria zostáva po celom týždni používania takmer úplne nabitá.
V budúcnosti môžem k hodinkám pridať ďalšie funkcie. Pretože je port USB pripojený k mikrokontroléru, firmvér je možné kedykoľvek aktualizovať pomocou nových funkcií. Zatiaľ však budem naďalej používať túto verziu hodiniek a uvidíme, ako to vydrží po dlhšom používaní.
Ak máte akékoľvek otázky, komentáre alebo otázky k tomuto projektu, zanechajte ich nižšie. Môžete ich tiež poslať na [email protected].
Prvá cena v súťaži o hodiny
Odporúča:
Morder dekodér Binary Tree: 7 krokov (s obrázkami)
Morder dekodér Binary Tree: a.články {veľkosť písma: 110,0%; font-weight: bold; štýl písma: kurzíva; textová dekorácia: žiadna; farba pozadia: červená;} a.články: vznášať sa {farba-pozadia: čierna;} Tento návod vysvetľuje, ako dekódovať Morseovu abecedu pomocou Arduino Uno R3.T
Vortex Watch: Náramkové hodinky s nekonečným zrkadlom: 10 krokov (s obrázkami)
Náramkové hodinky Vortex Watch: Infinity Mirror: Cieľom tohto projektu bolo vytvoriť nositeľnú verziu zrkadlových hodín s nekonečným okrajom. Pomocou svojich LED diód RGB indikuje čas priradením hodín, minút a sekúnd červenému, zelenému a modrému svetlu a prekrývaním týchto odtieňov
Nerd Watch: 10 krokov (s obrázkami)
Nerd Watch: Nerd Watch zobrazuje čas v binárnom formáte po stlačení tlačidla a vytvoril ho Sam DeRose počas letnej stáže v našom sídle. Hodinky zobrazujú hodinu a minúty blikaním dvoch diód LED za sebou, čo predstavuje dve 4-bitové binárne čísla (v
Nixie Tube Watch: 7 krokov (s obrázkami)
Nixie Tube Watch: Tento rok som postavil hodinky, aby som zistil, či dokážem vyrobiť niečo, čo je funkčné. Mal som 3 hlavné konštrukčné požiadavky Udržať presný čas Mať celodennú batériu Byť dostatočne malý na pohodlné nosenie Podarilo sa mi splniť prvé 2 požiadavky, ako
Hodinky Arduino Apple Watch: 6 krokov (s obrázkami)
Arduino Apple Watch: Chcel som inteligentné hodinky, ktoré mi budú zobrazovať upozornenia z iPhonu, budú dostatočne malé na nosenie a budú mať nabíjateľnú batériu, ktorá vydrží najmenej jeden deň. Vytvoril som si vlastné hodinky Apple na základe Arduina. Jedná sa o inteligentné hodinky založené na mini Arduino