Turinys:

„NeoClock“: 7 žingsniai (su nuotraukomis)
„NeoClock“: 7 žingsniai (su nuotraukomis)

Video: „NeoClock“: 7 žingsniai (su nuotraukomis)

Video: „NeoClock“: 7 žingsniai (su nuotraukomis)
Video: neoClock 2024, Birželis
Anonim
Image
Image

Tai yra laikrodžio kūrimas naudojant fantastiškus „Adafruit“neopikselių žiedus. Smagus šio laikrodžio dalykas yra tas, kad jis iš tikrųjų turi du neopikselių žiedus, vieną - valandoms, kitą - minutėms, sekundėms ir milisekundėms. Laikrodis puikiai išlaiko laiką naudojant „Sparkfun“DS3234 „DeadOn Real Time Clock“mikroschemą. Lengva kurti ir smagu modifikuoti. Tikiuosi, kad tai įkvėps kitus kurti laikrodžius ar kitą meną naudojant neopikselių žiedus.

Tiems iš jūsų, kurie nori, kad visi mano failai būtų lengvai valdomo formato, nedvejodami atsisiųskite juos iš šio projekto „github“saugyklos adresu

1 žingsnis: suprojektuokite laikrodį

Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas
Laikrodžio projektavimas

Nuo pat pradžių žinojau, kad noriu naudoti bent du neopikselių žiedus. Po šiek tiek darbo nusprendžiau, kad geriausias dizainas būtų vienas žiedas kito viduje, kuris išlaikytų pradinę laikrodžio formą. Mažesnis žiedas būtų valandos, o likęs laikas būtų laikomas didesniame žiede. Kai kurie dizaino svarstymai apėmė neopikselių kainą, galios poreikį, lazeriu supjaustytų gabalų dydį ir kokį meną norėjau įdėti.

Baigęs šį žingsnį nusprendžiau, kad prieš kurdamas laikrodžio korpuso pjaustymo lazeriu planus, turiu suprasti elektroniką.

2 žingsnis: Elektronikos projektavimas

Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas
Elektronikos projektavimas

Kuriant elektroniką reikėjo iš anksto žinoti laikrodžio norimus elementus:

  • Neopikseliniai žiedai (60 ir 24)
  • Arduino (smegenys)
  • Laikrodžio reguliavimas (arduinos nesilaiko gero laiko)
  • Galios valdymas

Neopikselių dydis ir galios reikalavimai yra gerai dokumentuoti. Kadangi jie veikia 5 V nuolatine srove, nusprendžiau eiti su 5 V „Arduino“ir padaryti viską paprasčiau. Atsižvelgdamas į erdvę, nusprendžiau prototipuoti įprastą „Arduino Uno“, tačiau galutinei elektronikai pasirinkau „Arduino Mini“.

Pirmasis šio projekto kartojimas buvo tiesiogiai iš „Adafruit“puslapio „NeoPixel Basic Connections“. Aš įtraukiau diagramą iš svetainės, kad būtų lengviau. Iš to svarbūs du dalykai:

  1. Reikia 1000uF kondensatoriaus, kad pradinis srovės smūgis nepažeistų taškų.
  2. Pirmajame 60 skaitmenų žiedo taške reikalingas 470 omų rezistorius (šis rezistorius yra įmontuotas į 24 skaičių žiedą)

„Adafruit“taip pat turi „NeoPixel“geriausių praktikų rinkinį, kurį turėtumėte perskaityti prieš tęsdami dizainą.

Laiko laikymasis yra dar viena problema. „Arduino“įmontuoto laikrodžio nepakanka, kad ilgą laiką būtų galima gerai praleisti laiką. Blogesnė problema yra ta, kad arduino laiką gali tekti iš naujo nustatyti kiekvieną kartą. Kompiuteriai išsprendžia šią problemą naudodami mažą bateriją laikrodžio mikroschemoje, kad būtų išlaikytas laikas tarp maitinimo išjungimų. Anksčiau aš naudodavau kažką panašaus į „ChronoDot“iš „Adafruit“. Bet šiuo atveju norėjau pasiteisinimo naudoti „SparkFun“DS3234 („DeadOn RTC“). Taip pat galite išsaugoti „DeadOn RTC“datos informaciją, jei norite ją integruoti į laikrodį.

Galiausiai, reikia šiek tiek apsvarstyti energijos valdymą. Aš jau žinojau, kad viskas turi būti 5 V, bet reikiamos srovės kiekis atrodė paslaptis. Dažniausiai įtampos reguliatorius daugelyje projektų yra L7805. Tai užtruks iki 24 V įtampos ir maksimalios srovės iki 1,5 A. Žinojau, kad turiu 12V 1,5A sieninę misą, todėl nusprendžiau, kad tai bus puikus (ir pigus!) Įtampos reguliatorius projektui.

Likę gabalai buvo paimti iš mano dalių dėžutės arba „Radio Shack“. Juose buvo laidai, jungikliai ir nuolatinės srovės maitinimo lizdas.

3 žingsnis: Elektronikos kūrimas

Elektronikos kūrimas
Elektronikos kūrimas
Elektronikos kūrimas
Elektronikos kūrimas
Elektronikos kūrimas
Elektronikos kūrimas

Visą elektronikos, kurią nusipirkau šiam projektui sukurti, sąrašą galite rasti mano „github“saugykloje čia: Elektronikos dalių sąrašas. Jame yra nuorodos į kiekvieno gabalo produkto puslapį ir yra papildomos informacijos, įskaitant produkto SKU. Greitai sukūriau prototipą ant duonos lentos ir prieš fotografuodamas persikėliau į lazerinį pjovimą ir kūrimą. Tačiau aš jį sukūriau taip, kad būtų lengva išardyti, todėl aš jums suskaidiau aukščiau esančių nuotraukų gabalus.

Atidžiai pažiūrėkite į vaizdus, nes laidai buvo sąmoningai sulenkti taip, kad juos būtų lengva sekti ir kad visas elektronikos profilis būtų plonas. Atlikdamas šį pradinį prototipą prieš suprojektuodamas lazerį, galėjau patikrinti dalių storį, kad galėčiau išsiaiškinti galutinius laikrodžio korpuso matmenis.

Jūs pastebėsite, kad aš padariau keletą pasirinktinių duonos lentų. Aš bandžiau nufotografuoti tų lentų nugarėles, kad galėtumėte jas pakartoti. Už porą dolerių galite nusipirkti tokių duonos lentų asortimentą ir pritaikyti jas jūsų projektui.

Laidai yra tiesiai į priekį, tačiau svarbūs dalykai, kuriuos reikia atsiminti iš vaizdų, yra šie:

  • Režimams ir nustatymo jungikliams reikės nuleidžiamų rezistorių. Aš naudojau 2,21 omo rezistorius, kuriuos turėjau gulėti, bet bet koks mažas rezistorius veiks (pageidautina ne mažiau kaip 1 kOhm). Tai stabilizuoja prijungtus „Arduino“įvesties kaiščius, kad kai jie pakyla aukštai, juos galima atskirti nuo triukšmo.
  • Kvadratinė banga (SQW) DS3234 buvo įžeminta, nes ji nenaudojama.
  • Maitinimas iš L7805 dedamas į „Arduino Mini“RAW kaiščiu. Į „Arduino“tiekiamą energiją visada įdėkite į RAW.
  • Pirmasis 60 neopikselių žiedo pikselis turi 470 omų rezistorių, kuris sumažina bet kokį pirmojo pikselio pažeidimą dėl duomenų šuolių. Tai neturėtų kelti problemų, nes 24 skaičių neopikselis jau turi įmontuotą rezistorių, bet geriau saugotis nei gailėtis.
  • „Mode“ir „Set“jungikliai yra momentiniai SPST mygtukiniai jungikliai

Vielos spalvos yra:

  • Raudona: +5VDC
  • Juoda: žemė
  • Žalia: duomenys
  • Geltona, mėlyna, balta: specialūs laidai, skirti DS3234

Jei pirmą kartą naudojate neopikselius, turėtumėte atsiminti, kad juos galima laikyti ilga grandine. Taigi gali atrodyti keista kalbėti apie „pirmąjį pikselį“žiede, tačiau iš tikrųjų kiekviena žiedų grandinė turi pradžią ir pabaigą. Šiame projekte 24 mažo žiedo pikseliai yra pirmieji, o 60 didesnio žiedo pikseliai yra po to. Tai tikrai reiškia, kad turiu 84 neopikselių grandinę.

„Arduino Mini“laidų prijungimui:

  • DS3234 jungiasi prie 10 - 13 kaiščių
  • „Mode“ir „Set“jungikliai yra ant 2 ir 3 kaiščių
  • Neopikselių duomenys gaunami iš 6 kaiščio.

Taip pat rekomenduoju įdėti 6 antraštes „Arduino Mini“apačioje, kad galėtumėte jas užprogramuoti per FTDI kabelį.

Svarbi pastaba apie srovę: šiam laikrodžiui reikia daug. Aš tikiu, kad galėčiau tai išspręsti, tačiau mano praktinė patirtis rodo, kad viskas, kas yra lygi ar mažesnė nei 500 mA, ilgainiui sukels rudą atspalvį. Tai pasireiškia tuo, kad laikrodis mirksi beprotiškomis spalvomis ir nesulaiko laiko. Mano paskutinė sieninė misa yra 12 V ir 1,5 A, ir aš niekada neturėjau rudos spalvos. Tačiau 1,5A yra riba, kurią įtampos reguliatorius (ir kitos dalys) užims. Taigi neviršykite šios sumos.

4 žingsnis: laikrodžio kodavimas

Laikrodžio kodavimas
Laikrodžio kodavimas

Visą laikrodžio kodą rasite „GitHub“„NeoClock“kode. Aš įtraukiau failą čia, bet visi pakeitimai įvyks saugykloje.

Manau, kad kodo rašymas gali būti bauginantis, jei bandysite padaryti viską iš karto. Užuot to siekęs, bandau pradėti nuo veikiančio pavyzdžio ir sukurti funkcijas, kurių man reikia. Prieš įsitraukdamas į tai noriu pabrėžti, kad mano kodas atsirado derinant daugybę pavyzdžių iš šių saugyklų ir „Arduino CC“forumo. Visada suteikite kreditą ten, kur reikia!

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

Kai kuriuos kodo pavyzdžius iš šių saugyklų rasite mano kodo pavyzdžių kataloge

Operacijų tvarka, kurią naudoju kurdamas kodą, buvo maždaug tokia:

  • Patvirtinkite, kad neopikseliai veikia su pluošto bandymo pavyzdžiu
  • Pabandykite paleisti laikrodį su laiko ciklo kodu
  • Pakeiskite laikrodį, kad jis veiktų ne vienu, o dviem žiedais
  • Pridėkite DS3234, kad išlaikytumėte laiką per „DeadOn RTC“pavyzdį
  • Pridėkite režimą ir nustatykite jungiklius
  • Pridėkite „Debounce“kodą naudodami „Arduion Debounce“mokymo programą
  • Pridėkite keletą spalvų temų laikrodžio šviesos diodams
  • Pridėkite animacijų, skirtų 0, 15, 30 ir 45 minučių žymėms
  • Pridėkite kompaso taškus prie laikrodžio, kad būtų galima nustatyti 0, 15, 30 ir 45 minučių žymes

Jei norite pamatyti, kaip sukūriau šį kodą, iš tikrųjų galite naudoti „GitHub“, kad peržiūrėtumėte kiekvieną kodo įsipareigojimą. Laikrodžio istorija yra įsipareigojimų istorijoje.

Spalvų schemas buvo smagu pridėti, bet galiausiai į meniu įtraukiau tik keturias iš jų. Kiekviena tema nustato tam tikrą valandos, minutės, sekundės ir milisekundžių „rankų“spalvą. Iš tikrųjų čia yra begalė variantų, bet aš įtraukiau temas (išvardyti metodų pavadinimai):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Tačiau šiuos papildomus metodus galite rasti kode:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animacijos buvo pridėtos, nes man patiko idėja, kad keturi penkiolikos minučių laikrodžio taškeliai skamba senais laikrodžiais. Dėl šio laikrodžio padariau šias animacijas:

  • 15 minučių: nuspalvinkite žiedus raudonai
  • 30 minučių: nuspalvinkite žiedus žalia spalva
  • 45 minutės: nuspalvinkite žiedus mėlyna spalva
  • Valandos viršus: atlikite vaivorykštę per du žiedus

Naudojamumas pasirodė esąs laikrodžio problema, nes niekas negalėjo orientuoti laikrodžio. Galų gale tai tik du šviesos diodų žiedai. Taigi, norėdamas išspręsti problemą, prie laikrodžio pridėjau kompaso taškus. Tai pagerino gebėjimą daug pasakyti laiką. Jei būčiau žinojęs apie tai prieš išsiunčiant lazeriu supjaustytus kūrinius, galbūt būčiau ką nors pridėjęs prie meno. Tačiau pasirodo, kad tamsoje negali taip gerai matyti meno, todėl kompaso taškų turėjimas tikrai padeda. Vienas iš svarstymų yra tai, kad nusprendę nuspalvinti pikselį pirmiausia turėtumėte užfiksuoti esamą spalvą ir sukurti naują sumaišytą spalvą. Tai suteikia jai natūralesnį pojūtį.

Paskutinis dalykas yra apie milisekundes. „Arduino“milisekundės atsiranda nuo vidinio „Arduino“kristalo, o ne nuo DS3234. Tai priklauso nuo jūsų, ar norite rodyti milisekundes, ar ne, bet aš padariau, kad laikrodis visada kažką darė. Galbūt jus trikdo tai, kad milisekundės ir sekundės ne visada sutampa, tačiau praktiškai niekas man to nepaminėjo žiūrėdamas į laikrodį ir manau, kad tai atrodo gražiai.

5 žingsnis: lazeriu supjaustytų failų projektavimas

Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas
Lazeriu supjaustytų failų projektavimas

Kurdamas lazeriu supjaustytus failus, turėjau atsižvelgti į du dalykus. Pirmoji buvo medžiaga, iš kurios norėjau ją pastatyti, o antroji - kaip ji bus sukonstruota. Žinojau, kad noriu medžio apdailos su akrilu, kuris išsklaidytų neopikselius. Norėdami išsiaiškinti medžiagą, pirmiausia užsisakiau keletą pavyzdžių iš „Ponoko“:

  • 1x fanera MDF - riešutas
  • 1x fanera MDF - vyšnia
  • 1x akrilas - šviesiai pilkas
  • 1x akrilas - opalas

Pasirinkus medieną, galiu pamatyti, kaip atrodys rastrizacija ir kaip nudegimas atrodys laikrodžio pusėje. Akrilas leistų man išbandyti neopikselių sklaidą ir palyginti, kaip jis atrodytų prieš medieną. Galų gale aš nusprendžiau pasirinkti vyšnių medieną su „Opal“akrilu.

Laikrodžio matmenis daugiausia nulėmė neopikselių žiedų dydis. Aš nežinojau, kokio storio jis turi būti, kad tilptų elektronika. Sukūręs elektroniką ir žinodamas, kad mediena yra apie 5,5 mm storio, nusprendžiau, kad man reikia maždaug 15 mm vietos laikrodžio viduje. Tai reiškė tris medienos sluoksnius. Bet kadangi priekis ir nugara jau užima didžiąją dalį mano dizaino, reikėjo tuos žiedus suskaidyti į „šonkaulius“, kuriuos vėliau galėčiau suklijuoti.

Naudodama „InkScape“piešiau pagal „Ponoko“pateiktą šabloną. Nupiešęs laikrodžio korpusą, aš pradėjau piešti medį ranka. Negalėjau importuoti originalaus įvaizdžio, kuris mane įkvėpė, bet nebuvo baisu sugalvoti, kaip padaryti kažką panašaus.

Medžiagų kaina buvo tik apie 20 USD, tačiau pjovimo kaina buvo apie 100 USD didesnė. Prie to prisidėjo du dalykai:

  • Kreivės ir apskritimai kainuoja daugiau, nes mašina juda dviem ašimis ir ši konstrukcija turi daug kreivių
  • Rasterizavimui reikia daug perdavimų pirmyn ir atgal visame kūrinyje. Išmetus būtų sutaupyta daugiausiai pinigų, bet man patiko.

Baigęs dizainą išsiunčiau EPS failus į „Ponoko“, o mano kūriniai buvo padaryti maždaug po savaitės.

Atminkite, kad į dizainą neįtraukiau režimo ir nustatymo jungiklių ar nuolatinės srovės maitinimo lizdo. Kai išsiunčiau tai, aš vis dar nebuvau nusprendęs dėl tų dalių. Kad suteikčiau daugiau lankstumo, aš juos palikau ir nusprendžiau vėliau gręžti rankomis.

6 veiksmas: laikrodžio konstravimas

Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas
Laikrodžio konstravimas

Kai atkeliavo visos dalys, aš sukonstravau laikrodį. Pirmasis žingsnis buvo laikrodžio korpusas, dėl kurio reikėjo išmušti šonkaulius ir priklijuoti juos prie nugaros ir priekio. Aš uždėjau du sluoksnius šonkaulių ant nugaros ir vieną sluoksnį priekyje ir nustatiau juos medžio klijais. Priekyje aš naudoju medienos klijus, kad sujungčiau akrilo žiedus ir medžio apskritimus. Turėjau atsarginę centrinę dalį, kurią nupjaučiau kaip ruošinį, kuris pravertė statybos metu. Aš priklijavau jį prie medžio gabalo galo ir tai suteikė man vietą, kur vėliau galėčiau klijuoti neopikselius.

Sukūręs korpusą nusprendžiau išgręžti skyles jungikliams ir maitinimo lizdui. Šiek tiek geometrijos (kaip parodyta paveikslėlyje) padėjo man viską suderinti. Naudodamas atskirą medžio gabalą išorėje, kai gręžiau (labai atsargiai!), Padariau skyles ir įklijavau jungiklius ir kėliklį.

Toliau įsijungė visa elektronika. Pirmiausia klijavau neopikselius, po to kondensatorių. Aš prijungiau juos prie neopikselių maitinimo pertraukos plokštės. Tada užpakalinėje dalyje aš įdėjau laidus ant jungiklių ir maitinimo lizdo. Aš taip pat įtraukiau įtampos reguliatorių L7805.

Greita pastaba apie žiedų orientaciją. Dideliam 60 pikselių žiedui reikia orientuoti laikrodį taip, kad vienas iš pikselių būtų tiksliai viršuje, kad būtų pažymėtos nulinės minutės. Kuris pikselis nesvarbu, ir aš suprasiu, kodėl per minutę. Mažam 24 pikselių žiedui reikia orientuoti laikrodį taip, kad viršus iš tikrųjų būtų tarp dviejų pikselių. To priežastis yra ta, kad jei norite pažymėti 12 valandų, galiausiai užsidegsite du pikseliai, o ne vienas. Turint poslinkį ir sklaidant plastiką, atrodys taip, lyg tikrai turėtumėte 12 plačių pikselių.

Kalbant apie tai, kuris pikselis yra kiekvieno žiedo „viršuje“, turite šiek tiek redaguoti kodą. Mano kode yra dvi vertės, pavadintos „internal_top_led“ir „external_top_led“. Mano laikrodžių rodinyje „vidinis_apdorotas“buvo 11 pikselių nuo mažo žiedo pradžios, o „išorinis_žaidėjas“- 36 taškai nuo didžiojo žiedo pradžios. Jei atsitiktinai nukreiptumėte žiedus kitaip, pakeistumėte šias vertes į tas, kurios yra iš jūsų orientacijos. Šiek tiek eksperimentuodami ir gana greitai rasite tinkamą vertę.

Šiuo metu aš išbandžiau, ar viskas veikia taip, kaip tikėjausi.

Tačiau, kaip ir visuose projektuose, susidūriau su problema, nes supratau, kad neįsivaizdavau, kaip tai derės. Pastebėjau, kad tarp neopikselių ir šonkaulių turiu apie 3/8 colio vietos, todėl nuėjau į „Home Depot“ir gavau 3/8 colio kaištį bei daugybę neodimio magnetų. Aš pastatiau nedidelius medinius stovus trijose vietose ir nušlifavau, kad galėčiau ant kiekvieno stovo uždėti du magnetus (naudojant super klijus). Aš gavau 3 poras po 2 stendus. Tada aš juos įklijavau į rėmą ir laikiau spaustuku. Aš tai padariau, kol klijai ant stovų buvo šlapi, kad viskas susilygintų ir išdžiūtų reikiamoje vietoje. Tai puikiai pavyko ir man patinka, kad visas leidimas yra paslėptas.

Galiausiai supratau, kad reikia pakabinti jį ant sienos, todėl išgręžiau nedidelį angarą gale, kad galėčiau jį pastatyti ant sienos.

7 žingsnis: paskutinės mintys

Šį projektą buvo labai smagu kurti ir man patiko sužinoti apie neopikselius ir DS3234. Man ypač patiko pagaliau sukurti projektą, kuris atrodė gražiai nuo pradžios iki pabaigos. Yra keletas dalykų, kuriuos norėčiau atnaujinti, jei tai padarysiu dar kartą, tačiau jie yra nedideli:

  • Paprastumo dėlei pasirinkau du mygtukus, o ne tris. Bet turint mygtuką, kuris leistų nusileisti ir pakilti aukštyn, būtų buvę malonu nustatyti laikrodį
  • Režimo mygtukas ir nustatymo mygtukas nesiskiria. Aš dažnai juos maišau. Galbūt ateityje aš juos įdėsiu į priešingas puses.
  • Aš niekada nebaigiau medžio priekio. Iš pradžių žavinga išvaizda man patiko, o vėliau susirūpinau, kad jei sugadinsiu apdailą, tai kainuos daug.
  • Medžio rastrizavimas buvo gerai atrodantis, tačiau ateityje galėčiau nupiešti daugiau medžio detalių.
  • Laikrodžio pritemdymas taip pat būtų puiki savybė, nes tamsoje jis yra gana ryškus. Tačiau pritemdymas yra susietas su spalva ir supranti, kad antgalis užtruko per ilgai, todėl aš jį numečiau. Tikriausiai ateityje vėl investuosiu į šią funkciją.

Dėkojame, kad perskaitėte šią pamoką. Tikiuosi, kad sukursite savo laikrodžio ar neopikselių projektą ir pasidalinsite juo su manimi. Laimingas pastatas!

Rekomenduojamas: