Përmbajtje:

NeoClock: 7 hapa (me fotografi)
NeoClock: 7 hapa (me fotografi)

Video: NeoClock: 7 hapa (me fotografi)

Video: NeoClock: 7 hapa (me fotografi)
Video: neoClock 2024, Dhjetor
Anonim
Image
Image

Kjo ka të bëjë me ndërtimin e një ore duke përdorur unazat fantastike të neopixelit nga Adafruit. Gjëja argëtuese e kësaj ore është se ajo në fakt ka dy unaza neopixel, një për të treguar orët dhe një për minuta, sekonda dhe milisekonda. Ora mban kohë perfekte duke përdorur çipin DS3234 DeadOn Real Time Clock nga Sparkfun. Lehtë për tu ndërtuar dhe argëtuese për tu modifikuar. Shpresa ime është që do të frymëzojë të tjerët të ndërtojnë orë ose art tjetër duke përdorur unazat neopixel.

Për ata prej jush që duan t'i marrin të gjithë skedarët e mi në një format të thjeshtë për tu menaxhuar, mos ngurroni t'i shkarkoni nga depoja ime e github për këtë projekt në

Hapi 1: Dizajnimi i Orës

Projektimi i Orës
Projektimi i Orës
Projektimi i Orës
Projektimi i Orës
Projektimi i Orës
Projektimi i Orës
Projektimi i Orës
Projektimi i Orës

E dija që në fillim se doja të përdorja të paktën dy unaza neopixelësh. Pas disa punës vendosa që modeli më i mirë do të ishte të kisha një unazë brenda tjetrës, e cila ruan formën origjinale të një ore. Unaza më e vogël do të ishte ora dhe koha e mbetur do të mbahej në unazën më të madhe. Disa konsiderata të projektimit përfshinin koston e neopixelëve, fuqinë, madhësinë e pjesëve të prera me lazer dhe çfarë arti doja të vendosja mbi të.

Me përfundimin e këtij hapi vendosa që më duhej të kuptoja elektronikën para se të krijoja planet për prerjen me lazer të trupit të orës.

Hapi 2: Dizajnimi i pajisjeve elektronike

Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike
Projektimi i pajisjeve elektronike

Dizajnimi i pajisjeve elektronike erdhi duke ditur paraprakisht elementët që doja në orë:

  • Unaza neopixel (numërimi 60 dhe numërimi 24)
  • Arduino (truri)
  • Rregullorja e orës (arduinos nuk mbajnë kohë të mirë)
  • Menaxhimi i energjisë

Kërkesat për madhësinë dhe fuqinë e neopixelëve janë të dokumentuara mirë. Meqenëse ata punojnë në 5V DC vendosa të shkoj me një Arduino 5V dhe t'i bëj gjërat më të thjeshta për veten time. Duke pasur parasysh hapësirën, vendosa të prototipoja në një Arduino Uno të zakonshëm, por për elektronikën përfundimtare zgjodha një Arduino Mini.

Përsëritja e parë e këtij projekti erdhi drejtpërdrejt nga faqja e Adafruit's NeoPixel Basic Connections. Unë kam përfshirë diagramin nga faqja e internetit për t'i bërë gjërat më të lehta. Dy gjëra janë të rëndësishme nga kjo:

  1. Nevojitet një kondensator 1000uF për të parandaluar goditjen fillestare aktuale nga dëmtimi i pikselave.
  2. Nevojitet një rezistencë 470ohm në pikselin e parë të unazës numëruese 60 (ky rezistencë është ndërtuar në unazën e numërimit 24)

Adafruit gjithashtu ka një grup të Praktikave më të mira NeoPixel që duhet të lexoni para se të vazhdoni me modelimin.

Mbajtja e kohës në orë është një problem tjetër. Ora e ndërtuar në arduino nuk është e mjaftueshme për të mbajtur kohë të mirë për periudha të gjata kohore. Një problem më i keq është se koha në arduino mund të ketë nevojë të rivendoset çdo herë. Kompjuterët e zgjidhin këtë problem duke përdorur një bateri të vogël në çipin e orës për të mbajtur kohën midis ndërprerjeve të energjisë. Në të kaluarën do të përdorja diçka si ChronoDot nga Adafruit. Por në këtë rast doja një justifikim për të përdorur DS3234 (DeadOn RTC) nga SparkFun. Ju gjithashtu mund të mbani informacionin e datës në DeadOn RTC nëse doni ta integroni atë në orë.

Më në fund, menaxhimi i energjisë kishte nevojë për një konsideratë. Unë tashmë e dija që gjithçka duhej të ishte 5V, por sasia e rrymës së nevojshme dukej të ishte një mister. Një rregullator i zakonshëm i tensionit në shumicën e projekteve është L7805. Kjo do të marrë tensione deri në 24V dhe një rrymë maksimale deri në 1.5A. E dija që kisha një mollë 12V 1.5A mur të shtrirë përreth kështu që vendosa që ky do të ishte rregullatori i përsosur (dhe i lirë!) I tensionit për projektin.

Pjesët e mbetura do të vinin nga kutia ime e pjesëve ose Radio Shack. Ato përfshinin telat, çelsat dhe prizën e rrymës DC.

Hapi 3: Ndërtimi i pajisjeve elektronike

Ndërtimi i pajisjeve elektronike
Ndërtimi i pajisjeve elektronike
Ndërtimi i pajisjeve elektronike
Ndërtimi i pajisjeve elektronike
Ndërtimi i pajisjeve elektronike
Ndërtimi i pajisjeve elektronike

Një listë e plotë e pajisjeve elektronike që kam blerë për të ndërtuar këtë projekt mund të gjendet në depon time github këtu: Lista e Pjesëve Elektronike. Ai ka lidhje me faqen e produktit për secilën pjesë dhe përfshin disa informacione shtesë, përfshirë SKU -në e produktit. E prototipova këtë shpejt në një dërrasë buke dhe u transferova në prerjen dhe ndërtimin me lazer para se të bëja ndonjë fotografi. Sidoqoftë, unë e ndërtova atë për të qenë e lehtë për t'u ndarë, kështu që unë kam ndarë copat në fotot e mësipërme për ju.

Shikoni nga afër imazhet pasi telat janë vendosur me qëllim në mënyrë që të jenë të lehta për tu ndjekur dhe për të mbajtur të hollë të gjithë profilin e pajisjeve elektronike. Bërja e këtij prototipi fillestar para se të dizajnoja prerjen me lazer më lejoi të kontrolloja trashësinë e pjesëve në mënyrë që të mund të kuptoja dimensionet përfundimtare për trupin e orës.

Ju do të vini re se kam bërë disa pjata me porosi. Unë jam përpjekur të bëj fotografi të pasme të atyre dërrasave në mënyrë që t'i përsërisni ato. Ju mund të blini një shumëllojshmëri të bordeve të bukës si këto për disa dollarë dhe t'i bëni ato që t'i përshtaten projektit tuaj.

Instalimet janë drejtpërdrejt përpara, por gjërat e rëndësishme që duhet të mbani mend nga imazhet janë këto:

  • Ndërprerësit Mode dhe Set do të kenë nevojë për rezistenca tërheqëse. Kam përdorur rezistenca 2.21Ohm që kisha të shtrirë, por çdo rezistencë e vogël do të funksionojë (mundësisht jo më pak se 1kOhm). Kjo stabilizon kunjat e lidhura të hyrjes Arduino në mënyrë që kur të shkojnë lart të dallohet nga zhurma.
  • Vala katrore (SQW) në DS3234 u bazua pasi nuk është në përdorim.
  • Fuqia nga L7805 futet në Arduino Mini në kunjin RAW. Gjithmonë vendosni fuqinë që vjen në Arduino në RAW.
  • Pikseli i parë i unazës neopixel 60 ka një rezistencë 470 Ohm për të zvogëluar çdo dëmtim të pikselit të parë nga goditjet e të dhënave. Ky nuk duhet të jetë një problem pasi neopixel me numërimin 24 ka një rezistencë të integruar për këtë tashmë, por më mirë e sigurt se sa keq.
  • Çelsat Mode dhe Set janë çelësa të butonave të shtypjes SPST

Ngjyrat e telave janë:

  • E kuqe: +5VDC
  • E zezë: Tokë
  • E gjelbër: Të dhëna
  • E verdhë, blu, e bardhë: Tela të veçantë për DS3234

Nëse kjo është hera e parë që përdorni neopixelë, duhet të mbani mend se ato mund të mendohen si një zinxhir i gjatë. Pra, mund të duket e çuditshme të flasësh për një "piksel të parë" në një unazë, por në fakt ka një fillim dhe fund për secilin zinxhir në unaza. Në këtë projekt 24 pikselët e unazës së vogël vijnë së pari dhe 60 pikselët e unazës më të madhe vijnë më pas. Kjo me të vërtetë do të thotë që unë kam një zinxhir prej 84 neopixelësh.

Për instalime elektrike në Arduino Mini:

  • DS3234 lidhet në kunjat 10 - 13
  • Çelsat Mode dhe Set janë në kunjat 2 dhe 3
  • Të dhënat neopixel vijnë nga kunja 6.

Unë gjithashtu rekomandoj vendosjen e 6 titujve në pjesën e poshtme të Arduino Mini në mënyrë që ta programoni atë përmes një kabllo FTDI.

Një shënim i rëndësishëm për rrymën: Kjo orë kërkon shumë. Unë jam i sigurt se mund ta punoj, por përvoja ime praktike është se çdo gjë e barabartë ose më pak se 500mA përfundimisht do të shkaktojë dalje kafe. Kjo manifestohet si ora që ndez ngjyra të çmendura dhe nuk mban kohë. Wort im i fundit i murit është 12V dhe 1.5A dhe kurrë nuk kam pasur ngjyrë kafe me të. Sidoqoftë, 1.5A është kufiri që do të marrë rregullatori i tensionit (dhe pjesët e tjera). Prandaj, mos e tejkaloni këtë shumë.

Hapi 4: Kodimi i orës

Kodimi i orës
Kodimi i orës

Kodi i plotë për orën mund të gjendet në Kodin NeoClock në GitHub. Unë e kam përfshirë skedarin këtu, por çdo ndryshim do të ndodhë në depo.

Unë mendoj se shkrimi i kodit mund të jetë i frikshëm nëse përpiqeni të bëni gjithçka menjëherë. Në vend që të shkoj për këtë, përpiqem të filloj nga një shembull pune dhe të krijoj veçori ashtu siç më duhen. Para se të hyj në këtë dua të theksoj se kodi im erdhi nga kombinimi i shumë shembujve nga depot e mëposhtme dhe forumi Arduino CC. Jepni gjithmonë merita aty ku duhet!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Disa shembuj të kodit nga këto depo mund të gjenden në Drejtorinë time të Shembujve të Kodit

Rendi i operacioneve që kam përdorur për të krijuar kodin shkoi diçka si kjo:

  • Konfirmoni që neopixelët punojnë me Shembullin e Strand Test
  • Përpiquni të drejtoni një orë me Kodin e Loopit të Kohës
  • Ndryshoni orën për të punuar në dy unaza në vend të vetëm një
  • Shtoni DS3234 për të mbajtur kohën përmes Shembullit DeadOn RTC
  • Shtoni modalitetin dhe vendosni çelësat
  • Shtoni kodin Debounce me ndihmën e Arduion Debounce Tutorial
  • Shtoni disa tema ngjyrash për LED -të e orës
  • Shtoni disa animacione për shenjat 0, 15, 30 dhe 45 minuta
  • Shtoni pikat e busullës në orë për të orientuar shenjat 0, 15, 30 dhe 45 minuta

Nëse doni të shihni se si e kam ndërtuar këtë kod, në të vërtetë mund të përdorni GitHub për të parë secilin komision të kodit. Historia për orën është në Commit History.

Skemat e ngjyrave ishin argëtuese për tu shtuar, por në fund unë përfshiva vetëm katër prej tyre në meny. Çdo temë vendos një ngjyrë të veçantë në "duart" e orës, minutës, sekondës dhe milisekondës. Me të vërtetë opsionet janë të pafundme këtu, por unë përfshiva temat (emrat e metodave të listuara):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Sidoqoftë, këto metoda shtesë mund t'i gjeni në kod:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animacionet u shtuan sepse më pëlqeu ideja e orëve të vjetra që kërcisnin në katër pikat pesëmbëdhjetë minutëshe të orës. Për këtë orë kam bërë animacionet e mëposhtme:

  • 15 minuta: Ngjyrosni unazat me të Kuqe
  • 30 minuta: Ngjyrosni unazat me ngjyrë të Gjelbër
  • 45 minuta: Ngjyrosni unazat Blu
  • Në krye të orës: Bëni një ylber përgjatë dy unazave

Përdorueshmëria doli të ishte një problem me orën sepse askush nuk mund ta orientonte orën. Në fund të fundit janë vetëm dy unaza LED. Kështu që për të zgjidhur problemin shtova pikat e busullës në orë. Kjo përmirësoi aftësinë për të treguar kohën shumë. Sikur ta kisha ditur për këtë para se të dërgoja pjesët e prera me lazer, mund të kisha shtuar diçka në art. Por rezulton se ju nuk mund ta shihni artin aq mirë në errësirë, kështu që të kesh pikat e busullës të ndihmon vërtet. Një konsideratë me këtë është se kur vendosni të ngjyrosni një piksel, së pari duhet të kapni ngjyrën aktuale dhe të krijoni një ngjyrë të re të përzier. Kjo i jep asaj një ndjenjë më natyrale.

Një gjë e fundit është rreth milisekonda. Milisekonda në Arduino dalin nga kristali i brendshëm Arduino dhe jo nga DS3234. Varet nga ju nëse doni të shfaqni milisekonda apo jo, por unë e bëra kështu që ora gjithmonë dukej se po bënte diçka. Mund t'ju shqetësojë që milisekonda dhe sekondat nuk rreshtohen gjithmonë, por në praktikë askush nuk ma ka përmendur kurrë kur shikoj orën dhe mendoj se duket bukur.

Hapi 5: Dizajnimi i skedarëve të prerë me lazer

Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer
Projektimi i skedarëve të prerë me lazer

Ekzistojnë dy konsiderata që duhej të bëja kur hartoja skedarët e prerë me lazer. E para ishte materiali nga i cili doja ta ndërtoja dhe e dyta ishte se si do të ndërtohej. E dija që doja një përfundim druri me akrilik të shpërndajë neopixelët. Për të kuptuar materialin, unë së pari porosita disa mostra nga Ponoko:

  • 1x MDF rimeso - Arre
  • 1x MDF rimeso - Qershi
  • 1x akrilik - gri të lehta
  • 1x akrilik - opal

Zgjedhjet e drurit më lejoni të shoh se si do të dukej rasterizimi dhe si do të dukej djegia në anën e orës. Akriliku do të më lejonte të provoja përhapjen e neopixelëve dhe të krahasoja se si do të dukej përballë drurit. Në fund vendosa për drurin e Qershisë me akrilik Opal.

Dimensionet e orës u përcaktuan kryesisht nga madhësia e unazave neopixel. Ajo që nuk e dija ishte se sa e trashë duhej të ishte për të përshtatur pajisjet elektronike. Duke ndërtuar elektronikën dhe duke ditur se druri ishte rreth 5.5 mm i trashë, vendosa që më duheshin rreth 15 mm hapësirë brenda orës. Kjo do të thoshte tre shtresa druri. Por me pjesën e përparme dhe të pasme që tashmë zënë pjesën më të madhe të hapësirës në modelin tim, më duhej t'i ndaja ato unaza në "brinjë" që mund t'i ngjisja së bashku më vonë.

Kam përdorur InkScape për të nxjerrë modelin e ofruar nga Ponoko. Pasi nxora trupin e orës, vendosa të vizatoja pemën me dorë. Unë nuk mund të importoja imazhin origjinal që më frymëzoi, por nuk ishte e tmerrshme të kuptoja se si të bëja diçka të ngjashme vetë.

Kostoja e materialeve ishte vetëm rreth 20 dollarë, por kostoja e prerjes doli të ishte rreth 100 dollarë më shumë. Dy gjëra kontribuan në këtë:

  • Kthesat dhe Rrathët kushtojnë më shumë sepse makina lëviz në dy akse dhe ky dizajn ka shumë kthesa
  • Rasterizimi kërkon shumë kalime para dhe mbrapa përgjatë pjesës. Heqja dorë nga kjo do të kishte kursyer më shumë para, por më pëlqeu.

Pasi përfundova modelin, i dërgova skedarët EPS Ponoko dhe pjesët e mia u bënë rreth një javë më vonë.

Vini re se nuk kam përfshirë çelësat Mode dhe Set ose Jack Power DC në dizajn. Kur e dërgova këtë gjë, ende nuk kisha vendosur për ato pjesë. Për t'i dhënë vetes më shumë fleksibilitet, i lashë jashtë dhe vendosa t'i shpoja më vonë me dorë.

Hapi 6: Ndërtimi i orës

Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës
Ndërtimi i Orës

Kur mbërritën të gjitha pjesët, unë ndërtova orën. Hapi i parë ishte trupi i orës i cili më kërkoi të shpoja brinjët dhe t'i ngjisja ato në pjesën e pasme dhe të përparme. Vendosa dy shtresa të brinjëve në anën e pasme dhe një shtresë në pjesën e përparme dhe i vendosa me ngjitës druri. Për pjesën e përparme kam përdorur ngjitës druri për të bashkuar unazat akrilike dhe rrathët prej druri së bashku. Unë kisha një pjesë qendrore rezervë që do ta kisha prerë si një bosh që erdhi në ndihmë gjatë ndërtimit. Unë e ngjita atë në pjesën e pasme të pjesës së pemës dhe kjo më dha një vend ku mund t'i ngjisja neopixelët më vonë.

Me trupin e ndërtuar vendosa të shpoj vrima për çelsin dhe prizën e energjisë. Një gjeometri e vogël (siç shihet në foto) më ndihmoi të harmonizoja gjithçka. Duke përdorur një copë druri të veçantë në pjesën e jashtme ndërsa shpoja (me shumë kujdes!) I bëra vrimat dhe u ngjita në çelsin dhe prizën.

Të gjitha pajisjet elektronike u futën më pas. I ngjita neopixelët e ndjekur së pari nga kondensatori. Këto i futa në bordin e shpërthimit të fuqisë neopixel. Pastaj për pjesën e pasme kam vënë telat në çelsin dhe prizën e energjisë. Unë gjithashtu përfshiva rregullatorin e tensionit L7805.

Një shënim i shpejtë për orientimin e unazave. Për unazën e madhe prej 60 pikselësh ju duhet të orientoni orën në mënyrë që një nga pikselët të jetë pikërisht në krye për të shënuar minutat zero. Cili piksel nuk ka rëndësi dhe unë do të kuptoj pse në një minutë. Për unazën e vogël prej 24 piksele ju duhet të orientoni orën në mënyrë që pjesa e sipërme të jetë në fakt midis dy piksele. Arsyeja për këtë është se nëse doni të shënoni 12 orë atëherë përfundoni duke ndezur dy piksele në vend të një. Duke pasur kompensimin, dhe me përhapjen e plastikës, do të duket sikur të kesh vërtet 12 piksele të gjera.

Sa i përket pikselit që kodi përcakton si "maja" për secilën unazë, duhet të modifikoni pak kodin. Unë kam dy vlera në kodin tim të quajtur "inner_top_led" dhe "external_top_led". Në orët e mia "brendshme_top" ishte 11 pikselë nga fillimi i unazës së vogël dhe "e jashtme_top" ishte 36 piksele nga fillimi i unazës së madhe. Nëse ju ndodh që t'i orientoni unazat ndryshe atëherë do t'i ndryshonit këto vlera në ato nga orientimi juaj. Pak eksperimente dhe do të gjeni vlerën e duhur shumë shpejt.

Në këtë pikë unë testova që gjithçka funksionoi siç pritej.

Por si me të gjithë projektin, unë hasa në një problem pasi kuptova se nuk e kisha kuptuar se si do të mbahej së bashku. Vura re se kisha rreth 3/8 inç hapësirë midis neopixelëve dhe brinjëve, kështu që u drejtova drejt Home Depot dhe mora një kunj 3/8 inç dhe një numër magnetësh neodymium. Unë ndërtova stenda të vogla druri në tre vende dhe i rrëzova në mënyrë që të mund të vendosja dy magnete në secilën stendë (duke përdorur super zam). Përfundova me 3 palë nga 2 stenda secila. Pastaj i ngjita këto në kornizë dhe i mbajta të gjitha në vend me një kapëse. E bëra këtë ndërsa zamja në stenda ishte e lagur kështu që gjithçka do të rreshtohej dhe më pas do të thahej në vendin e duhur. Kjo funksionoi në mënyrë perfekte dhe më pëlqen që lëshimi është i fshehur.

Së fundi, kuptova se duhej ta varja në mur, kështu që u shpova në një hangar të vogël në anën e pasme, në mënyrë që ta vendosja në mur.

Hapi 7: Mendimet përfundimtare

Ky projekt ishte shumë argëtues për tu ndërtuar dhe më pëlqeu të mësoja për neopixelët dhe DS3234. Më pëlqeu veçanërisht ndërtimi i një projekti që dukej bukur nga fillimi në fund. Ka disa gjëra që do t'i përditësoja nëse do ta bëja përsëri, por ato janë të vogla:

  • Zgjodha dy butona në vend të tre për thjeshtësi. Por të kesh një buton që do të më lejonte të zbres si dhe lart do të ishte mirë për të vendosur orën
  • Butoni i modalitetit dhe butoni i vendosur nuk dallohen. Unë shpesh i përziej ato. Ndoshta do t'i vendosja në anët e kundërta në të ardhmen.
  • Unë kurrë nuk e mbarova pjesën e përparme të drurit. Më pëlqeu pamja e papërpunuar në fillim dhe më vonë u shqetësova se nëse e prish përfundimin do të kushtonte shumë për ta rregulluar.
  • Rasterizimi i pemës ishte një pamje e mirë, por mund të kisha tërhequr më shumë detaje për pemën në të ardhmen.
  • Zbehja e orës do të ishte gjithashtu një veçori e bukur pasi është mjaft e ndritshme në errësirë. Sidoqoftë, zbehja është e lidhur me ngjyrën dhe të kuptosh që ai grimcë po zgjaste shumë, kështu që e hoqa. Unë ndoshta do të ri-investoja në atë veçori në të ardhmen.

Faleminderit që lexuat këtë udhëzues. Shpresoj se ju do të bëni orën tuaj ose projektin neopixel dhe do ta ndani me mua. Gëzuar ndërtesa!

Recommended: