Mündəricat:

NeoClock: 7 addım (şəkillərlə)
NeoClock: 7 addım (şəkillərlə)

Video: NeoClock: 7 addım (şəkillərlə)

Video: NeoClock: 7 addım (şəkillərlə)
Video: neoClock 2024, Iyun
Anonim
Image
Image

Bu, Adafruit -in fantastik neopixel üzüklərindən istifadə edərək bir saat qurmaqdır. Bu saatın əyləncəli tərəfi, əslində biri saatı izah etmək üçün, biri də dəqiqə, saniyə və milisaniyələr üçün iki neopikseldən ibarət olmasıdır. Saat, Sparkfun DS3234 DeadOn Real Time Clock çipindən istifadə edərək mükəmməl vaxt saxlayır. Qurmaq asandır və dəyişdirmək əyləncəlidir. Ümid edirəm ki, bu, başqalarına neopiksel üzüklərdən istifadə edərək saatlar və ya başqa sənətlər yaratmağa ilham verəcəkdir.

Bütün sənədlərimi sadə bir şəkildə idarə etmək istəyənlər üçün https://github.com/chrisgilmerproj/neoclock ünvanından bu layihə üçün github depomdan yükləyə bilərsiniz.

Addım 1: Saatın dizaynı

Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı
Saatın Dizaynı

Əvvəldən bilirdim ki, ən azı iki neopiksel üzükdən istifadə etmək istəyirəm. Bir az işlədikdən sonra ən yaxşı dizaynın, bir saatın orijinal formasını saxlayan bir halqanın digərinin içərisində olması olduğuna qərar verdim. Kiçik üzük saatlar, qalan zaman isə daha böyük halqada saxlanılacaq. Bəzi dizayn mülahizələrinə neopiksellərin qiyməti, güc tələbi, lazerlə kəsilmiş parçaların ölçüsü və hansı sənəti qoymaq istədim.

Bu addımı tamamladıqdan sonra, saat gövdəsini lazerlə kəsmə planları yaratmadan əvvəl elektronikanı başa düşməyimə qərar verdim.

Addım 2: Elektronikanın dizaynı

Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı

Elektronikanın dizaynı, saatda istədiyim elementləri əvvəlcədən bilməklə başladı:

  • Neopixel üzüklər (60 say və 24 say)
  • Arduino (beyin)
  • Saat Tənzimlənməsi (arduino yaxşı vaxt keçirmir)
  • Güc idarəetməsi

Neopiksellərin ölçüləri və güc tələbləri yaxşı sənədləşdirilmişdir. 5V DC -də işlədikləri üçün 5V Arduino ilə getməyə və özüm üçün hər şeyi asanlaşdırmağa qərar verdim. Məkanı nəzərə alaraq adi bir Arduino Uno üzərində prototip qurmağa qərar verdim, amma son elektronika üçün bir Arduino Mini seçdim.

Bu layihənin ilk iterasiyası birbaşa Adafruit -in NeoPixel Basic Connections səhifəsindən gəldi. İşi asanlaşdırmaq üçün veb saytdakı diaqramı əlavə etdim. Buradan iki şey vacibdir:

  1. İlkin cərəyanın piksellərə zərər verməməsi üçün 1000 uF kondansatör lazımdır.
  2. 60 saylı halqanın ilk pikselində 470ohm rezistora ehtiyac var (bu müqavimət 24 saylı halqaya quraşdırılmışdır)

Adafruit -in dizaynına davam etməzdən əvvəl oxumalı olduğunuz NeoPixel Ən Yaxşı Təcrübələr dəsti də var.

Vaxtı saatda saxlamaq başqa bir problemdir. Arduino -da quraşdırılmış saat uzun müddət yaxşı vaxt keçirmək üçün kifayət deyil. Daha pis bir problem, arduino üzərindəki vaxtın hər dəfə sıfırlanması lazım ola bilər. Kompüterlər bu problemi elektrik kəsilmələri arasında vaxt saxlamaq üçün saat çipində kiçik bir batareya istifadə edərək həll edirlər. Əvvəllər Adafruit -dən ChronoDot kimi bir şey istifadə edərdim. Ancaq bu vəziyyətdə SparkFun -dan DS3234 (DeadOn RTC) istifadə etmək üçün bir bəhanə istədim. Tarix məlumatlarını saata inteqrasiya etmək istəyirsinizsə DeadOn RTC -də də saxlaya bilərsiniz.

Nəhayət, güc idarəçiliyinin bir qədər nəzərə alınması lazım idi. Artıq hər şeyin 5V olması lazım olduğunu bilirdim, amma lazım olan cərəyanın miqdarı bir sirr kimi görünürdü. Əksər layihələrdə ümumi bir gərginlik tənzimləyicisi L7805 -dir. Bu, 24V -ə qədər gərginlik və 1,5A -a qədər maksimum cərəyan alacaq. Ətrafımda 12V 1.5A divar qıvrım olduğunu bilirdim, buna görə layihə üçün mükəmməl (və ucuz!) Gərginlik tənzimləyicisi olacağına qərar verdim.

Qalan parçalar hissələr qutusundan və ya Radio Shack -dən gələcəkdi. Kabellərə, açarlara və DC elektrik prizinə daxil idi.

Addım 3: Elektronikanın qurulması

Elektronikanın qurulması
Elektronikanın qurulması
Elektronikanın qurulması
Elektronikanın qurulması
Elektronikanın qurulması
Elektronikanın qurulması

Bu layihəni qurmaq üçün aldığım elektronikanın tam siyahısını buradakı github depomda tapa bilərsiniz: Elektronika Parçaları Siyahısı. Hər bir parça üçün məhsul səhifəsinə bağlantılar var və məhsul SKU daxil olmaqla bəzi əlavə məlumatları ehtiva edir. Bunu tez bir çörək taxtasında prototip etdim və hər hansı bir şəkil çəkməzdən əvvəl lazer kəsmə və tikiliyə keçdim. Ancaq ayırmaq asan olacaq şəkildə qurdum, buna görə də yuxarıdakı fotoşəkillərdəki parçaları sizin üçün ayırdım.

Şəkillərə diqqətlə baxın, çünki tellər qəsdən bükülmüşdür və elektronikanın bütün profilini incə saxlayır. Lazer kəsik dizaynından əvvəl bu ilkin prototipi etmək, hissələrin qalınlığını yoxlamağa imkan verdi, beləliklə saat gövdəsinin son ölçülərini anlaya bildim.

Bir neçə xüsusi çörək taxtası hazırladığımı görəcəksiniz. Onları təkrarlamaq üçün həmin lövhələrin arxa tərəflərinin şəkillərini çəkməyə çalışdım. Bir neçə dollara bu cür çörək lövhələri ala bilərsiniz və onları layihənizə uyğunlaşdıra bilərsiniz.

Kablolama düzdür, ancaq görüntülərdən yadda saxlamağınız vacib olan şeylər bunlardır:

  • Mode və Set açarlarının aşağı çəkmə rezistorlarına ehtiyacı olacaq. Ətrafımda yatan 2.21Ohm rezistorlardan istifadə etdim, amma hər hansı bir kiçik rezistor işləyəcək (tercihen 1kOhm -dan az olmamalıdır). Bu, bağlı Arduino giriş pinlərini sabitləşdirir ki, yüksəklərə çıxanda səs -küydən fərqlənir.
  • DS3234 üzərindəki kvadrat dalğası (SQW) istifadədə olmadığı üçün əsaslandırılmışdır.
  • L7805 -in gücü RAW pinli Arduino Mini -yə verilir. Həmişə Arduino -ya daxil olan gücü RAW -a qoyun.
  • 60 neopixel halqanın ilk pikseli, məlumat sıçrayışlarından ilk pikseldə olan hər hansı bir ziyanı azaltmaq üçün 470 Ohm müqavimətə malikdir. 24 saylı neopikseldə bunun üçün artıq quraşdırılmış bir rezistor olduğu üçün bu problem olmamalıdır, amma üzr istəməkdən daha təhlükəsizdir.
  • Mode və Set açarları SPST ani düymə açarlarıdır

Tel rəngləri bunlardır:

  • Qırmızı: +5VDC
  • Qara: torpaq
  • Yaşıl: Məlumat
  • Sarı, Mavi, Ağ: DS3234 üçün xüsusi tellər

İlk dəfə neopikseldən istifadə edirsinizsə, yadda saxlamalısınız ki, onlar uzun zəncir kimi düşünülə bilər. Bir ringdə "ilk piksel" haqqında danışmaq qəribə görünə bilər, amma əslində halqalarda hər zəncirin bir başlanğıcı və sonu var. Bu layihədə kiçik halqanın 24 pikseli birinci, daha böyük halkanın 60 piksel sonra gəlir. Bu, həqiqətən 84 neopikseldən ibarət bir zəncirim olduğu deməkdir.

Arduino Mini -də naqillər çəkmək üçün:

  • DS3234, 10 - 13 pinlərinə bağlanır
  • Mode və Set açarları 2 və 3 pinlərdədir
  • Neopixel məlumatları pin 6 -dan gəlir.

FTDI kabeli ilə proqramlaşdırmaq üçün 6 başlığı Arduino Mini -nin altına qoymağı da məsləhət görürəm.

Cari haqqında vacib bir qeyd: Bu saat çox şey tələb edir. Bunu həll edə biləcəyimə əminəm, amma praktiki təcrübəm 500mA -ya bərabər və ya daha az bir şeyin nəticədə qəhvəyi çıxıntılara səbəb olacağıdır. Bu, çılğın rənglərin yanıb -sönməsi və vaxta riayət etməməsi kimi özünü göstərir. Mənim son divar qurudum 12V və 1.5A -dır və heç vaxt onunla qəhvəyi rəngdə olmamışam. Bununla birlikdə, 1.5A, gərginlik tənzimləyicisinin (və digər hissələrin) alacağı limitdir. Buna görə də bu məbləği aşmayın.

Addım 4: Saatın Kodlaşdırılması

Saatı Kodlaşdırmaq
Saatı Kodlaşdırmaq

Saat üçün tam kodu GitHubdakı NeoClock Kodunda tapa bilərsiniz. Faylı bura daxil etdim, ancaq depoda hər hansı bir dəyişiklik olacaq.

Hər şeyi bir anda etməyə çalışsanız kod yazmağın çətin ola biləcəyini düşünürəm. Bunun əvəzinə işləyən bir nümunədən başlamağa və ehtiyac duyduğum xüsusiyyətləri qurmağa çalışıram. Bura girməzdən əvvəl qeyd etmək istəyirəm ki, kodum aşağıdakı anbarlardan və Arduino CC forumundan bir çox nümunəni birləşdirməkdən gəldi. Həmişə lazım olduğu yerdə kredit verin!

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

Bu depolardan bəzi nümunə kodlarını Kod Örnekleri Rehberimde tapa bilərsiniz

Kodu qurmaq üçün istifadə etdiyim əməliyyatlar sırası belə oldu:

  • Neopiksellərin Strand Test nümunəsi ilə işlədiyini təsdiq edin
  • Time Loop Kodu ilə bir saat işləməyə çalışın
  • Saatı dəyişdirin, yalnız bir deyil, iki üzük üzərində işləyin
  • DeadOn RTC Nümunəsi ilə vaxt saxlamaq üçün DS3234 əlavə edin
  • Rejimi əlavə edin və açarları təyin edin
  • Arduion Debounce Tutorialının köməyi ilə Debounce kodunu əlavə edin
  • Saat LEDləri üçün bəzi rəngli mövzular əlavə edin
  • 0, 15, 30 və 45 dəqiqəlik işarələr üçün bəzi animasiyalar əlavə edin
  • 0, 15, 30 və 45 dəqiqəlik işarələri istiqamətləndirmək üçün saata kompas nöqtələri əlavə edin

Bu kodu necə qurduğumu görmək istəyirsinizsə, hər bir kod öhdəliyinə baxmaq üçün GitHub -dan istifadə edə bilərsiniz. Saatın tarixi, Tarixi İşləmə Tarixindədir.

Rəng sxemlərini əlavə etmək əyləncəli idi, amma nəticədə yalnız dördünü menyuya daxil etdim. Hər mövzu saata, dəqiqəyə, saniyəyə və milisaniyəyə "əllərə" xüsusi bir rəng təyin edir. Həqiqətən seçimlər sonsuzdur, amma mövzuları daxil etdim (siyahıda göstərilən metod adları):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Ancaq bu əlavə üsulları kodda tapa bilərsiniz:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animasiyalar əlavə olundu, çünki köhnə saatların saatın on beş dəqiqəsində çalması fikri xoşuma gəldi. Bu saat üçün aşağıdakı animasiyalar hazırladım:

  • 15 dəqiqə: Üzükləri qırmızıya boyayın
  • 30 dəqiqə: Üzükləri Yaşıl rəngə boyayın
  • 45 dəqiqə: Üzükləri mavi rəngə boyayın
  • Saat Üstü: İki üzük üzərində göy qurşağı çəkin

Heç kim saatı istiqamətləndirə bilmədiyi üçün istifadə qabiliyyətinin saatda problem olduğu ortaya çıxdı. Axı, yalnız iki LED halqası var. Problemi həll etmək üçün saata kompas nöqtələrini əlavə etdim. Bu, vaxtı çox danışmaq qabiliyyətini artırdı. Lazer kəsmə parçaları göndərməzdən əvvəl bunu bilsəydim, sənətə bir şey əlavə edərdim. Ancaq məlum olur ki, sənəti qaranlıqda o qədər yaxşı görə bilməzsən, buna görə də pusula nöqtələrinə sahib olmaq həqiqətən kömək edir. Bununla əlaqədar bir fikir, bir piksel rəngləməyə qərar verdiyiniz zaman əvvəlcə mövcud rəngi tutmalı və yeni bir qarışıq rəng yaratmalısınız. Bu daha təbii bir hiss verir.

Son bir məlumat milisaniyəyə aiddir. Arduino üzərindəki milisaniyələr DS3234 deyil, daxili Arduino kristalından çıxır. Millisaniyələri göstərmək istəməyiniz sizə bağlıdır, amma mən bunu etdim, saat həmişə bir şey edirmiş kimi görünürdü. Millisekundların və saniyələrin həmişə bir -birinə uyğun gəlməməsi sizi narahat edə bilər, amma praktikada saata baxanda heç kim mənə bunu deməmişdi və düşünürəm ki, gözəl görünür.

Addım 5: Lazerlə kəsilmiş faylların dizaynı

Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı
Lazerlə kəsilmiş faylların dizaynı

Lazer kəsmə fayllarını tərtib edərkən düşünməli olduğum iki məqam var. Birincisi, tikmək istədiyim material, ikincisi isə necə qurulacağı idi. Ağacın akril ilə bitməsini istədiyimi bilirdim. Materialı anlamaq üçün əvvəlcə Ponokodan bəzi nümunələr sifariş etdim:

  • 1x MDF - Qoz
  • 1x MDF - Albalı
  • 1 x Akril - Açıq Boz
  • 1 x Akril - Opal

Ağac seçimləri, rasterizasiyanın necə olacağını və yanığın saatın kənarında necə görünəcəyini görməyə imkan verir. Akril, neopiksellərin yayılmasını yoxlamağa və ağacın qarşısında necə görünəcəyini müqayisə etməyə imkan verərdi. Sonda Opal akril ilə albalı ağacına qərar verdim.

Saatın ölçüləri əsasən neopiksel üzüklərin ölçüsü ilə müəyyən edilirdi. Bilmədiyim şey, elektronikaya uyğun olmaq üçün nə qədər qalın olması lazım idi. Elektronika qurduqdan və ağacın təxminən 5.5 mm qalınlığında olduğunu bildiyim üçün saat içərisində təxminən 15 mm boşluğa ehtiyacım olduğunu təyin etdim. Bu, üç qat taxta deməkdir. Ancaq dizaynımdakı yerin böyük hissəsini ön və arxa hissə artıq tutduqda, o üzükləri daha sonra bir -birinə yapışdıra biləcəyim "qabırğalara" bölmək lazım idi.

Ponokonun təqdim etdiyi şablonu çəkmək üçün InkScape istifadə etdim. Saat gövdəsini çıxardıqdan sonra ağacı əllə çəkməyə başladım. Mənə ilham verən orijinal görüntünü idxal edə bilmədim, amma özümə bənzər bir şeyi necə edəcəyimi anlamaq qorxunc deyildi.

Materialların qiyməti cəmi 20 dollar civarında idi, lakin kəsmə xərcləri təxminən 100 dollar daha çox çıxdı. Buna iki şey kömək etdi:

  • Maşın iki oxda hərəkət etdiyi və bu dizaynın çoxlu əyriləri olduğu üçün əyrilər və dairələr daha baha başa gəlir
  • Rasterləşdirmə, parça boyunca irəli və irəli bir çox keçid tələb edir. Bunu atmaq ən çox pula qənaət edərdi, amma bəyəndim.

Dizaynı bitirdikdən sonra EPS fayllarını Ponokoya göndərdim və parçalarım təxminən bir həftə sonra tamamlandı.

Qeyd edək ki, Mode və Set açarlarını və ya DC Power Jack -ı dizayna daxil etməmişəm. Bunu göndərəndə hələ də bu hissələrə qərar verməmişdim. Özümə daha çox rahatlıq vermək üçün onları tərk etdim və sonra əllə qazmağı qərara aldım.

Addım 6: Saat qurmaq

Saat qurmaq
Saat qurmaq
Saat qurmaq
Saat qurmaq
Saat qurmaq
Saat qurmaq
Saat qurmaq
Saat qurmaq

Bütün parçalar gələndə saatı düzəltdim. İlk addım, qabırğalarımı yumruqlayıb arxaya və önə yapışdırmağı tələb edən saat gövdəsi idi. Arxa tərəfə iki qat qabırğa taxdım və bir qat ön tərəfə taxta yapışqan ilə qoydum. Ön tərəfdə akril üzükləri və ağac dairələrini bir -birinə bağlamaq üçün taxta yapışqan istifadə etdim. Tikinti zamanı lazımlı bir boşluq olaraq kəsəcəyim ehtiyat bir mərkəzi hissəm var idi. Ağac parçasının arxasına yapışdırdım və bu, daha sonra neopikselləri yapışdıra biləcəyim bir yer verdi.

Gövdə qurulduqdan sonra açarlar və güc yuvası üçün deliklər açmağa qərar verdim. Kiçik bir həndəsə (şəkildə gördüyüm kimi) hər şeyi düzəltməyimə kömək etdi. Qazdıqca kənardan ayrı bir ağac parçası istifadə edərək (çox diqqətlə!) Delik açdım və açarlara və krikoya yapışdırdım.

Elektronikanın hamısı sonradan gəldi. Əvvəlcə kondansatörün ardınca neopikselləri yapışdırdım. Bunları neopixel elektrik kəsmə lövhəsinə bağladım. Sonra arxa tərəfdən telləri açarlara və elektrik prizinə qoydum. L7805 gərginlik tənzimləyicisini də daxil etdim.

Üzüklərin istiqamətləndirilməsi haqqında qısa bir qeyd. 60 piksellik böyük halqa üçün sıfır dəqiqələri qeyd etmək üçün pikseldən biri tam yuxarıda olması üçün saatı istiqamətləndirməlisiniz. Hansı pikselin fərqi yoxdur və bir dəqiqədə bunun səbəbini anlayacağam. 24 pikseldən ibarət olan kiçik halqa üçün saatı elə istiqamətləndirmək lazımdır ki, üstü əslində iki piksel arasında olsun. Bunun səbəbi, 12 saatı qeyd etmək istəyirsinizsə, bir deyil, iki pikseldə işıqlandırmağınızdır. Ofsetə sahib olanda və plastikin yayılmasında, həqiqətən də 12 geniş pikseldə olduğunuz görünür.

Kodun hər bir üzük üçün "üst" olaraq təyin etdiyi pikselə gəldikdə, kodu bir az düzəltməlisiniz. Kodumda "inner_top_led" və "external_top_led" adlı iki dəyərim var. Saatlarımda "inner_top_led" kiçik halqanın başlanğıcından 11 piksel, "xarici_top_led" böyük halqanın başlanğıcından 36 piksel idi. Üzükləri fərqli bir şəkildə istiqamətləndirsəniz, bu dəyərləri oriyentasiyanıza uyğun olaraq dəyişdirərsiniz. Bir az təcrübə edin və lazımi dəyəri olduqca tez tapacaqsınız.

Bu nöqtədə hər şeyin gözlənildiyi kimi işlədiyini sınadım.

Amma bütün layihələrdə olduğu kimi bir problemlə qarşılaşdım, başa düşdüm ki, necə bir yerdə olacağını anlamadım. Neopixellər və qabırğalar arasında təxminən 3/8 düym boşluq olduğunu gördüm və Home Depot -a getdim və 3/8 düymlük dübel və bir sıra neodim maqnitləri aldım. Hər yerə iki maqnit qoya biləcəyim üçün üç yerə kiçik ağac dayaqlar düzəltdim və zımpara etdim. Hər biri 3 cüt 2 stendlə başa vurdum. Sonra bunları çərçivəyə yapışdırdım və hər şeyi bir sıxacla yerində saxladım. Bunu stendlərdəki yapışqan nəm olarkən etdim, belə ki hər şey hizalanır və sonra düzgün yerdə qurudulur. Bu mükəmməl işləmişdir və buraxılışın hamısının gizli qalmasını sevirəm.

Nəhayət, divara asmaq lazım olduğunu anladım və divara asmaq üçün arxada kiçik bir anqar qazdım.

Addım 7: Son Düşüncələr

Bu layihəni qurmaq çox əyləncəli idi və neopixellər və DS3234 haqqında öyrənməkdən zövq aldım. Nəhayət, əvvəldən sona qədər gözəl görünən bir layihə qurmaqdan zövq aldım. Bunu təkrar etsəm yeniləyəcəyim bir neçə şey var, amma bunlar kiçikdir:

  • Sadəlik üçün üç yerinə iki düymə seçdim. Ancaq aşağı və yuxarı getməyimə imkan verən düymənin olması saatı təyin etmək üçün gözəl olardı
  • Rejim düyməsi və ayar düyməsi bir -birindən fərqlənmir. Onları tez -tez qarışdırıram. Bəlkə də gələcəkdə onları əks tərəfə qoyardım.
  • Heç vaxt taxta cəbhəni bitirməmişəm. Əvvəlcə xam görünüşü bəyəndim və sonra başa saldım ki, düzəltmək çox baha başa gələcək.
  • Ağacı rasterləşdirmək yaxşı bir görünüş idi, amma gələcəkdə ağac üçün daha çox detal çəkə bilərdim.
  • Qaranlıqda olduqca parlaq olduğu üçün saatı qaraltmaq da gözəl bir xüsusiyyət olardı. Ancaq qaralma rəngə bağlıdır və bitin çox uzun sürdüyünü başa düşdüyüm üçün atdım. Yəqin ki, gələcəkdə bu xüsusiyyətə yenidən sərmayə qoyardım.

Bu təlimatı oxuduğunuz üçün təşəkkür edirik. Ümid edirəm ki, öz saatınızı və ya neopixel layihənizi mənimlə paylaşacaqsınız. Xoşbəxt bina!

Tövsiyə: