Obsah:
- Krok 1: Navrhování hodin
- Krok 2: Navrhování elektroniky
- Krok 3: Výroba elektroniky
- Krok 4: Kódování hodin
- Krok 5: Navrhování souborů Laser Cut
- Krok 6: Konstrukce hodin
- Krok 7: Závěrečné myšlenky
Video: NeoClock: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Jedná se o stavbu hodin pomocí fantastických neopixelových prstenů od společnosti Adafruit. Zábavné na těchto hodinách je, že ve skutečnosti mají dva prstence neopixelů, jeden pro určování hodin a druhý pro minuty, sekundy a milisekundy. Hodiny udržují perfektní čas pomocí čipu DS3234 DeadOn Real Time Clock od Sparkfun. Snadné sestavení a zábavné úpravy. Doufám, že to bude inspirovat ostatní ke stavbě hodin nebo jiného umění pomocí neopixelních prstenů.
Pro ty z vás, kteří chtějí získat všechny mé soubory v jednoduchém formátu pro správu, je můžete stáhnout z mého úložiště github pro tento projekt na adrese
Krok 1: Navrhování hodin
Od začátku jsem věděl, že chci použít alespoň dva prsteny neopixelů. Po nějaké práci jsem se rozhodl, že nejlepší design bude mít jeden prsten uvnitř druhého, který zachovává původní podobu hodin. Menším prstenem budou hodiny a zbývající čas zůstane na větším prstenu. Některé aspekty návrhu zahrnovaly náklady na neopixely, požadavek na energii, velikost kusů řezaných laserem a jaký druh umění jsem na to chtěl vložit.
Po dokončení tohoto kroku jsem se rozhodl, že potřebuji porozumět elektronice, než jsem vytvořil plány pro řezání těla hodin laserem.
Krok 2: Navrhování elektroniky
Navrhování elektroniky sestávalo z znalosti předem prvků, které jsem chtěl v hodinách:
- Neopixelové prsteny (60 a 24)
- Arduino (mozek)
- Regulace hodin (arduinos neudržuje dobrý čas)
- Řízení spotřeby
Požadavky na velikost a výkon neopixelů jsou dobře zdokumentovány. Vzhledem k tomu, že běží na 5V DC, rozhodl jsem se jít s 5V Arduino a věci si pro sebe zjednodušit. S ohledem na prostor jsem se rozhodl prototypovat na běžném Arduino Uno, ale pro konečnou elektroniku jsem si vybral Arduino Mini.
První iterace tohoto projektu pocházela přímo ze stránky Adafruit NeoPixel Basic Connections. Pro zjednodušení jsem vložil diagram z webu. Z toho jsou důležité dvě věci:
- Aby se zabránilo počátečnímu otřesu, který by poškodil pixely, je zapotřebí kondenzátor 1000uF.
- Na prvním pixelu 60 počítacího prstence je potřeba odpor 470 ohmů (tento odpor je zabudován do 24 čítacího prstence)
Adafruit má také sadu osvědčených postupů NeoPixel, které byste si měli přečíst, než budete pokračovat v návrhu.
Udržování času na hodinách je dalším problémem. Vestavěné hodiny na arduinu nestačí k udržení dobrého času po dlouhou dobu. Horším problémem je, že čas na arduinu může být nutné resetovat pokaždé. Počítače tento problém řeší pomocí malé baterie na hodinovém čipu, která udržuje čas mezi výpadky napájení. V minulosti jsem používal něco jako ChronoDot od Adafruit. Ale v tomto případě jsem chtěl výmluvu k použití DS3234 (DeadOn RTC) od SparkFun. Pokud chcete integrovat data do hodin, můžete také uchovávat informace o datu na DeadOn RTC.
Nakonec správa napájení potřebovala určitou pozornost. Už jsem věděl, že všechno musí být 5V, ale množství potřebného proudu se zdálo být záhadou. Běžným regulátorem napětí ve většině projektů je L7805. To bude trvat napětí až 24V a maximální proud až 1,5A. Věděl jsem, že se mi povaluje mladinová stěna 1,5 A, takže jsem se rozhodl, že to bude perfektní (a levný!) Regulátor napětí pro projekt.
Zbývající kusy pocházely z mé krabice s díly nebo z Radio Shacku. Zahrnovaly dráty, přepínače a DC napájecí konektor.
Krok 3: Výroba elektroniky
Úplný seznam elektroniky, kterou jsem si koupil pro stavbu tohoto projektu, najdete v mém úložišti github zde: Electronics Parts List. Obsahuje odkazy na produktovou stránku pro každý kus a obsahuje některé další informace včetně SKU produktu. Rychle jsem to prototypoval na prkénku a přesunul se na laserové řezání a stavbu, než pořídím nějaké obrázky. Postavil jsem ho však tak, aby se dal snadno rozebrat, takže jsem pro vás rozdělil kousky na fotografiích výše.
Podívejte se pozorně na obrázky, protože dráty byly záměrně ohnuty tak, aby byly snadno sledovatelné a aby celý profil elektroniky byl tenký. Provedení této počáteční prototypace před návrhem řezání laserem mi umožnilo zkontrolovat tloušťku dílů, abych mohl zjistit konečné rozměry těla hodin.
Všimnete si, že jsem vytvořil několik vlastních prkének. Pokusil jsem se vyfotit zadní stranu těchto desek, abyste je mohli zopakovat. Můžete si koupit sortiment prkének, jako jsou tyto, za pár peněz a přizpůsobit je vašemu projektu.
Zapojení je přímočaré, ale důležité věci, které je třeba si z obrázků pamatovat, jsou tyto:
- Přepínače Mode a Set budou potřebovat stahovací odpory. Použil jsem 2,21Ohm odpory, které jsem měl kolem sebe, ale jakýkoli malý odpor bude fungovat (nejlépe ne méně než 1 kOhm). Tím se stabilizují připojené vstupní kolíky Arduina, takže když se dostanou vysoko, je to odlišitelné od šumu.
- Čtvercová vlna (SQW) na DS3234 byla uzemněna, protože se nepoužívá.
- Síla z L7805 je vložena do Arduino Mini v RAW pinu. Vždy dávejte sílu, která přichází do Arduina, do RAW.
- První pixel 60 neopixelového prstence má odpor 470 Ohmů, aby se omezilo jakékoli poškození prvního pixelu v důsledku špiček dat. To by neměl být problém, protože neopixel s 24 čísly už na to má vestavěný odpor, ale je to bezpečnější než líto.
- Přepínače Mode a Set jsou okamžité tlačítkové spínače SPST
Barvy vodičů jsou:
- Červená: +5 V DC
- Černá: Ground
- Zelená: Data
- Žlutá, modrá, bílá: Speciální vodiče pro DS3234
Pokud používáte neopixely poprvé, měli byste si pamatovat, že je lze považovat za dlouhý řetězec. Může se tedy zdát divné mluvit o „prvním pixelu“v prstenu, ale ve skutečnosti je v řetězcích začátek a konec každého řetězce. V tomto projektu je 24 pixelů malého prstence na prvním místě a 60 pixelů většího prstence následuje. To opravdu znamená, že mám řetězec 84 neopixelů.
Pro zapojení na Arduino Mini:
- DS3234 se připojuje na piny 10 - 13
- Přepínače Mode a Set jsou na pinech 2 a 3
- Data neopixelů pocházejí z pinu 6.
Doporučuji také umístit 6 záhlaví na spodní část Arduino Mini, abyste je mohli naprogramovat pomocí kabelu FTDI.
Důležitá poznámka k proudu: Tyto hodiny vyžadují hodně. Jsem si jistý, že bych to mohl vyřešit, ale moje praktická zkušenost je, že cokoli rovného nebo menšího než 500mA nakonec způsobí hnědé výstupy. To se projevuje tím, že hodiny blikají šílenými barvami a nedodržují čas. Moje konečná mladina je 12 V a 1,5 A a nikdy jsem s tím neměl problém. 1,5 A je však limit, který regulátor napětí (a další části) vezme. Nepřekračujte tedy tuto částku.
Krok 4: Kódování hodin
Úplný kód hodin najdete v kódu NeoClock na GitHubu. Zahrnul jsem soubor sem, ale jakékoli změny se budou dít v úložišti.
Zjistil jsem, že psaní kódu může být skličující, pokud se pokusíte udělat všechno najednou. Místo toho se snažím vycházet z fungujícího příkladu a vytvářet funkce tak, jak je potřebuji. Než se do toho pustím, chci zdůraznit, že můj kód pochází z kombinace mnoha příkladů z následujících úložišť a fóra Arduino CC. Vždy dávejte kredit tam, kde je splatný!
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/zeroeth/time_loop
- https://github.com/sparkfun/DeadOn_RTC
Nějaký ukázkový kód z těchto úložišť najdete v mém adresáři Code examples
Pořadí operací, které jsem použil k sestavení kódu, vypadalo přibližně takto:
- Potvrďte, že neopixely fungují pomocí testu Strand Test
- Pokuste se spustit hodiny s kódem časové smyčky
- Upravte hodiny tak, aby fungovaly na dvou prstencích místo na jednom
- Přidejte DS3234, abyste udrželi čas pomocí příkladu DeadOn RTC
- Přidejte režim a nastavte přepínače
- Přidejte kód Debounce pomocí nápovědy k Arduion Debounce
- Přidejte několik barevných motivů pro LED diody hodin
- Přidejte nějaké animace pro značky 0, 15, 30 a 45 minut
- Přidejte k hodinám body kompasu pro orientaci značek 0, 15, 30 a 45 minut
Pokud chcete vidět, jak jsem tento kód vytvořil, můžete ve skutečnosti použít GitHub k prohlížení každého potvrzení kódu. Historie hodin je v historii potvrzení.
Přidávání barevných schémat bylo zábavné, ale nakonec jsem do nabídky zařadil pouze čtyři z nich. Každé téma nastavuje konkrétní barvu „hodinových ručiček“na hodinu, minutu, sekundu a milisekundu. Možnosti jsou zde opravdu nekonečné, ale zahrnoval jsem témata (názvy metod jsou uvedeny):
- setColorBlue
- setColorRed
- setColorCyan
- setColorOrange
Tyto další metody však najdete v kódu:
- setColorPrimary
- setColorRoyal
- setColorTequila
Přidaly se animace, protože se mi líbila myšlenka, že staré hodiny zazvoní na čtyřech patnáctiminutových bodech hodin. Pro tyto hodiny jsem vytvořil následující animace:
- 15 minut: Vybarvěte prsteny červeně
- 30 minut: Vybarvěte prsteny zeleně
- 45 minut: Vybarvěte prsteny modře
- Top of the Hour: Do a rainbow across the two rings
Ukázalo se, že použitelnost je problém s hodinami, protože nikdo nedokázal hodiny orientovat. Jsou to přece jen dva prstence LED. Abych problém vyřešil, přidal jsem do hodin body kompasu. Tím se zlepšila schopnost hodně říci času. Kdybych o tom věděl před odesláním laserem řezaných kusů, mohl bych místo toho něco přidat do umění. Ukazuje se však, že ve tmě nemůžete umění tak dobře vidět, takže mít body kompasu opravdu pomáhá. Je třeba vzít v úvahu, že když se rozhodnete barvit pixel, měli byste nejprve zachytit aktuální barvu a vytvořit novou smíšenou barvu. Díky tomu působí přirozeněji.
Jeden poslední kousek je o milisekundách. Milisekundy na Arduinu vycházejí z interního krystalu Arduino a ne z DS3234. Je na vás, zda chcete zobrazit milisekundy nebo ne, ale já jsem tak učinil, hodiny vždy vypadaly, že něco dělají. Možná vám bude vadit, že se milisekundy a sekundy ne vždy shodují, ale v praxi mi to nikdo při pohledu na hodiny nikdy nezmínil a myslím, že to vypadá hezky.
Krok 5: Navrhování souborů Laser Cut
Při návrhu laserem řezaných pilníků jsem musel vzít v úvahu dvě věci. Prvním byl materiál, ze kterého jsem ho chtěl postavit, a druhým bylo, jak bude postaven. Věděl jsem, že chci povrchovou úpravu dřeva s akrylátem rozptylovat neopixely. Abych zjistil materiál, nejprve jsem si objednal nějaké vzorky od Ponoko:
- 1x dýha MDF - ořech
- 1x dýha MDF - třešeň
- 1x akryl - světle šedá
- 1x Akryl - Opál
Výběr dřeva mi umožnil zjistit, jak bude vypadat rastrování a jak bude vypadat popálení na straně hodin. Akryl mi nechal vyzkoušet difúzi neopixelů a porovnat, jak by to vypadalo proti dřevu. Nakonec jsem se rozhodl pro Třešňové dřevo s opálovým akrylem.
Rozměry hodin byly dány hlavně velikostí neopixelních prstenů. To, co jsem nevěděl, bylo, jak silná musí být, aby se vešla do elektroniky. Když jsem postavil elektroniku a věděl, že dřevo je silné asi 5,5 mm, rozhodl jsem se, že potřebuji asi 15 mm prostoru uvnitř hodin. To znamenalo tři vrstvy dřeva. Ale vzhledem k tomu, že přední a zadní část již zabírala většinu prostoru v mém návrhu, potřeboval jsem ty prsteny rozbít na „žebra“, která bych později mohl slepit.
Použil jsem InkScape k vykreslení šablony poskytnuté Ponoko. Po nakreslení těla hodin jsem se pustil do kreslení stromu ručně. Nemohl jsem importovat původní obrázek, který mě inspiroval, ale nebylo to strašné přijít na to, jak něco podobného udělat sám.
Náklady na materiál byly jen asi 20 dolarů, ale náklady na řezání vyšly asi o 100 dolarů více. Přispěly k tomu dvě věci:
- Křivky a kruhy jsou dražší, protože stroj se pohybuje ve dvou osách a tento design má spoustu křivek
- Rasterizace vyžaduje mnoho průchodů tam a zpět napříč skladbou. Když to zahodím, ušetří to nejvíc peněz, ale líbilo se mi to.
Po dokončení návrhu jsem poslal soubory EPS do Ponoko a moje kousky byly hotové asi o týden později.
Všimněte si, že jsem v návrhu nezahrnul přepínače Mode a Set ani DC Power Jack. Když jsem to odeslal, stále jsem se nerozhodl pro ty části. Abych měl větší flexibilitu, nechal jsem je a rozhodl jsem se, že je později provrtám ručně.
Krok 6: Konstrukce hodin
Když dorazily všechny kusy, postavil jsem hodiny. Prvním krokem bylo tělo hodin, které vyžadovalo, abych vyrazil žebra a přilepil je na zadní a přední stranu. Na zadní stranu jsem dal dvě vrstvy žeber a na přední jednu vrstvu a nastavil je lepidlem na dřevo. Na přední stranu jsem použil lepidlo na dřevo, abych spojil akrylové prsteny a dřevěné kruhy dohromady. Měl jsem náhradní středový kus, který jsem odřízl jako polotovar, který se hodil při stavbě. Přilepil jsem to na zadní část kusu stromu a to mi dalo místo, kde bych později mohl přilepit neopixely.
Když bylo tělo postaveno, rozhodl jsem se vyvrtat otvory pro vypínače a napájecí konektor. Trochu geometrie (jak je vidět na obrázku) mi pomohla vše zarovnat. Při vrtání (velmi opatrně!) Jsem zvenčí použil samostatný kus dřeva a udělal otvory a zalepil vypínače a zvedák.
Celá elektronika šla dál. Nejprve jsem slepil neopixely a poté kondenzátor. Ty jsem zapojil do desky pro odpojení napájení neopixelů. Pak na zadní stranu jsem dal vodiče na spínače a napájecí konektor. Také jsem zahrnoval regulátor napětí L7805.
Rychlá poznámka k orientaci prstenů. Pro velký prsten 60 pixelů musíte hodiny nastavit tak, aby jeden z pixelů byl přesně nahoře a označil nulté minuty. Na kterém pixelu nezáleží a za minutu se dostanu k tomu, proč. U malého prstence o 24 pixelech musíte hodiny nastavit tak, aby horní část byla ve skutečnosti mezi dvěma pixely. Důvodem je to, že pokud chcete označit 12 hodin, skončíte rozsvícením dvou pixelů místo jednoho. Tím, že máte offset a s difuzí plastu, bude to vypadat, jako byste opravdu měli 12 širokých pixelů.
Pokud jde o pixel, který kód označuje jako „vrchol“pro každý prsten, musíte kód trochu upravit. Mám v kódu dvě hodnoty s názvem „inner_top_led“a „vnější_top_led“. V mých hodinách bylo "inner_top_led" 11 pixelů od začátku malého prstenu a "vnější_top_led" bylo 36 pixelů od začátku velkého prstenu. Pokud byste náhodou kroužky orientovali jinak, změnili byste tyto hodnoty tak, aby odpovídaly vaší orientaci. Trochu experimentování a rychle najdete správnou hodnotu.
V tuto chvíli jsem vyzkoušel, že vše funguje podle očekávání.
Ale jako u všech projektů jsem narazil na problém, protože jsem si uvědomil, že jsem nepřišel na to, jak to bude držet pohromadě. Všiml jsem si, že mezi neopixely a žebry mám asi 3/8 palce prostoru, a tak jsem zamířil do Home Depot a dostal 3/8 palcový hmoždinku a několik neodymových magnetů. Na třech místech jsem postavil malé dřevěné stojany a obrousil je, abych na každý stojan mohl umístit dva magnety (pomocí super lepidla). Skončil jsem se 3 páry po 2 stojanech. Pak jsem tyto vlepil do rámu a držel to všechno na svém místě pomocí svorky. Udělal jsem to, zatímco lepidlo na stojanech bylo mokré, takže se vše zarovnalo a pak zaschlo na správném místě. To fungovalo perfektně a jsem rád, že vydání je vše skryté.
Nakonec jsem přišel na to, že ho musím pověsit na zeď, a tak jsem na zadní straně navrtal malý hangár, abych ho mohl postavit na zeď.
Krok 7: Závěrečné myšlenky
Tento projekt bylo velmi zábavné stavět a rád jsem poznával neopixely a DS3234. Zvláště mě bavilo konečně vybudovat projekt, který vypadal hezky od začátku do konce. Existuje několik věcí, které bych aktualizoval, kdybych to udělal znovu, ale jsou drobné:
- Pro jednoduchost jsem zvolil dvě tlačítka místo tří. Ale mít tlačítko, které by mi umožnilo jít dolů i nahoru, by bylo hezké pro nastavení hodin
- Tlačítko režimu a tlačítko nastavení jsou nerozeznatelné. Často je míchám. Možná bych je v budoucnu postavil na opačné strany.
- Nikdy jsem nedokončil přední část dřeva. Líbil se mi zpočátku surový vzhled a později jsem se obával, že když jsem zpackal konec, oprava bude stát hodně.
- Rastrování stromu bylo v pořádku, ale možná jsem do budoucna nakreslil více podrobností o stromu.
- Stmívání hodin by bylo také hezké, protože ve tmě je docela jasné. Stmívání je však vázáno na barvu a zjišťování, že bit trvá příliš dlouho, takže jsem ho upustil. V budoucnu bych do této funkce pravděpodobně znovu investoval.
Děkujeme, že jste si přečetli tento návod. Doufám, že si vytvoříte vlastní projekt hodin nebo neopixelů a podělíte se se mnou. Šťastnou stavbu!
Doporučuje:
Postup: Instalace Raspberry PI 4 bezhlavého (VNC) s Rpi imagerem a obrázky: 7 kroků (s obrázky)
Jak na to: Instalace Raspberry PI 4 Headless (VNC) s Rpi-imager a obrázky: Mám v plánu použít tento Rapsberry PI ve spoustě zábavných projektů zpět na mém blogu. Neváhejte se na to podívat. Chtěl jsem se vrátit k používání svého Raspberry PI, ale na novém místě jsem neměl klávesnici ani myš. Už je to dlouho, co jsem nastavoval Raspberry
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Vykreslete 3D obrázky svých desek plošných spojů pomocí Eagle3D a POV-Ray: 5 kroků (s obrázky)
Vykreslování 3D obrázků vašich desek plošných spojů pomocí Eagle3D a POV-Ray: Pomocí Eagle3D a POV-Ray můžete vytvářet realistické 3D vykreslování vašich desek plošných spojů. Eagle3D je skript pro EAGLE Layout Editor. Tím se vygeneruje soubor pro sledování paprsku, který bude odeslán na POV-Ray, který nakonec vyskočí finální im
Vytvářejte stereofonní grafické obrázky v aplikaci Excel: 8 kroků (s obrázky)
Vytvářejte stereofonní grafické obrázky v aplikaci Excel: Stereo grafické obrázky mohou 3D hloubkám dodat hloubku