Mundarija:

NeoClock: 7 qadam (rasmlar bilan)
NeoClock: 7 qadam (rasmlar bilan)

Video: NeoClock: 7 qadam (rasmlar bilan)

Video: NeoClock: 7 qadam (rasmlar bilan)
Video: neoClock 2024, Iyun
Anonim
Image
Image

Bu Adafruit kompaniyasining ajoyib neopixel halqalari yordamida soat qurish haqida. Bu soatning qiziq tomoni shundaki, u aslida ikkita halqali neopikseldan iborat: biri soatni aytib berish uchun, ikkinchisi esa daqiqa, soniya va millisekundlarga. Soat Sparkfun -dan DS3234 DeadOn Real Time Clock chipidan foydalanib, mukammal vaqtni saqlaydi. Qurilish oson va o'zgartirish qiziqarli. Umid qilamanki, bu boshqalarni neopixel uzuklari yordamida soat yoki boshqa san'atni yaratishga ilhomlantiradi.

Agar siz mening barcha fayllarimni oddiy formatda olishni xohlasangiz, ularni https://github.com/chrisgilmerproj/neoclock manzilidagi github omboridan yuklab olishingiz mumkin.

1 -qadam: soatni loyihalash

Soat dizayni
Soat dizayni
Soat dizayni
Soat dizayni
Soat dizayni
Soat dizayni
Soat dizayni
Soat dizayni

Men boshidanoq kamida ikkita neopikselli halqadan foydalanishni xohlayotganimni bilardim. Biroz ishlaganimdan so'ng, eng yaxshi dizayn - bitta halqaning ikkinchisida bo'lishi, bu soatning asl shakli saqlanib qolishiga qaror qildim. Kichikroq halqa soat bo'ladi, qolgan vaqt esa katta halqada saqlanadi. Dizaynerlik nuqtai nazaridan neopixellarning narxi, quvvat talabi, lazer bilan kesilgan bo'laklarning o'lchami va men qanday san'atni qo'ymoqchi edim.

Ushbu qadam tugagach, men soat korpusini lazer bilan kesish rejasini tuzishdan oldin elektronikani tushunishim kerak deb qaror qildim.

2 -qadam: Elektronikani loyihalash

Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash

Elektronikani loyihalash, men xohlagan elementlarni oldindan bilishga tushdi:

  • Neopixel uzuklari (60 ta va 24 ta)
  • Arduino (miya)
  • Soatni tartibga solish (arduinolar yaxshi vaqt o'tkazmaydi)
  • Quvvatni boshqarish

Neopiksellarning o'lchamlari va quvvat talablari yaxshi hujjatlashtirilgan. Ular 5V shaharda ishlayotgani uchun men 5V Arduino bilan borishga qaror qildim va o'zim uchun hamma narsani soddalashtirdim. Bo'sh joyni hisobga olgan holda men oddiy Arduino Uno -da prototip yaratishga qaror qildim, lekin oxirgi elektronika uchun men Arduino Mini -ni tanladim.

Ushbu loyihaning birinchi iteratsiyasi to'g'ridan -to'g'ri Adafruit NeoPixel Basic Connections sahifasidan keldi. Men ishni osonlashtirish uchun diagrammani veb -saytdan qo'shdim. Bundan ikkita narsa muhim:

  1. Dastlabki tokning piksellarga zarar etkazishini oldini olish uchun 1000 uF kondansatör kerak.
  2. 60 hisoblash halqasining birinchi pikseliga 470 ohmli rezistor kerak bo'ladi (bu qarshilik 24 ta hisoblash halqasiga o'rnatilgan)

Adafruit shuningdek, dizaynni davom ettirishdan oldin o'qishingiz kerak bo'lgan NeoPixel eng yaxshi amaliyotlari to'plamiga ega.

Vaqtni soatlab ushlab turish - boshqa muammo. Arduino -ga o'rnatilgan soatlar uzoq vaqt yaxshi vaqt o'tkazish uchun etarli emas. Eng yomoni, arduino -dagi vaqt har safar qayta tiklanishi kerak. Kompyuterlar bu muammoni elektr uzilishlari orasidagi vaqtni ushlab turish uchun soat chipidagi kichik batareyadan foydalanib hal qilishadi. Ilgari men Adafruit -dan ChronoDot kabi narsalarni ishlatardim. Ammo bu holda men SparkFun -dan DS3234 (DeadOn RTC) dan foydalanishga bahona so'radim. Agar siz uni soatga qo'shmoqchi bo'lsangiz, DeadOn RTC -da sana ma'lumotlarini saqlashingiz mumkin.

Nihoyat, kuch boshqaruvi biroz o'ylashga muhtoj edi. Men hamma narsa 5V bo'lishi kerakligini allaqachon bilardim, lekin kerakli oqim miqdori sir bo'lib tuyuldi. Ko'pgina loyihalarda keng tarqalgan voltaj regulyatori - L7805. Bu 24V gacha bo'lgan kuchlanish va maksimal oqim 1,5A gacha bo'lishi kerak. Menda 12V 1.5A devorli wort borligini bilardim, shuning uchun men bu loyiha uchun mukammal (va arzon!) Voltaj regulyatori bo'ladi deb qaror qildim.

Qolgan qismlar mening qutilarimdan yoki Radio Shackdan keladi. Ularga simlar, kalitlar va shahar quvvat manbai kiradi.

3 -qadam: Elektronikani yaratish

Elektronikani qurish
Elektronikani qurish
Elektronikani qurish
Elektronikani qurish
Elektronikani qurish
Elektronikani qurish

Men ushbu loyihani qurish uchun sotib olgan elektronikaning to'liq ro'yxatini mening github omboridan topishingiz mumkin: Elektron qismlar ro'yxati. U har bir qism uchun mahsulot sahifasiga havolalarga ega va ba'zi qo'shimcha ma'lumotlarni o'z ichiga oladi. Men buni tezda taxtada prototipladim va rasm olishdan oldin lazerni kesish va qurishga o'tdim. Biroq, men uni ajratish oson bo'lishi uchun qurdim, shuning uchun men siz uchun yuqoridagi fotosuratlardagi bo'laklarni sindirdim.

Tasvirlarga diqqat bilan qarang, chunki simlar qasddan egilgan bo'lib, elektronikaning butun profilini ingichka qilib qo'yadi. Ushbu dastlabki prototipni lazerni kesishdan oldin bajarish, qismlarning qalinligini tekshirish imkonini berdi, shunda men soat korpusining yakuniy o'lchamlarini aniqlay oldim.

Siz payqadingizmi? Men taxtalarning orqa qismini suratga olishga harakat qildim, shunda siz ularni takrorlay olasiz. Siz bir nechta pulga shunga o'xshash non paneli sotib olishingiz va ularni loyihangizga moslashtirishingiz mumkin.

Ulanish to'g'ridan -to'g'ri, lekin tasvirlardan eslash kerak bo'lgan asosiy narsalar:

  • Tartib va sozlash tugmachalariga pastga tushadigan rezistorlar kerak bo'ladi. Men yotgan 2,21 Ohmli rezistorlardan foydalanardim, lekin har qanday kichik rezistor ishlaydi (yaxshisi 1 kOhm dan kam bo'lmagan). Bu ulangan Arduino kirish pimlarini barqaror qiladi, shuning uchun ular balandlikka chiqqanda shovqindan ajralib turadi.
  • DS3234 -dagi kvadrat to'lqin (SQW) topraklanmış, chunki u ishlatilmayapti.
  • L7805 quvvati RAW pinli Arduino Mini -ga o'rnatilgan. Har doim Arduino -ga keladigan kuchni RAW -ga qo'ying.
  • 60 -sonli neopixel halqasining birinchi pikseli 470 Ohmli rezistorga ega. Bu muammo bo'lmasligi kerak, chunki 24 -sonli neopikselda buning uchun o'rnatilgan rezistor mavjud, lekin afsusdan ko'ra xavfsizroq.
  • Tartib va sozlash tugmalari SPST lahzali tugmachali kalitlardir

Tel ranglari:

  • Qizil: +5VDC
  • Qora: er
  • Yashil: ma'lumotlar
  • Sariq, ko'k, oq: DS3234 uchun maxsus simlar

Agar siz neopixelni birinchi marta ishlatayotgan bo'lsangiz, shuni esda tutingki, ularni uzun zanjir deb hisoblash mumkin. Ringdagi "birinchi piksel" haqida gapirish g'alati tuyulishi mumkin, lekin aslida har bir zanjirning boshlanishi va oxiri bor. Ushbu loyihada birinchi navbatda kichik halqaning 24 piksel, keyinroq katta halqaning 60 pikseli keladi. Bu shuni anglatadiki, menda 84 ta neopikseldan iborat zanjir bor.

Arduino Mini -da simlarni ulash uchun:

  • DS3234 10 - 13 -pinlarga ulanadi
  • Tartib va sozlash kalitlari 2 va 3 -pinlarda joylashgan
  • Neopixel ma'lumotlari 6 -pindan keladi.

Men, shuningdek, Arduino Mini -ning pastki qismiga 6 ta sarlavhani qo'yishni maslahat beraman, shunda siz uni FTDI kabeli orqali dasturlashingiz mumkin.

Hozirgi haqida muhim eslatma: Bu soat ko'p narsani talab qiladi. Ishonchim komilki, men buni hal qila olardim, lekin mening amaliy tajribam shuni ko'rsatadiki, 500mA ga teng yoki undan past bo'lgan narsa oxir -oqibat jigarrang bo'laklarga olib keladi. Bu soat aqldan ranglarning miltillashi va vaqtni ushlab turmasligi bilan namoyon bo'ladi. Mening oxirgi devor sardori - 12V va 1.5A, men hech qachon jigarrang bo'lmaganman. Biroq, 1.5A - bu voltaj regulyatori (va boshqa qismlari) qabul qiladigan chegaradir. Shuning uchun bu miqdorni oshirmang.

4 -qadam: soatni kodlash

Soatni kodlash
Soatni kodlash

Soatning to'liq kodini GitHub -dagi NeoClock kodida topish mumkin. Men bu erda faylni qo'shdim, lekin omborda har qanday o'zgarishlar bo'ladi.

Menimcha, agar siz hamma narsani birdaniga bajarishga harakat qilsangiz, kod yozish qiyin bo'lishi mumkin. Buning o'rniga men ishchi misoldan boshlashga va kerakli funktsiyalarni tuzishga harakat qilaman. Ishga kirishdan oldin shuni aytmoqchimanki, mening kodim quyidagi omborlar va Arduino CC forumidagi ko'plab misollarni birlashtirishdan kelib chiqqan. Har doim kerakli joyga kredit bering!

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

Ushbu omborlardan ba'zi misol kodlarini mening kod misollar katalogimda topish mumkin

Kodni tuzishda ishlatilgan operatsiyalar tartibi quyidagicha edi:

  • Strand test misolida neopiksellarning ishlashini tasdiqlang
  • Time Loop kodi bilan soatni ishlatishga urinish
  • Soatni o'zgartiring, bittadan emas, balki ikkita halqada ishlaydi
  • Vaqtni DeadOn RTC misolida ushlab turish uchun DS3234 -ni qo'shing
  • Tartibni qo'shing va kalitlarni o'rnating
  • Arduion Debounce Tutorial yordami bilan Debounce kodini qo'shing
  • Soat LEDlari uchun bir nechta rang mavzularini qo'shing
  • 0, 15, 30 va 45 daqiqalik belgilar uchun ba'zi animatsiyalarni qo'shing
  • 0, 15, 30 va 45 daqiqalik belgilarni yo'naltirish uchun soatga kompas nuqtalarini qo'shing

Agar siz ushbu kodni qanday yaratganimni ko'rishni istasangiz, GitHub -dan foydalanib, har bir kod bajarilishini ko'rib chiqishingiz mumkin. Soat tarixi majburiyatlar tarixida.

Rang sxemalarini qo'shish qiziqarli edi, lekin oxirida menyuga faqat to'rttasini qo'shdim. Har bir mavzu soat, daqiqa, soniya va milisaniyadagi "qo'llar" ga ma'lum bir rangni qo'yadi. Haqiqatan ham bu erda variantlar cheksizdir, lekin men mavzularni (ro'yxatdagi usul nomlari) qo'shdim:

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Biroq, siz ushbu qo'shimcha usullarni kodda topishingiz mumkin:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animatsiyalar qo'shildi, chunki menga soatning o'n besh daqiqali to'rtinchi nuqtasida chayqaladigan eski soatlar g'oyasi yoqdi. Bu soat uchun men quyidagi animatsiyalarni yaratdim:

  • 15 daqiqa: halqalarni qizil rangga bo'yang
  • 30 daqiqa: halqalarni yashil rangga bo'yang
  • 45 daqiqa: halqalarni ko'k rangga bo'yang
  • Soatning eng yuqori qismi: ikkita halqa bo'ylab kamalak qiling

Hech kim soatni yo'naltira olmagani uchun qulaylik soat bilan bog'liq muammo bo'lib chiqdi. Axir, bu faqat ikkita LED halqasi. Shunday qilib, muammoni hal qilish uchun kompas nuqtalarini soatga qo'shdim. Bu vaqtni aniq aytish qobiliyatini yaxshilaydi. Agar men bu ishlarni lazer bilan kesishdan oldin bilganimda, uning o'rniga san'atga biror narsa qo'shgan bo'lardim. Ma'lum bo'lishicha, siz qorong'uda san'atni yaxshi ko'ra olmaysiz, shuning uchun kompas nuqtalariga ega bo'lish haqiqatan ham yordam beradi. Shuni e'tiborga olish kerakki, siz pikselni bo'yashga qaror qilganingizda, avvalgi rangni olishingiz va yangi aralash rangni yaratishingiz kerak. Bu unga yanada tabiiy tuyg'u beradi.

Oxirgi ma'lumot milisaniyalar haqida. Arduino -dagi millisekundlar DS3234 emas, balki ichki Arduino kristalidan chiqadi. Siz millisekundlarni ko'rsatishni xohlaysizmi yoki yo'qmi, sizga bog'liq, lekin men shunday qildimki, soat har doim nimadir qilayotganday tuyuldi. Millisekundlar va soniyalar har doim ham bir -biriga to'g'ri kelmasligi sizni bezovta qilishi mumkin, lekin amalda hech kim menga soatga qaraganida bu haqda hech qachon aytmagan va menimcha, bu yaxshi ko'rinadi.

5 -qadam: Lazerli kesilgan fayllarni loyihalash

Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash
Lazerli kesilgan fayllarni loyihalash

Lazerli kesilgan fayllarni loyihalashda ikkita fikrni hisobga olishim kerak edi. Birinchisi, men uni qurmoqchi bo'lgan material, ikkinchisi esa qanday qurilishi. Men bildimki, men akril bilan neopiksellarni tarqatadigan yog'och qoplamani xohlayman. Materialni tushunish uchun men avval Ponokodan ba'zi namunalarga buyurtma berdim:

  • 1x qoplama MDF - yong'oq
  • 1x MDF - Gilos
  • 1x akril - och kulrang
  • 1x akril - opal

Yog'och tanlovi menga rastrizatsiya qanday bo'lishini va kuyish soat yonida qanday ko'rinishini ko'rishga imkon berdi. Akril menga neopiksellarning tarqalishini sinab ko'rishga va yog'ochga qanday o'xshashligini solishtirishga imkon beradi. Oxir -oqibat, men Opal akril bilan olcha yog'ochini tanlashga qaror qildim.

Soatning o'lchamlari asosan neopikselli halqalarning o'lchamlari bilan aniqlangan. Bilmadim, elektronikaga mos kelishi uchun qanchalik qalin bo'lishi kerak edi. Elektronika qurib, yog'ochning qalinligi taxminan 5,5 mm ekanligini bilib, menga soat ichida taxminan 15 mm bo'sh joy kerakligini aniqladim. Bu yog'ochning uch qatlamini bildirardi. Ammo old va orqa qismlar dizayndagi bo'sh joyning katta qismini egallaganida, men bu halqalarni "qovurg'alar" ga ajratishim kerak edi, keyinchalik ularni yopishtirishim mumkin edi.

Men Ponoko taqdim etgan shablonni chizish uchun InkScape -dan foydalandim. Soat korpusini chiqarganimdan so'ng, men daraxtni qo'lda chizishga kirishdim. Menga ilhom bergan asl tasvirni import qila olmadim, lekin o'zimga o'xshash narsani qanday qilishim dahshatli emas edi.

Materiallarning narxi atigi 20 dollarni tashkil etdi, lekin kesish narxi taxminan 100 dollarga tushdi. Bunga ikkita narsa yordam berdi:

  • Egri chiziqlar va aylanalar ancha qimmatga tushadi, chunki mashina ikki o'qda harakat qiladi va bu dizayn juda ko'p egri chiziqlarga ega
  • Rasterizatsiyalash uchun bo'lak bo'ylab oldinga va orqaga ko'p o'tish kerak. Buni tashlab yuborish eng ko'p pulni tejagan bo'lardi, lekin menga bu yoqdi.

Dizaynni tugatgandan so'ng, men EPS fayllarini Ponokoga yubordim va mening qismlarim taxminan bir hafta o'tgach bajarildi.

E'tibor bering, men Mode va Set kalitlarini yoki DC Power Jack -ni dizaynga kiritmaganman. Men buni yuborganimda, men hali ham bu qismlar haqida qaror qabul qilmagan edim. O'zimga ko'proq moslashuvchanlik berish uchun men ularni tashlab qo'ydim va keyinroq qo'l bilan burg'ulashga qaror qildim.

6 -qadam: soatni qurish

Soatni qurish
Soatni qurish
Soatni qurish
Soatni qurish
Soatni qurish
Soatni qurish
Soatni qurish
Soatni qurish

Hamma buyumlar kelganda men soatni qurdim. Birinchi qadam, soat korpusi edi, buning uchun men qovurg'alarimni teshib, old va orqa tomonga yopishtirishim kerak edi. Men orqa tomonga ikki qavat qovurg'a va old tomonga bir qatlam qo'ydim va ularni yog'och elim bilan o'rnatdim. Old tomondan men akril halqalarni va yog'och doiralarni birlashtirish uchun yog'och elim ishlatardim. Menda zaxira markaziy bo'lak bor edi, uni qurilish paytida kerak bo'lgan bo'sh joy sifatida kesib tashladim. Men uni daraxtning orqa qismiga yopishtirdim va bu menga keyinchalik neopiksellarni yopishtiradigan joy berdi.

Korpus qurilishi bilan men kalitlar va quvvat rozetkasi uchun teshik ochishga qaror qildim. Kichkina geometriya (rasmda ko'rinib turganidek) menga hamma narsani tekislashga yordam berdi. Men burg'ulash paytida tashqi tomondan alohida yog'och bo'lagidan foydalanib (juda ehtiyotkorlik bilan!) Men teshiklarni ochdim va kalitlarga va uyaga yopishtirdim.

Elektronika hamma narsaga kirdi. Men avval neopixellarni yopishtirdim, keyin kondansatör. Men ularni neopikselli elektr uzatish paneliga uladim. Keyin orqa tomondan simlarni kalitlarga va quvvat rozetkasiga qo'ydim. Men L7805 kuchlanish regulyatorini ham qo'shdim.

Uzuklarni yo'naltirish bo'yicha tezkor eslatma. 60 pikselli katta halqa uchun siz soatni yo'naltirishingiz kerak, shunda nolinchi daqiqani belgilash uchun piksellardan biri aynan tepada bo'ladi. Qaysi piksel muhim emas va men nima uchun buni bir daqiqada bilib olaman. 24 pikselli kichik halqa uchun soatni shunday yo'naltirish kerakki, tepasi aslida ikki piksel oralig'ida bo'lsin. Buning sababi shundaki, agar siz 12 soatni belgilashni xohlasangiz, siz bitta piksel o'rniga ikkita pikselni yoqasiz. Ofsetga ega bo'lganingizda va plastmassaning tarqalishi bilan siz haqiqatan ham 12 ta keng pikselga ega bo'lasiz.

Kod qaysi pikselni har bir halqa uchun "yuqori" deb belgilaganiga kelsak, siz kodni biroz o'zgartirishingiz kerak. Mening kodimda "inner_top_led" va "tashqi_top_led" nomli ikkita qiymat bor. Mening soatlarimda "ichki_top_led" kichik halqa boshidan 11 piksel, "tashqi_top_led" katta halqa boshidan 36 piksel edi. Agar siz halqalarni boshqacha yo'naltirsangiz, bu qiymatlarni sizning yo'nalishingizga mos ravishda o'zgartirgan bo'lar edingiz. Bir oz tajriba o'tkazsangiz, kerakli qiymatni tezda topasiz.

Bu vaqtda men hamma narsa kutilganidek ishlaganini sinab ko'rdim.

Ammo, barcha loyihalarda bo'lgani kabi, men ham muammoga duch keldim, chunki u qanday bo'lishini tushunmaganman. Men neopixellar va qovurg'alar o'rtasida taxminan 3/8 dyuym bo'sh joy borligini payqadim, shuning uchun Home Depot -ga bordim va 3/8 dyuymli dübel va bir qancha neodim magnitlarini oldim. Men har bir stendga ikkita magnit qo'yishim uchun uchta joyga kichik yog'och dastgohlar qurdim va ularni zımparaladim (super elim yordamida). Men har biri 3 juft 2 stend bilan yakunlandim. Keyin men ularni ramkaga yopishtirdim va qisqich bilan hammasini joyiga qo'ydim. Men buni stenddagi elim ho'l bo'lganida qildim, shunda hamma narsa tekislanadi va keyin kerakli joyda quriydi. Bu juda yaxshi ishladi va men hamma narsani yashirganimni yaxshi ko'raman.

Oxir -oqibat, men uni devorga osib qo'yishim kerakligini tushundim, shuning uchun uni devorga osib qo'yishim uchun orqa tarafdagi kichik angarni burg'iladim.

7 -qadam: Yakuniy fikrlar

Bu loyihani yaratish juda qiziqarli bo'ldi va menga neopixel va DS3234 haqida ma'lumot berish yoqdi. Menga nihoyat boshidan oxirigacha chiroyli ko'rinadigan loyiha tuzish juda yoqdi. Agar men buni yana qilsam, yangilaydigan ikkita narsa bor, lekin ular ahamiyatsiz:

  • Oddiylik uchun uchta tugma o'rniga ikkita tugmani tanladim. Lekin pastga va yuqoriga tushishimga imkon beradigan tugma bo'lsa, soatni sozlash yaxshi bo'lardi
  • Tartib tugmasi va sozlash tugmasi farq qilmaydi. Men ularni tez -tez aralashtirib yuboraman. Ehtimol, men ularni kelajakda qarama -qarshi tomonga qo'yardim.
  • Men hech qachon yog'ochni tugatmaganman. Menga birinchi qarashda xom ko'rinish yoqdi, keyin esa agar men pardani chalkashtirib yuborsam, uni tuzatish juda qimmatga tushadi deb xavotirga tushdim.
  • Daraxtni rastrizatsiya qilish juda yaxshi ko'rinish edi, lekin men kelajakda daraxt uchun batafsilroq ma'lumot olishim mumkin edi.
  • Soatni qorong'ulash ham yaxshi xususiyat bo'lardi, chunki u qorong'uda juda yorqin. Biroq, xiralashtirish rangga bog'liq va bu bit juda uzoq davom etganini aniqlab, men uni tashladim. Ehtimol, men kelajakda bu xususiyatga qayta sarmoya kiritgan bo'lardim.

Ushbu ko'rsatmalarni o'qiganingiz uchun tashakkur. Umid qilamanki, siz o'zingiz soat yoki neopixel loyihasini o'zingiz yaratasiz va men bilan baham ko'rasiz. Baxtli bino!

Tavsiya: