Cuprins:

NeoClock: 7 pași (cu imagini)
NeoClock: 7 pași (cu imagini)

Video: NeoClock: 7 pași (cu imagini)

Video: NeoClock: 7 pași (cu imagini)
Video: ceas pentru pc original 2024, Iunie
Anonim
Image
Image

Este vorba despre construirea unui ceas folosind fantasticele inele de neopixeli de la Adafruit. Cea mai amuzantă legătură cu acest ceas este că are de fapt două inele de neopixeli, unul pentru a spune orele și unul pentru minute, secunde și milisecunde. Ceasul păstrează timpul perfect folosind cipul DS3234 DeadOn Real Time Clock de la Sparkfun. Ușor de construit și distractiv de modificat. Speranța mea este că îi va inspira pe alții să construiască ceasuri sau alte lucrări de artă folosind inelele de neopixel.

Pentru cei dintre voi care doresc să obțină toate fișierele mele într-un format simplu de gestionat, nu ezitați să le descărcați din depozitul meu github pentru acest proiect la

Pasul 1: Proiectarea ceasului

Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului
Proiectarea ceasului

Știam de la început că vreau să folosesc cel puțin două inele de neopixeli. După câteva lucrări, am decis că cel mai bun design ar fi să aibă un inel în celălalt, care păstrează forma originală a unui ceas. Inelul mai mic ar fi orele, iar timpul rămas ar fi păstrat pe inelul mai mare. Unele considerații de proiectare au inclus costul neopixelilor, puterea necesară, dimensiunea pieselor tăiate cu laser și ce fel de artă am vrut să pun pe ea.

Odată finalizat acest pas, am decis că trebuie să înțeleg electronica înainte de a crea planurile de tăiere cu laser a corpului ceasului.

Pasul 2: Proiectarea electronice

Proiectarea electronice
Proiectarea electronice
Proiectarea electronice
Proiectarea electronice
Proiectarea electronice
Proiectarea electronice
Proiectarea electronice
Proiectarea electronice

Proiectarea componentelor electronice a ajuns la cunoașterea din timp a elementelor pe care le doream în ceas:

  • Inele Neopixel (60 și 24 de inele)
  • Arduino (creierul)
  • Regulamentul ceasului (arduino-urile nu păstrează timpul)
  • Gestionare a energiei

Cerințele de dimensiune și putere ale neopixelilor sunt bine documentate. Deoarece rulează pe 5V DC, am decis să merg cu un Arduino de 5V și să fac lucrurile mai simple pentru mine. Având în vedere spațiul, am decis să fac prototip pe un Arduino Uno obișnuit, dar pentru electronica finală am ales un Arduino Mini.

Prima iterație a acestui proiect a venit direct din pagina NeoPixel Basic Connections a Adafruit. Am inclus diagrama de pe site pentru a ușura lucrurile. Două lucruri sunt importante din aceasta:

  1. Este necesar un condensator 1000uF pentru a preveni scuturarea curentului inițial să deterioreze pixelii.
  2. Un rezistor de 470ohm este necesar pe primul pixel al inelului de 60 de contori (acest rezistor este încorporat în inelul de 24 de contori)

Adafruit are, de asemenea, un set de cele mai bune practici NeoPixel pe care ar trebui să le citiți înainte de a continua cu proiectarea.

Menținerea timpului pe ceas este o altă problemă. Ceasul încorporat de pe arduino nu este suficient pentru a păstra timp bun pe perioade lungi de timp. O problemă mai gravă este că timpul de pe arduino poate fi necesar să fie resetat de fiecare dată. Calculatoarele rezolvă această problemă utilizând o baterie mică pe cipul ceasului pentru a menține timpul dintre întreruperi. În trecut aș folosi ceva de genul ChronoDot de la Adafruit. Dar în acest caz am vrut o scuză pentru a folosi DS3234 (DeadOn RTC) de la SparkFun. Puteți păstra, de asemenea, informații despre date pe DeadOn RTC dacă doriți să le integrați în ceas.

În cele din urmă, managementul energiei a avut nevoie de o anumită atenție. Știam deja că totul trebuie să fie de 5V, dar cantitatea de curent necesară părea să fie un mister. Un regulator comun de tensiune în majoritatea proiectelor este L7805. Acest lucru va lua tensiuni de până la 24V și un curent maxim de până la 1,5A. Știam că aveam un must de perete de 12V 1,5A așa că am decis că acesta va fi regulatorul de tensiune perfect (și ieftin!) Pentru proiect.

Piesele rămase urmau să vină din cutia mea de piese sau Radio Shack. Au inclus firele, comutatoarele și mufa de alimentare DC.

Pasul 3: Construirea electronice

Construirea electronice
Construirea electronice
Construirea electronice
Construirea electronice
Construirea electronice
Construirea electronice

O listă completă a componentelor electronice pe care le-am cumpărat pentru a construi acest proiect o găsiți în depozitul meu github aici: Lista pieselor electronice. Are linkuri către pagina produsului pentru fiecare piesă și include câteva informații suplimentare, inclusiv SKU-ul produsului. Am făcut prototipuri rapid pe o placă de măsurare și m-am mutat pe tăiere și construcție cu laser înainte de a face fotografii. Cu toate acestea, am construit-o pentru a fi ușor de demontat, așa că am descompus piesele din fotografiile de mai sus pentru dvs.

Uitați-vă cu atenție la imagini, deoarece firele au fost îndoite intenționat în moduri de a fi ușor de urmărit și de a menține întregul profil al componentelor electronice subțiri. Efectuarea acestei prototipuri inițiale înainte de proiectarea tăierii cu laser mi-a permis să verific grosimea pieselor, astfel încât să pot afla dimensiunile finale pentru corpul ceasului.

Veți observa că am făcut câteva panouri personalizate. Am încercat să fac poze cu spatele acelor plăci pentru a le putea repeta. Puteți cumpăra un sortiment de panouri de acest fel pentru câțiva dolari și le puteți face să se potrivească proiectului dvs.

Cablajul este direct înainte, dar lucrurile importante de reținut din imagini sunt următoarele:

  • Comutatoarele Mod și Set vor avea nevoie de rezistențe de tragere. Am folosit rezistențe de 2,21 Ohm pe care le aveam în jur, dar orice rezistență mică va funcționa (de preferință nu mai puțin de 1 kOhm). Acest lucru stabilizează pinii de intrare Arduino conectați astfel încât, atunci când cresc, să se distingă de zgomot.
  • Unda pătrată (SQW) de pe DS3234 a fost împământată, deoarece nu este utilizată.
  • Puterea de la L7805 este pusă în Arduino Mini în pin RAW. Puneți întotdeauna puterea care vine în Arduino în RAW.
  • Primul pixel al inelului de 60 de neopixeli are un rezistor de 470Ohm pentru a reduce orice deteriorare a primului pixel cauzat de vârfurile de date. Aceasta nu ar trebui să fie o problemă, deoarece neopixelul cu 24 de numere are deja un rezistor încorporat pentru acest lucru, dar mai bine sigur decât rău.
  • Comutatoarele Mode și Set sunt comutatoare momentane SPST

Culorile firului sunt:

  • Roșu: + 5VDC
  • Negru: la sol
  • Verde: date
  • Galben, albastru, alb: fire speciale pentru DS3234

Dacă este prima dată când utilizați neopixeli, ar trebui să vă amintiți că pot fi considerați un lanț lung. Așadar, ar putea părea ciudat să vorbim despre un „prim pixel” într-un inel, dar de fapt există un început și un sfârșit pentru fiecare lanț din inele. În acest proiect, cei 24 de pixeli ai inelului mic sunt pe primul loc și cei 60 de pixeli ai inelului mai mare vin după. Acest lucru înseamnă că am un lanț de 84 de neopixeli.

Pentru cablarea Arduino Mini:

  • DS3234 se conectează la pinii 10-13
  • Comutatoarele Mode și Set sunt pe pinii 2 și 3
  • Datele despre neopixeli provin de la pinul 6.

De asemenea, vă recomand să puneți cele 6 anteturi pe partea de jos a Arduino Mini, astfel încât să o puteți programa printr-un cablu FTDI.

O notă importantă despre curent: acest ceas necesită mult. Sunt sigur că aș putea să o rezolv, dar experiența mea practică este că orice lucru egal sau mai mic de 500mA va provoca în cele din urmă pierderi de valoare. Acest lucru se manifestă ca ceasul care clipeste culori nebune și nu păstrează timpul. Mustul meu final de perete este de 12V și 1,5A și nu am avut niciodată o culoare maro. Cu toate acestea, 1,5A este limita pe care o va lua regulatorul de tensiune (și alte părți). Deci, nu depășiți această sumă.

Pasul 4: Codificarea ceasului

Codificarea ceasului
Codificarea ceasului

Codul complet pentru ceas poate fi găsit în Codul NeoClock de pe GitHub. Am inclus fișierul aici, dar orice modificare va avea loc în depozit.

Cred că scrierea codului poate fi descurajantă dacă încercați să faceți totul dintr-o dată. În loc să merg pentru asta, încerc să pornesc de la un exemplu de lucru și să construiesc caracteristici pe măsură ce am nevoie de ele. Înainte de a intra în asta, vreau să subliniez că codul meu provine din combinarea multor exemple din următoarele depozite și forumul Arduino CC. Acordați întotdeauna credit acolo unde trebuie!

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

Unele exemple de cod din aceste depozite pot fi găsite în directorul meu cu exemple de coduri

Ordinea operațiilor pe care le-am folosit pentru a construi codul a mers cam așa:

  • Confirmați că neopixelii funcționează cu Exemplul de testare Strand
  • Încercați să rulați un ceas cu codul Time Loop
  • Modificați ceasul pentru a funcționa pe două inele în loc de unul singur
  • Adăugați DS3234 pentru a menține timpul prin Exemplul DeadOn RTC
  • Adăugați comutatoarele de mod și setare
  • Adăugați cod Debounce cu ajutorul tutorialului Arduion Debounce
  • Adăugați câteva teme de culoare pentru LED-urile ceasului
  • Adăugați câteva animații pentru marcajele de 0, 15, 30 și 45 de minute
  • Adăugați puncte de busolă la ceas pentru a orienta semnele 0, 15, 30 și 45 de minute

Dacă doriți să vedeți cum am construit acest cod, puteți utiliza de fapt GitHub pentru a analiza fiecare comitere de cod. Istoria pentru ceas este în Istoria comitetului.

Schemele de culori au fost distractive de adăugat, dar la final am inclus doar patru dintre ele în meniu. Fiecare temă stabilește o culoare specifică pentru „mâinile” orei, minutelor, secundelor și milisecundelor. Într-adevăr opțiunile sunt nelimitate aici, dar am inclus temele (numele metodelor enumerate):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Cu toate acestea, puteți găsi aceste metode suplimentare în cod:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Au fost adăugate animații pentru că mi-a plăcut ideea ceasurilor vechi care băteau la cele patru puncte de cincisprezece minute de pe ceas. Pentru acest ceas am realizat următoarele animații:

  • 15 minute: Colorează inelele în roșu
  • 30 de minute: Colorează inelele în verde
  • 45 de minute: Colorează inelele albastru
  • Partea de sus a orei: faceți un curcubeu peste cele două inele

Utilizarea sa dovedit a fi o problemă cu ceasul, deoarece nimeni nu putea orienta ceasul. La urma urmei, sunt doar două inele de LED-uri. Deci, pentru a rezolva problema, am adăugat punctele busolei la ceas. Acest lucru a îmbunătățit capacitatea de a spune mult timp. Dacă aș fi știut despre acest lucru înainte de a trimite piesele tăiate cu laser, aș fi putut adăuga ceva în schimb. Dar se pare că nu puteți vedea arta atât de bine în întuneric, astfel încât să aveți punctele busolei chiar ajută. Un aspect în acest sens este că, atunci când decideți să colorați un pixel, ar trebui să capturați mai întâi culoarea curentă și să creați o nouă culoare amestecată. Acest lucru îi conferă o senzație mai naturală.

Un ultim sfat este despre milisecunde. Milisecundele de pe Arduino se desprind de cristalul Arduino intern și nu de DS3234. Depinde de dvs. dacă doriți să afișați sau nu milisecunde, dar am făcut așa ceasul părea întotdeauna să facă ceva. S-ar putea să vă înșelați că milisecundele și secundele nu se aliniază întotdeauna, dar în practică nimeni nu mi-a menționat-o niciodată când mă uit la ceas și cred că arată frumos.

Pasul 5: Proiectarea fișierelor tăiate cu laser

Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser
Proiectarea fișierelor tăiate cu laser

Există două considerații pe care a trebuit să le fac atunci când proiectez fișierele tăiate cu laser. Primul a fost materialul din care am vrut să-l construiesc și al doilea a fost modul în care ar fi construit. Știam că vreau un finisaj din lemn cu acrilic, difuzează neopixelii. Pentru a afla materialul, am comandat mai întâi câteva mostre de la Ponoko:

  • 1x MDF pentru furnir - nuc
  • 1x MDF pentru furnir - Cireș
  • 1x acrilic - gri deschis
  • 1x Acrilic - Opal

Selecțiile de lemn mi-au permis să văd cum ar arăta rasterizarea și cum ar arde arsura pe partea laterală a ceasului. Acrilicul mă lăsa să testez difuzia neopixelilor și să compar cum ar arăta lemnul. În cele din urmă m-am decis pe lemn de cireș cu acril Opal.

Dimensiunile ceasului au fost determinate în principal de mărimea inelelor de neopixel. Ceea ce nu știam era cât de gros trebuie să fie pentru a se potrivi electronice. După ce am construit electronica și știind că lemnul avea o grosime de aproximativ 5,5 mm, am decis că am nevoie de aproximativ 15 mm de spațiu în interiorul ceasului. Asta însemna trei straturi de lemn. Dar cu fața și partea din spate deja ocupând majoritatea spațiului din designul meu, trebuia să împart acele inele în „coaste” pe care să le pot lipi mai târziu.

Am folosit InkScape pentru a desena pe șablonul oferit de Ponoko. După ce am scos corpul ceasului, m-am apucat să desenez copacul cu mâna. Nu am putut importa imaginea originală care m-a inspirat, dar nu a fost groaznic să-mi dau seama cum să fac eu ceva similar.

Costul materialelor a fost de doar aproximativ 20 USD, dar costul tăierii a fost de aproximativ 100 USD mai mult. Două lucruri au contribuit la acest lucru:

  • Curbele și cercurile costă mai mult, deoarece mașina se mișcă în două axe, iar acest design are o mulțime de curbe
  • Rasterizarea necesită o mulțime de treceri înainte și înapoi pe piesă. Renunțarea la acest lucru ar fi economisit cei mai mulți bani, dar mi-a plăcut.

După finalizarea proiectului, am trimis fișierele EPS către Ponoko și piesele mele au fost finalizate aproximativ o săptămână mai târziu.

Rețineți că nu am inclus comutatoarele Mode și Set sau DC Power Jack în proiectare. Când am trimis acest lucru, încă nu m-am hotărât asupra acelor părți. Pentru a-mi oferi mai multă flexibilitate, i-am lăsat și am decis să le forez mai târziu cu mâna.

Pasul 6: Construirea ceasului

Construirea ceasului
Construirea ceasului
Construirea ceasului
Construirea ceasului
Construirea ceasului
Construirea ceasului
Construirea ceasului
Construirea ceasului

Când au sosit toate piesele, am construit ceasul. Primul pas a fost corpul ceasului care mi-a cerut să scot coastele și să le lipesc în spate și în față. Am pus două straturi de coaste pe spate și un strat pe față și le-am așezat cu lipici pentru lemn. Pentru partea din față am folosit lipici pentru lemn pentru a lega inelele acrilice și cercurile din lemn. Aveam o piesă centrală de rezervă pe care o tăiam ca un martor care îmi venea la îndemână în timpul construcției. L-am lipit pe spatele bucății de copac și asta mi-a dat un loc unde să pot lipi neopixelii mai târziu.

Cu caroseria construită, am decis să forez găuri pentru întrerupătoare și mufa de alimentare. O mică geometrie (așa cum se vede în imagine) m-a ajutat să aliniez totul. Folosind o bucată separată de lemn pe exterior în timp ce foram (foarte atent!) Am făcut găurile și am lipit comutatoarele și cricul.

Toate componentele electronice au intrat în continuare. Am lipit neopixeli mai întâi urmat de condensator. Acestea le-am conectat la placa de alimentare neopixel. Apoi pentru spate am pus firele pe întrerupătoare și priza de alimentare. Am inclus și regulatorul de tensiune L7805.

O notă rapidă despre orientarea inelelor. Pentru inelul mare de 60 de pixeli, trebuie să orientați ceasul astfel încât unul dintre pixeli să fie exact în partea de sus pentru a marca zero minute. Ce pixel nu contează și voi ajunge la motiv într-un minut. Pentru inelul mic de 24 de pixeli trebuie să orientați ceasul astfel încât partea de sus să fie de fapt între doi pixeli. Motivul pentru aceasta este că, dacă doriți să marcați 12 ore, atunci ajungeți să aprindeți doi pixeli în loc de unul. Având decalajul și cu difuzia plasticului, acesta va apărea ca și cum ai avea cu adevărat 12 pixeli largi.

În ceea ce privește pixelul pe care codul îl desemnează drept „partea de sus” pentru fiecare inel, trebuie să editați puțin codul. Am două valori în codul meu numite „inner_top_led” și „outer_top_led”. În ceasurile mele, „inner_top_led” avea 11 pixeli de la începutul inelului mic, iar „exterior_top_led” avea 36 de pixeli de la începutul inelului mare. Dacă se întâmplă să orientezi inelele în mod diferit, atunci ai schimba aceste valori pentru a fi cele din orientarea ta. Un pic de experimentare și veți găsi valoarea corectă destul de repede.

În acest moment am testat că totul a funcționat așa cum era de așteptat.

Dar, la fel ca în cazul tuturor proiectelor, am întâmpinat o problemă pe măsură ce mi-am dat seama că nu-mi dădusem seama cum va rezista. Am observat că aveam aproximativ 3/8 inch spațiu între neopixeli și coaste, așa că m-am îndreptat spre Home Depot și am primit un diblu de 3/8 inch și un număr de magneți de neodim. Am construit mici suporturi de lemn în trei locuri și le-am șlefuit, astfel încât să pot pune doi magneți pe fiecare suport (folosind super lipici). Am ajuns cu 3 perechi de câte 2 standuri fiecare. Apoi le-am lipit în cadru și le-am ținut pe toate cu o clemă. Am făcut acest lucru în timp ce lipiciul de pe tribune era ud, astfel încât totul să se alinieze și apoi să se usuce în locul corect. Acest lucru a funcționat perfect și îmi place că lansarea este ascunsă.

În sfârșit, mi-am dat seama că trebuie să-l agăț de perete, așa că am forat un mic hangar pe spate, astfel încât să-l pot pune pe perete.

Pasul 7: Gânduri finale

Acest proiect a fost foarte distractiv de construit și mi-a plăcut să învăț despre neopixeli și DS3234. Mi-a plăcut mai ales să construiesc în sfârșit un proiect care arăta frumos de la început până la sfârșit. Există câteva lucruri pe care le-aș actualiza dacă aș face din nou acest lucru, dar sunt minore:

  • Am ales două butoane în loc de trei pentru simplitate. Dar a avea un buton care să-mi permită să cobor, precum și în sus, ar fi fost frumos pentru setarea ceasului
  • Butonul de mod și butonul de setare nu se pot distinge. Le amestec des. Poate că le-aș pune pe părți opuse în viitor.
  • Nu am terminat niciodată fața din lemn. La început mi-a plăcut aspectul crud și mai târziu m-am îngrijorat că, dacă am încurca finisajul, ar costa mult să se repare.
  • Rasterizarea arborelui a fost un aspect ok, dar aș fi putut să atrag mai multe detalii pentru copac în viitor.
  • Atenuarea ceasului ar fi o caracteristică frumoasă, deoarece este destul de strălucitoare pe întuneric. Cu toate acestea, estomparea este legată de culoare și am dat seama că acel bit a durat prea mult, așa că l-am scăpat. Probabil că aș investi din nou în această funcție în viitor.

Vă mulțumim că ați citit acest instructable. Sper că îți vei crea propriul proiect de ceas sau neopixel și îl vei împărtăși cu mine. Clădire fericită!

Recomandat: