Satura rādītājs:
- 1. darbība: pulksteņa projektēšana
- 2. solis: Elektronikas projektēšana
- 3. darbība: elektronikas veidošana
- 4. solis: pulksteņa kodēšana
- 5. solis: Lāzera griezuma failu projektēšana
- 6. darbība: pulksteņa izveide
- 7. solis: pēdējās domas
Video: NeoClock: 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Tas ir par pulksteņa veidošanu, izmantojot fantastiskos neopikselu gredzenus no Adafruit. Šī pulksteņa jautrākais ir tas, ka tam faktiski ir divi neopikseļu gredzeni - viens stundu, bet otrs - minūtēm, sekundēm un milisekundēm. Pulkstenis saglabā ideālu laiku, izmantojot DS3234 DeadOn reālā laika pulksteņa mikroshēmu no Sparkfun. Viegli veidot un jautri modificēt. Es ceru, ka tas iedvesmos citus veidot pulksteņus vai citu mākslu, izmantojot neopikselu gredzenus.
Tiem no jums, kuri vēlas iegūt visus manus failus vienkārši pārvaldāmā formātā, nekautrējieties tos lejupielādēt no manas šī projekta github krātuves vietnē
1. darbība: pulksteņa projektēšana
Jau no paša sākuma zināju, ka vēlos izmantot vismaz divus neopikseļu gredzenus. Pēc kāda darba es nolēmu, ka labākais dizains būtu viens gredzens otrā, kas saglabā sākotnējo pulksteņa formu. Mazākais gredzens būtu stundas, bet atlikušais laiks tiktu paturēts uz lielāka gredzena. Daži dizaina apsvērumi ietvēra neopikseļu izmaksas, enerģijas patēriņu, lāzera griezuma gabalu lielumu un to, kāda veida mākslu es gribēju uzlikt.
Pabeidzot šo darbību, es nolēmu, ka pirms pulksteņa korpusa lāzera griešanas plānu izstrādes man ir jāsaprot elektronika.
2. solis: Elektronikas projektēšana
Izstrādājot elektroniku, iepriekš bija jāzina elementi, kurus es gribēju pulkstenī:
- Neopikselu gredzeni (60 un 24)
- Arduino (smadzenes)
- Pulksteņa regulēšana (arduinos nesaglabā laiku)
- Enerģijas pārvaldība
Neopikseļu izmēra un jaudas prasības ir labi dokumentētas. Tā kā tie darbojas ar 5 V līdzstrāvu, es nolēmu doties ar 5 V Arduino un padarīt lietas vienkāršākas. Ņemot vērā vietu, es nolēmu izveidot prototipu parastajā Arduino Uno, bet pēdējai elektronikai es izvēlējos Arduino Mini.
Šī projekta pirmā atkārtošana tika iegūta tieši no Adafruit NeoPixel Basic Connections lapas. Es ievietoju diagrammu no vietnes, lai atvieglotu lietas. No tā ir svarīgas divas lietas:
- 1000uF kondensators ir nepieciešams, lai novērstu sākotnējās strāvas triecienu, lai nesabojātu pikseļus.
- 60 skaitītāju gredzena pirmajā pikseļā ir nepieciešams 470 omu rezistors (šis rezistors ir iebūvēts 24 skaitīšanas gredzenā)
Adafruit ir arī NeoPixel paraugprakses kopums, kas jums jāizlasa pirms dizaina turpināšanas.
Vēl viena problēma ir laika saglabāšana pulkstenī. Arduino iebūvētais pulkstenis nav pietiekams, lai ilgu laiku uzturētu labu laiku. Sliktāka problēma ir tā, ka arduino laiks, iespējams, būs jāiestata katru reizi. Datori atrisina šo problēmu, izmantojot nelielu akumulatoru pulksteņa mikroshēmā, lai saglabātu laiku starp strāvas padeves pārtraukumiem. Agrāk es izmantoju kaut ko līdzīgu ChronoDot no Adafruit. Bet šajā gadījumā es gribēju attaisnojumu izmantot DS3234 (DeadOn RTC) no SparkFun. Jūs varat arī saglabāt datuma informāciju DeadOn RTC, ja vēlaties to integrēt pulkstenī.
Visbeidzot, enerģijas pārvaldība bija jāapsver. Es jau zināju, ka visam jābūt 5V, bet vajadzīgās strāvas daudzums šķita noslēpums. Lielākajā daļā projektu parasts sprieguma regulators ir L7805. Tas prasīs spriegumu līdz 24V un maksimālo strāvu līdz 1,5A. Es zināju, ka man apkārt ir 12V 1,5A siena misa, tāpēc es nolēmu, ka tas būs ideāls (un lēts!) Projekta sprieguma regulators.
Atlikušie gabali bija no manas detaļu kastes vai Radio Shack. Tie ietvēra vadus, slēdžus un līdzstrāvas kontaktligzdu.
3. darbība: elektronikas veidošana
Pilns elektronikas saraksts, ko es nopirku, lai izveidotu šo projektu, ir atrodams manā github krātuvē šeit: Elektronikas detaļu saraksts. Tajā ir saites uz produkta lapu katram gabalam, un tajā ir iekļauta papildu informācija, ieskaitot produkta SKU. Es ātri to prototipēju uz maizes dēļa un pirms attēlu uzņemšanas pārcēlos uz lāzera griešanu un veidošanu. Tomēr es to uzbūvēju tā, lai to būtu viegli izjaukt, tāpēc esmu sadalījis iepriekš redzamos fotoattēlus.
Cieši apskatiet attēlus, jo vadi tika apzināti saliekti, lai tos būtu viegli izsekot un lai viss elektronikas profils būtu plāns. Veicot šo sākotnējo prototipu izstrādi pirms lāzera griezuma projektēšanas, es varēju pārbaudīt detaļu biezumu, lai es varētu noskaidrot pulksteņa korpusa galīgos izmērus.
Jūs pamanīsit, ka es izveidoju pāris pielāgotas maizes dēļus. Esmu mēģinājis nofotografēt šo dēļu aizmuguri, lai jūs varētu tos atkārtot. Jūs varat iegādāties šādu maizes dēļu klāstu par pāris dolāriem un padarīt tos piemērotus jūsu projektam.
Elektroinstalācija ir taisna uz priekšu, taču svarīgās lietas, kas jāatceras no attēliem, ir šādas:
- Mode un Set slēdžiem būs nepieciešami nolaižami rezistori. Es izmantoju 2,21 omu rezistorus, kas man bija gulējuši, bet jebkurš mazs rezistors darbosies (vēlams ne mazāk kā 1 kOhm). Tas stabilizē pievienotās Arduino ieejas tapas tā, ka tad, kad tās paceļas augstu, tās var atšķirt no trokšņa.
- Kvadrātveida vilnis (SQW) uz DS3234 tika iezemēts, jo tas netiek izmantots.
- Jauda no L7805 tiek ievietota Arduino Mini RAW tapā. Vienmēr ievietojiet Arduino enerģiju RAW.
- Pirmajam 60 neopikselu gredzena pikselim ir 470 omu rezistors, lai samazinātu jebkādus pirmā pikseļa bojājumus no datu tapām. Tam nevajadzētu būt problēmai, jo 24 skaitļu neopikselim jau ir iebūvēts rezistors, taču labāk droši nekā nožēlot.
- Mode un Set slēdži ir īslaicīgi SPST spiedpogas slēdži
Vadu krāsas ir:
- Sarkans: +5VDC
- Melns: zeme
- Zaļš: dati
- Dzeltens, zils, balts: speciāli vadi DS3234
Ja šī ir pirmā reize, kad izmantojat neopikseļus, atcerieties, ka tos var uzskatīt par garu ķēdi. Tāpēc varētu šķist dīvaini runāt par “pirmo pikseļu” gredzenā, bet patiesībā katrai gredzenu ķēdei ir sākums un beigas. Šajā projektā vispirms ir 24 mazā gredzena pikseļi, bet pēc tam - 60 lielākā gredzena pikseļi. Tas tiešām nozīmē, ka man ir 84 neopikseļu ķēde.
Elektroinstalācijai Arduino Mini:
- DS3234 savienojas ar tapām 10 - 13
- Mode un Set slēdži atrodas uz 2. un 3. tapas
- Neopikselu dati nāk no 6. tapas.
Es arī iesaku 6 galvenes novietot Arduino Mini apakšā, lai jūs varētu to ieprogrammēt, izmantojot FTDI kabeli.
Svarīga piezīme par strāvu: šis pulkstenis prasa daudz. Es esmu pārliecināts, ka es varētu to atrisināt, bet mana praktiskā pieredze liecina, ka viss, kas ir vienāds vai mazāks par 500 mA, galu galā izraisīs brūnus iznākumus. Tas izpaužas kā pulkstenis mirgo trakas krāsas un nesaglabā laiku. Mana pēdējā siena misa ir 12V un 1,5A, un man nekad nav bijusi brūna krāsa. Tomēr sprieguma regulatora (un citu detaļu) robežvērtība ir 1,5A. Tāpēc nepārsniedziet šo summu.
4. solis: pulksteņa kodēšana
Pilnu pulksteņa kodu var atrast GitHub NeoClock kodā. Esmu šeit iekļāvis failu, taču visas izmaiņas notiks repozitorijā.
Es uzskatu, ka koda rakstīšana var būt biedējoša, ja jūs mēģināt darīt visu uzreiz. Tā vietā, lai turpinātu, es cenšos sākt no darba piemēra un izstrādāt funkcijas, kādas man ir vajadzīgas. Pirms iedziļināties, es vēlos norādīt, ka mans kods radās, apvienojot daudzus piemērus no šīm krātuvēm un Arduino CC foruma. Vienmēr dodiet kredītu tur, kur tam pienākas!
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/zeroeth/time_loop
- https://github.com/sparkfun/DeadOn_RTC
Daži kodu piemēri no šīm krātuvēm ir atrodami manā kodu piemēru direktorijā
Darbību secība, ko izmantoju, lai izveidotu kodu, bija aptuveni šāda:
- Pārbaudiet, vai neopikseļi darbojas ar pavedienu pārbaudes piemēru
- Mēģiniet palaist pulksteni ar laika cikla kodu
- Modificējiet pulksteni, lai tas darbotos pie diviem gredzeniem, nevis tikai viena
- Pievienojiet DS3234, lai saglabātu laiku, izmantojot DeadOn RTC piemēru
- Pievienojiet režīmu un iestatiet slēdžus
- Pievienojiet Debounce kodu, izmantojot Arduion Debounce Tutorial
- Pievienojiet dažas krāsu tēmas pulksteņa gaismas diodēm
- Pievienojiet dažas animācijas 0, 15, 30 un 45 minūšu atzīmēm
- Pievienojiet pulkstenim kompasa punktus, lai orientētos 0, 15, 30 un 45 minūšu atzīmēs
Ja vēlaties redzēt, kā es izveidoju šo kodu, jūs faktiski varat izmantot GitHub, lai apskatītu katru koda izpildi. Pulksteņa vēsture ir iekļauta saistību vēsturē.
Krāsu shēmas bija jautri pievienot, bet galu galā izvēlnē es iekļāvu tikai četras no tām. Katra tēma nosaka noteiktu krāsu stundas, minūtes, sekundes un milisekundes "rokās". Patiešām, iespējas šeit ir bezgalīgas, bet es iekļāvu tēmas (uzskaitītie metožu nosaukumi):
- setColorBlue
- setColorRed
- setColorCyan
- setColorOrange
Tomēr kodā varat atrast šīs papildu metodes:
- setColorPrimary
- setColorRoyal
- setColorTequila
Animācijas tika pievienotas, jo man patika ideja par veco pulksteņu zvanīšanu četros piecpadsmit minūšu punktos. Šim pulkstenim es izveidoju šādas animācijas:
- 15 minūtes: krāsojiet gredzenus sarkanā krāsā
- 30 minūtes: krāsojiet gredzenus zaļā krāsā
- 45 minūtes: krāsojiet gredzenus zilā krāsā
- Stundas sākums: veiciet varavīksni pāri abiem gredzeniem
Lietojamība izrādījās problēma ar pulksteni, jo neviens nevarēja orientēties pulkstenī. Galu galā tas ir tikai divi gaismas diodes gredzeni. Tāpēc, lai atrisinātu problēmu, pulkstenim pievienoju kompasa punktus. Tas uzlaboja spēju daudz pateikt laiku. Ja es par to būtu zinājis pirms lāzera griezuma gabalu nosūtīšanas, es, iespējams, būtu kaut ko pievienojis mākslai. Bet izrādās, ka tumsā nevar tik labi redzēt mākslu, tāpēc kompasa punktu izmantošana patiešām palīdz. Viens no apsvērumiem ir tas, ka, nolemjot krāsot pikseļus, vispirms vajadzētu uzņemt pašreizējo krāsu un izveidot jaunu jauktu krāsu. Tas dod tai dabiskāku sajūtu.
Pēdējais fakts ir par milisekundēm. Arduino milisekundes nāk no iekšējā Arduino kristāla, nevis no DS3234. Tas ir atkarīgs no jums, vai vēlaties parādīt milisekundes vai nē, bet es tā darīju, ka pulkstenis vienmēr kaut ko darīja. Iespējams, jūs varētu apgrūtināt tas, ka milisekundes un sekundes ne vienmēr sakrīt, taču praksē neviens to nekad nav man minējis, skatoties pulkstenī, un, manuprāt, tas izskatās jauki.
5. solis: Lāzera griezuma failu projektēšana
Izstrādājot lāzera griezuma failus, man bija jāņem vērā divi apsvērumi. Pirmais bija materiāls, no kura es gribēju to uzbūvēt, bet otrs - kā tas tiks uzbūvēts. Es zināju, ka vēlos koka apdari ar akrilu, kas izkliedē neopikselus. Lai noskaidrotu materiālu, es vispirms pasūtīju dažus paraugus no Ponoko:
- 1x finiera MDF - riekstkoks
- 1x finiera MDF - ķirsis
- 1x akrils - gaiši pelēks
- 1x akrils - opāls
Koka atlases ļauj man redzēt, kā izskatīsies rastrizācija un kā apdegums izskatīsies pulksteņa pusē. Akrils ļautu man pārbaudīt neopikseļu difūziju un salīdzināt, kā tas izskatītos pret koku. Galu galā es nolēmu ķiršu koku ar Opal akrilu.
Pulksteņa izmērus galvenokārt noteica neopikselu gredzenu izmērs. Es nezināju, cik biezai tai jābūt, lai tā ietilptu elektronikā. Uzbūvējot elektroniku un zinot, ka koksne ir apmēram 5,5 mm bieza, es noteicu, ka man ir nepieciešams apmēram 15 mm vietas pulkstenī. Tas nozīmēja trīs koka kārtas. Bet tā kā priekšpuse un aizmugure jau aizņem lielāko daļu mana dizaina, man vajadzēja sadalīt šos gredzenus "ribās", kuras vēlāk varēju salīmēt.
Es izmantoju InkScape, lai zīmētu Ponoko sniegto veidni. Pēc pulksteņa korpusa izvilkšanas es sāku zīmēt koku ar rokām. Es nevarēju importēt sākotnējo attēlu, kas mani iedvesmoja, taču nebija briesmīgi izdomāt, kā pašam izdarīt kaut ko līdzīgu.
Materiālu izmaksas bija tikai aptuveni 20 USD, bet izciršanas izmaksas bija aptuveni 100 USD vairāk. To veicināja divas lietas:
- Līknes un apļi maksā vairāk, jo mašīna pārvietojas pa divām asīm, un šai konstrukcijai ir daudz līkumu
- Rastrēšana prasa daudz piespēļu turp un atpakaļ pa gabalu. Atmetot to, būtu ietaupīts visvairāk naudas, bet man tas patika.
Pēc dizaina pabeigšanas es nosūtīju EPS failus Ponoko, un mani gabali tika pabeigti apmēram nedēļu vēlāk.
Ņemiet vērā, ka dizainā neiekļāvu režīma un iestatīšanas slēdžus vai līdzstrāvas barošanas ligzdu. Kad es to nosūtīju, es joprojām nebiju izlēmis par šīm daļām. Lai sniegtu sev lielāku elastību, es tos atstāju un nolēmu vēlāk urbt ar rokām.
6. darbība: pulksteņa izveide
Kad visi gabali ieradās, es uzkonstruēju pulksteni. Pirmais solis bija pulksteņa korpuss, kura dēļ man vajadzēja izsist ribas un pielīmēt tās aizmugurē un priekšā. Aizmugurē es uzliku divas ribas un priekšpusē vienu kārtu un uzliku ar koka līmi. Priekšpusē es izmantoju koka līmi, lai saliktu kopā akrila gredzenus un koka apļus. Man bija rezerves centrālais gabals, kuru es sagriezu kā sagatavi, kas noderēja būvniecības laikā. Es to pielīmēju koka gabala aizmugurē, un tas man deva vietu, kur vēlāk varēju pielīmēt neopikselus.
Pēc uzbūvētā korpusa es nolēmu izurbt caurumus slēdžiem un strāvas ligzdai. Neliela ģeometrija (kā redzams attēlā) man palīdzēja visu izlīdzināt. Izmantojot atsevišķu koka gabalu no ārpuses, kad es urbju (ļoti uzmanīgi!), Es izveidoju caurumus un pielīmēju slēdžus un domkratu.
Tālāk ienāca visa elektronika. Vispirms pielīmēju neopikseļus, kam sekoja kondensators. Tos es pievienoju neopikselu strāvas padeves panelim. Tad aizmugurē es ievietoju vadus uz slēdžiem un strāvas ligzdu. Es iekļāvu arī sprieguma regulatoru L7805.
Īsa piezīme par gredzenu orientāciju. Lielajam 60 pikseļu gredzenam pulkstenis jāorientē tā, lai viens no pikseļiem būtu tieši augšpusē, lai atzīmētu nulles minūtes. Kādam pikseļam nav nozīmes, un pēc minūtes es sapratīšu, kāpēc. Nelielajam 24 pikseļu gredzenam pulkstenis jāorientē tā, lai augšdaļa faktiski būtu starp diviem pikseļiem. Iemesls tam ir tas, ka, ja vēlaties atzīmēt 12 stundas, jūs galu galā iededzat divus pikseļus, nevis vienu. Ņemot nobīdi un izkliedējot plastmasu, tas šķitīs tā, it kā jums patiešām būtu 12 plati pikseļi.
Attiecībā uz to, kuru pikseļu kods apzīmē kā “augšējo” katram gredzenam, kods ir nedaudz jārediģē. Manā kodā ir divas vērtības ar nosaukumu "internal_top_led" un "external_top_led". Manos pulksteņos "internal_top_led" bija 11 pikseļi no mazā gredzena sākuma, un "external_top_led" bija 36 pikseļi no lielā gredzena sākuma. Ja gredzeni tiek novirzīti citādi, jūs maināt šīs vērtības, lai tās būtu no jūsu orientācijas. Mazliet eksperimentu, un jūs atradīsit īsto vērtību diezgan ātri.
Šajā brīdī es pārbaudīju, vai viss darbojas kā paredzēts.
Bet, tāpat kā visos projektos, es saskāros ar problēmu, jo sapratu, ka neesmu sapratis, kā tas varētu notikt kopā. Es pamanīju, ka man ir apmēram 3/8 collas vietas starp neopikseliem un ribām, tāpēc es devos uz Home Depot un ieguvu 3/8 collu dībeli un vairākus neodīma magnētus. Trīs vietās es uzbūvēju mazus koka statīvus un tos noslīpēju, lai uz katra statīva varētu uzlikt divus magnētus (izmantojot superlīmi). Es beidzu ar 3 pāriem pa 2 stendiem katrā. Tad es tos pielīmēju rāmī un ar skavu turēju visu vietā. Es to darīju, kamēr līme uz statīviem bija mitra, lai viss izlīdzinātos un pēc tam izžūtu pareizajā vietā. Tas strādāja perfekti, un man patīk, ka izlaidums ir paslēpts.
Visbeidzot es izdomāju, ka man tas ir jāpakar pie sienas, tāpēc es urbjos nelielā angārā aizmugurē, lai varētu to uzlikt pie sienas.
7. solis: pēdējās domas
Šo projektu bija ļoti jautri veidot, un man patika uzzināt par neopikseliem un DS3234. Man īpaši patika beidzot izveidot projektu, kas no sākuma līdz beigām izskatījās jauki. Ir dažas lietas, kuras es atjauninātu, ja to darītu vēlreiz, taču tās ir nelielas:
- Vienkāršības labad es izvēlējos divas pogas, nevis trīs. Bet, ja būtu poga, kas ļautu man nolaisties, kā arī uz augšu, būtu bijis jauki iestatīt pulksteni
- Režīma poga un iestatīšanas poga neatšķiras. Es bieži tos sajaucu. Varbūt nākotnē es tos novietotu pretējās pusēs.
- Es nekad neesmu pabeidzis koka priekšpusi. Sākumā man patika neapstrādāts izskats un vēlāk uztraucos, ka, ja izjaukšu apdari, tā labošana izmaksās daudz.
- Koka rasterizācija bija labs izskats, bet nākotnē es varētu būt uzzīmējis kokam sīkāku informāciju.
- Arī pulksteņa aptumšošana būtu jauka funkcija, jo tumsā tas ir diezgan gaišs. Tomēr aptumšošana ir saistīta ar krāsu un izdomā, ka uzgalis aizņēma pārāk ilgu laiku, tāpēc es to nometu. Nākotnē es, iespējams, atkārtoti ieguldītu šajā funkcijā.
Paldies, ka izlasījāt šo pamācību. Es ceru, ka jūs izveidosit savu pulksteņa vai neopikseļu projektu un dalīsities tajā ar mani. Laimīgu celtniecību!
Ieteicams:
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar RPI attēlu un attēliem: 7 soļi (ar attēliem)
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar Rpi-imager un Pictures: Es plānoju izmantot šo Rapsberry PI daudzos jautros projektos savā emuārā. Jūtieties brīvi to pārbaudīt. Es gribēju atkal izmantot savu aveņu PI, bet manā jaunajā vietā nebija tastatūras vai peles. Pagāja laiks, kopš es izveidoju aveņu
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Skrūve - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): 6 soļi (ar attēliem)
Bolt - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): Induktīvās uzlādes (pazīstamas arī kā bezvadu uzlāde vai bezvadu uzlāde) ir bezvadu enerģijas pārneses veids. Tas izmanto elektromagnētisko indukciju, lai nodrošinātu elektroenerģiju pārnēsājamām ierīcēm. Visizplatītākā lietojumprogramma ir Qi bezvadu uzlādes st
Ciclop 3D skeneris Mans ceļš soli pa solim: 16 soļi (ar attēliem)
Ciclop 3d skeneris mans ceļš soli pa solim: Sveiki, es sapratīšu slaveno Ciclop 3D skeneri. Visi soļi, kas ir labi izskaidroti sākotnējā projektā, nav pieejami. Vispirms veicu dažus labojumus, lai vienkāršotu procesu Es izdrukāju pamatni un atkārtoti pārveidoju PCB, bet turpiniet
Kamera atvieglotiem laika intervāla attēliem: 22 soļi (ar attēliem)
Kamera atvieglotiem laika intervāla attēliem: es pārbaudīju vienu no citām instrukcijām par laika nobīdes filmu veidošanu. Viņš diezgan labi aptvēra filmas daļu. Viņš pastāstīja par bezmaksas programmatūru, kuru varat lejupielādēt, lai izveidotu filmas. Es sev teicu: domāju, ka redzēšu, vai varu