Mundarija:

Ultimate Binary Watch: 12 qadam (rasmlar bilan)
Ultimate Binary Watch: 12 qadam (rasmlar bilan)

Video: Ultimate Binary Watch: 12 qadam (rasmlar bilan)

Video: Ultimate Binary Watch: 12 qadam (rasmlar bilan)
Video: 20 Та Бутун Умрга Эсда Қоладиган Бокс ва MMA даги Кулгули Лахзалар 2024, Iyul
Anonim
Ultimate Binary Watch
Ultimate Binary Watch
Ultimate Binary Watch
Ultimate Binary Watch
Ultimate Binary Watch
Ultimate Binary Watch

Yaqinda men ikkilik soatlar kontseptsiyasi bilan tanishdim va o'zim uchun soat qura olamanmi, degan tadqiqotni boshladim. Biroq, men bir vaqtning o'zida funktsional va zamonaviy bo'lgan mavjud dizaynni topa olmadim. Shunday qilib, men o'z dizaynimni butunlay noldan yaratishga qaror qildim!

Ta'minotlar

Ushbu loyiha uchun barcha fayllar:

Arduino kodi uchun kutubxonalarni GitHub -dan yuklab olish mumkin:

M41T62 RTC kutubxonasi

FastLED kutubxonasi

LowPower kutubxonasi

1 -qadam: Fikr

Yaqinda men quyidagi videoni ko'rdim:

DIY ikki tomonlama qo'l soati

Yuqoridagi videoda asosiy uy qurilgan ikkilik soat ko'rsatilgan. Men bunday narsa borligini tasavvur ham qilmagan edim, lekin ikkilik soatlar mavzusida qo'shimcha tadqiqotlar olib borganimdan so'ng, menda juda ko'p turli xil dizaynlar borligini tezda angladim! Men o'zim uchun qurmoqchi edim, lekin menga yoqadigan dizaynni topa olmadim. Men topgan ikkilik soatlar juda ko'p xususiyatlarga ega emas edi va unchalik yaxshi ko'rinmasdi. Shunday qilib, men o'zimni butunlay noldan loyihalashga qaror qildim!

Birinchi qadam mening dizaynim mezonlarini aniqlash edi. Bu men o'ylab topgan narsadir:

  • Ikkilik RGB interfeysi
  • Vaqtni ko'rsatish (juda aniq vaqtni saqlash bilan)
  • Sanani ko'rsatish
  • Sekundomer funktsiyasi
  • Signal funksiyasi
  • Batareya muddati kamida 2 hafta
  • USB orqali zaryadlash
  • Foydalanuvchi tomonidan osongina sozlanishi mumkin bo'lgan dasturiy ta'minot
  • Oddiy va toza dizayn

Bu mezonlar butun loyihaning asosi bo'ldi. Keyingi qadam, soat qanday ishlashini xohlaganimni aniqlash edi!

2-qadam: Ikkilik-soat nazariyasi

Ikkilik-soat nazariyasi
Ikkilik-soat nazariyasi

Reja oddiy edi. Ikkilik soat oddiy soat kabi ishlaydi, faqat interfeys ikkilik bo'ladi, xususan, BCD (ikkilik kodli o'nlik). BCD - bu ikkilik kodlash turi, bu erda har bir o'nlik raqam belgilangan bitlar bilan ifodalanadi. 0-9 gacha bo'lgan raqamni ko'rsatish uchun menga 4 bit kerak. Va standart uchun

ss: mm

vaqt formati, menga bu raqamlardan 4 tasi kerak. Bu shuni anglatadiki, menga 16 LED kerak bo'lgan jami 16 bit kerak.

BCD -da vaqtni o'qish, unga o'rganganingizdan so'ng, juda oson. Soatning pastki qismidagi satr eng kichik bitni (1), tepadagi qator esa eng muhim bitni (8) ifodalaydi. Har bir ustun belgidagi raqamni bildiradi

ss: mm

vaqt formati. Agar LED yoniq bo'lsa, siz bu qiymatni hisoblaysiz. Agar LED o'chirilgan bo'lsa, siz bunga e'tibor bermaysiz.

Birinchi raqamni o'qish uchun birinchi (eng chapda) ustunda mos keladigan barcha faollashtirilgan LEDlarni yig'ing. Chapdan o'ngga boshqa raqamlar uchun ham xuddi shunday qiling. Siz hozir BCD vaqtini o'qidingiz!

Bu tamoyil soatning qolgan funktsiyalari uchun bir xil bo'ladi. RGB LED -laridan foydalanish turli xil ranglardan foydalangan holda turli funktsiyalar va rejimlarni ajratishga yordam beradi. Ranglar foydalanuvchi tomonidan tanlanadi va ularni xohlagan rang palitrasiga osongina sozlash mumkin. Bu foydalanuvchiga chalkashliksiz vazifalarni osonlikcha boshqarishga imkon beradi.

Keyingi qadam blok -sxemani yaratish edi!

3 -qadam: ishga kirish

Ishga kirishish
Ishga kirishish

Har qanday odatiy elektronika loyihasi singari, blok -diagramma ham dizaynning dastlabki bosqichining muhim qismidir. Mezonlardan foydalanib, men yuqoridagi blok -sxemani tuzishga muvaffaq bo'ldim. Diagrammadagi har bir blok sxemadagi funktsiyani ifodalaydi va o'qlar funktsiyalarning o'zaro bog'liqligini ko'rsatadi. Blok -diagramma butunlay sxemaning qanday ishlashi haqida yaxshi tasavvur beradi.

Keyingi qadam, blok diagrammada har bir blok uchun individual komponentlar bo'yicha qaror qabul qilishni boshlash edi!

4 -qadam: Komponentlarni tanlash

Bu sxemada juda ko'p komponentlar borligi ma'lum bo'ldi. Quyida men nima uchun tanlaganimni tushuntirish bilan birga eng muhimlarini tanladim.

LEDlar

Ikkilik interfeys uchun tanlov juda to'g'ri edi. Men displey uchun LEDlardan foydalanishni xohlayotganimni bilardim va iloji boricha ko'proq ma'lumotni ko'rsatish uchun ulardan 16 tasi (4 × 4 katakda) kerakligini tushundim. Muvaffaqiyatli LEDni tadqiq qilish paytida APA102 paydo bo'ldi. Bu juda kichik (2 mm x 2 mm) turli xil rangdagi LEDga ega va ancha arzon. Garchi men ilgari ular bilan hech qachon ishlamagan bo'lsam -da, ular bu loyihaga juda mos keladiganga o'xshardi, shuning uchun men ulardan foydalanishga qaror qildim.

Mikrokontroller

Mikrokontrollerni tanlash ham juda oddiy edi. Men mustaqil dasturlarda Atmega328P-AU-dan foydalanish bo'yicha katta tajribaga ega bo'ldim va uning xususiyatlari bilan juda yaxshi tanish edim. Bu Arduino Nano platalarida ishlatiladigan bir xil mikrokontroller. Men bilardimki, men foydalanishim mumkin bo'lgan arzonroq mikrokontroller bor, lekin Atmega328 Arduino kutubxonalarini to'liq qo'llab -quvvatlashini bilish, bu loyihani tanlashda katta omil bo'ldi.

RTC (real vaqtda soat)

RTC uchun asosiy talab aniqlik edi. Men bilardimki, soat hech qanday Internetga ulanmaydi va shuning uchun Internetga ulanish orqali o'zini qayta sozlay olmaydi, shuning uchun foydalanuvchi uni qo'lda qayta kalibrlashi kerak bo'ladi. Shuning uchun, men vaqtni iloji boricha aniqroq qilishni xohlardim. M41T62 RTC men topa oladigan eng yuqori aniqliklardan biriga ega (± 2ppm, bu oyiga ± 5 sekundga teng). Yuqori aniqlikni I2C muvofiqligi va tok sarfining pastligi bilan birlashtirish ushbu RTCni ushbu loyiha uchun yaxshi tanlovga aylantirdi.

DC-DC kuchaytirgichi

DC-DC Boost Converter IC ni tanlash faqat sxemaga qarab va qanday kuchlanish va toklar kerakligini aniqlash orqali amalga oshirildi. Zanjirni past kuchlanishli ishga tushirish oqim sarfini kamaytiradi, lekin men 4,5 V dan past bo'lolmadim (16 MGts soatlik mikrokontrollerning minimal kuchlanishi) va men 4,5 V dan osholmadim (RTC ning maksimal kuchlanishi). Bu shuni anglatadiki, men komponentlarni tavsiya etilgan spetsifikatsiyalarda ishlatish uchun aylanani aniq 4,5 V da ishlatishim kerak edi. Men sxemaning maksimal oqimi 250mA dan oshmasligini hisobladim. Shunday qilib, men talablarga javob beradigan va TPS61220 -ni tezda qoqib oladigan kuchaytirgichni qidirishni boshladim. TPS61220 minimal tashqi komponentlarni talab qildi, ancha arzon va oqim va kuchlanish talablarini qondira oldi.

Batareya

Batareyaning asosiy talabi uning o'lchamidir. Batareya juda katta bo'lishi kerak edi, shuning uchun u katta hajmli ko'rinmasdan soat korpusiga joylashishi mumkin edi. Menimcha, batareya 20 mm × 35 mm × 10 mm dan oshmasligi kerak. Ushbu o'lchamdagi cheklovlar va 250 mA bo'lgan hozirgi talablar bilan men tanlagan batareyalar LiPo batareyalari bilan cheklangan. Men hobbykingda "Turnigy nano-tech 300mAh 1S" batareyasini topishga qaror qildim.

Zaryadlovchi IC

Zaryad boshqaruvchisiga maxsus talab yo'q edi, faqat 1S LiPo batareyasi bilan mos bo'lishi kerak edi. Men MCP73831T ni topdim, bu bitta hujayrali zaryadlash dasturlari uchun mo'ljallangan to'liq o'rnatilgan zaryadlovchi. Uning xususiyatlaridan biri bu zaryad oqimini tashqi rezistor orqali sozlash qobiliyatidir, men bu ilovada juda foydali deb topdim.

LiPo himoyasi

Men batareyani har qanday xavfli haddan tashqari yuklanish va haddan tashqari zaryadsizlanish sharoitlaridan himoya qilish uchun kuchlanish va oqim monitoringini o'z ichiga olmoqchi edim. Bunday funktsiyalarni ta'minlaydigan cheklangan miqdordagi IClar bor edi va eng arzon variantlardan biri BQ29700 IC edi. U minimal miqdordagi tashqi komponentlarni talab qildi va bitta hujayrali LiPo batareyasi uchun barcha kerakli himoyani o'z ichiga oldi.

Endi komponentlar tanlanganidan so'ng, sxemani yaratish vaqti keldi!

5 -qadam: sxematik

Sxematik
Sxematik

Altium Designer -dan foydalanib, men komponentlarning har bir ma'lumot varag'idagi tavsiyalar yordamida yuqoridagi sxemani yig'ishga muvaffaq bo'ldim. Sxemani o'qish uchun turli bloklarga bo'linadi. Kimdir bu dizaynni qayta tiklamoqchi bo'lsa, men muhim ma'lumotlarni o'z ichiga olgan ba'zi eslatmalarni qo'shdim.

Keyingi qadam, sxemani PCBga qo'yish edi!

6 -qadam: PCB tartibi

PCB tartibi
PCB tartibi
PCB tartibi
PCB tartibi
PCB tartibi
PCB tartibi
PCB tartibi
PCB tartibi

PCB sxemasi ushbu loyihaning eng qiyin qismi bo'lib chiqdi. PCB ishlab chiqarish xarajatlarini minimal darajada ushlab turish uchun men 2 qatlamli tenglikni ishlatishni tanladim. Men 36 mm o'lchamdagi standart soatlardan foydalanishni tanladim, chunki bu LEDlarga juda mos tushganday tuyuldi. PCBni soat korpusiga mahkamlash uchun 1 mm vintli teshiklarni qo'shdim. Maqsad, barcha komponentlarni (tabiiy ravishda LEDlardan tashqari) pastki qatlamga joylashtirish orqali toza va chiroyli dizaynni saqlab qolish edi. Bundan tashqari, men yuqori qatlamda ko'rinadigan viyas bo'lmasligi uchun mutlaq minimal miqdordagi viyalarni ishlatmoqchi edim. Bu shuni anglatadiki, men barcha izlarni bitta qatlamga yo'naltirishim kerak edi, shu bilan birga, "shovqinli" qismlarni sezgir signal izlaridan uzoqlashtirishga ishonch hosil qildim. Men, shuningdek, barcha izlarni iloji boricha qisqa saqlashga ishonch hosil qildim, bypass kondansatkichlarini yukga yaqin joylashtirib, yuqori quvvatli komponentlar uchun qalinroq izlarni qo'lladim va aks holda, tenglikni loyihalashning keng tarqalgan yaxshi amaliyotlariga amal qildim. Yo'nalish biroz vaqt talab qildi, lekin menimcha, bu juda yaxshi chiqdi.

Keyingi qadam, soat muhofazasi uchun 3D modelini yaratish edi!

7 -qadam: 3D dizayni

3D dizayn
3D dizayn
3D dizayn
3D dizayn
3D dizayn
3D dizayn

Soat muhofazasi Fusion 360 yordamida juda oddiy, klassik soatlar dizaynidan so'ng ishlab chiqilgan. Men soatni bilaguzuk uchun 18 mm standart oralig'idan foydalangan holda, soatni boshqa bilaguzuklarning xilma -xilligi bilan moslashtirdim. PCB uchun kesish har qanday ishlab chiqarishdagi noaniqliklarni bartaraf etish uchun tenglikni o'zidan 0,4 mm kattaroq qilib yaratilgan. Men tenglikni o'rnatish uchun bir nechta vintli ustunlar va tenglikni yotqizish uchun kichik chekka qo'shdim. LEDlarning o'tkir qirralari kiyimga yopishib qolmasligi uchun, men tenglikni yuqori millimetrdan yuqoriga qo'yib qo'ydim. Qoplamaning balandligi faqat batareyaning qalinligi bilan belgilanadi. Qolgan qismi yumaloq qirralari va silliq burchaklari bilan yaxshi ko'rinishga mo'ljallangan. Men 3D-bosib chiqarishni do'stona saqlashga majbur bo'ldim, shuning uchun uni hech qanday yordamchi materialsiz uyda 3D chop etishim mumkin edi.

Uskunalar tugagandan so'ng, dasturiy ta'minot ustida ishlashni boshlash vaqti keldi!

8 -qadam: Kod

Kodeks
Kodeks

Men kodni barcha kerakli kutubxonalarni kiritishdan boshladim. Bunga RTC bilan aloqa qilish va LEDlarni boshqarish kutubxonasi kiradi. Shundan so'ng, men har bir rejim uchun alohida funktsiyalarni yaratdim. Foydalanuvchi tugmachani bosib rejimlarni o'zgartirganda, dastur shu rejimga mos keladigan funktsiyani chaqiradi. Agar foydalanuvchi belgilangan vaqt ichida tugmani bosmasa, soat uyquga ketadi.

Kutish rejimi barcha LEDlar to'liq o'chmaguncha o'chadi. Kutish rejimidan foydalanish batareyaning ishlash muddatini sezilarli darajada oshiradi va LEDlarni ishlatilmaganda o'chiradi. Foydalanuvchi yuqori tugmani bosib soatni uyg'otishi mumkin. Uyg'onganida, soat zaryadlanmasligini tekshirish uchun batareya quvvatini tekshiradi. Agar zaryadlash zarur bo'lsa, LEDlar vaqtni ko'rsatishdan oldin bir necha marta qizil yonadi. Agar batareya kritik darajadan past bo'lsa, u umuman yoqilmaydi.

Qolgan vaqtlarda dasturlash boshqa rejimlarni iloji boricha intuitiv qilishga aylandi. Men hamma rejimlarda bir xil funktsiyalar uchun javob beradigan bir xil tugmachaga ega bo'lish eng intuitiv bo'ladi deb o'yladim. Ba'zi sinovlardan so'ng, men tugmachaning konfiguratsiyasi:

  • Yuqori tugmani bosish: "Ko'rsatish vaqti", "Ko'rsatish sanasi", "Sekundomer" va "Signal" rejimlari o'rtasida uyg'onish / aylanish.
  • Yuqori tugmachani ushlab turish: "Vaqtni belgilash", "Sana o'rnatish", "Sekundomerni ishga tushirish" yoki "Signalni o'rnatish" rejimiga kiring.
  • Pastki tugmani bosish: Yorqinlikni oshirish.
  • Pastki tugmani ushlab turish: "Rang tanlash" rejimiga kiring.

Pastki tugma har doim qaysi rejimda bo'lishingizdan qat'i nazar, yorqinlik va rangni sozlash uchun javobgardir. Foydalanuvchi "Rangni tanlash" rejimiga kirganda, LEDlar barcha mumkin bo'lgan RGB ranglarini aylana boshlaydi. Foydalanuvchi animatsiyani to'xtatishi va o'ziga xos rejim uchun xohlagan rangni tanlashi mumkin (Ko'rsatish vaqti qizil, Ko'rsatilgan sanasi ko'k va boshqalar). Ranglar foydalanuvchilar tomonidan har xil rejimlarni farqlashda yordam berish uchun osongina sozlanishi uchun mo'ljallangan.

Kod tugagandan so'ng, uni mikrokontrollerga yuklash vaqti keldi!

9 -qadam: dasturlash

Dasturlash
Dasturlash

Lehimlash va yig'ish vaqti deyarli keldi, lekin bundan oldin men mikrokontrollerni dasturlashim kerak edi. Men bu darslikni kuzatdim

Yuklash vositasini ATmega328P-AU SMD-ga yoqing

bootloaderni yoqish va oddiy Arduino Uno dasturchisi sifatida mikrokontrollerni dasturlash.

Birinchi qadam "ArduinoISP" misol kodini yuklash orqali Arduino Uno -ni provayderga aylantirish edi. Men dasturlash rozetkasi bilan birga non taxtasidan foydalandim va o'quv qo'llanmasidan sxemani uladim. Shundan so'ng, men Arduino IDE -dagi "Burn Bootloader" tugmachasini bosib, yuklovchini mikrokontrolderga yozib oldim.

Mikrokontroller yuklagichga ega bo'lganidan so'ng, men Arduino Uno -dan mavjud mikrokontrollerni olib tashladim va kodni dasturiy rozetkadagi mikrokontrollerga yuklash uchun Arduino Uno kartasini USB -dan seriyali adapterga ishlatdim. Yuklash tugagandan so'ng, men lehim jarayonini boshlashim mumkin edi.

Keyingi qadam, barcha komponentlarni yig'ish va ularni lehimlash edi!

10 -qadam: Lehimlash

Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash

Lehimlash jarayoni ikki qismga bo'lingan. Avval pastki qatlamni, so'ngra yuqori qatlamni lehimlash kerak edi.

Men tasma yordamida bir nechta prototipli taxtalar orasidagi soat PCB -ni o'rnatdim. Bu lehim paytida tenglikni harakatlanmasligini ta'minladi, bu juda muhim. Keyin men lehim stencilini tenglikni ustiga qo'ydim va barcha lehim yostiqchalarini yopish uchun katta miqdorda lehim pastasini ishlatdim. Men ingichka cımbızdan foydalanib, barcha komponentlarni mos keladigan prokladkalarga joylashtirdim. Keyin men barcha tarkibiy qismlarni lehim bilan qaytarish uchun issiqlik tabancasından foydalandim.

Pastki qatlam lehimlanganda, men lehimlash muvaffaqiyatli bo'lganligiga ishonch hosil qilish uchun uni tezda vizual tekshiruvdan o'tkazdim. Keyin men taxtani ag'darib tashladim va boshqa tomondan lehim jarayonini takrorladim, bu safar barcha LEDlar bilan. Yuqori qatlamni lehimlashda taxtani qizib ketmaslik juda muhim edi, chunki pastki qismidagi barcha komponentlar yiqilib ketish xavfi ostida. Yaxshiyamki, barcha komponentlar joyida qoldi va tugmachalarni oddiy lehimlantiruvchi dazmol yordamida lehimlagandan so'ng, PCB tugatildi!

Endi oxirgi yig'ilish vaqti keldi!

11 -qadam: yig'ish

O'rnatish
O'rnatish

O'rnatish juda oddiy edi. Men batareyani tenglikka uladim va batareyani va tenglikni 3D bosilgan idishga joylashtirdim. Men tenglikni har bir burchagidagi o'rnatish teshiklaridagi to'rtta vintni burab oldim. Shundan so'ng, men 18 mm kamonli tayoqlar yordamida soat tasmalarini bog'ladim va soat tugadi!

12 -qadam: Xulosa va takomillashtirish

Xulosa va takomillashtirish
Xulosa va takomillashtirish
Xulosa va takomillashtirish
Xulosa va takomillashtirish

Soat kutilganidek ishlaydi va men uning qanday chiqqanidan juda xursandman. Menda hozircha hech qanday muammo yo'q edi va butun hafta ishlatilgandan keyin batareya deyarli to'liq zaryadlangan bo'lib qoladi.

Men kelajakda soatga boshqa funktsiyalarni qo'shishim mumkin. USB port mikrokontrolderga ulanganligi sababli, dasturiy ta'minotni istalgan vaqtda yangi funksiyalar bilan yangilash mumkin. Hozircha men soatning ushbu versiyasidan foydalanishni davom ettiraman va uzoq vaqt ishlatilganidan keyin uning qanday ishlashini ko'raman.

Agar sizda ushbu loyiha haqida fikrlaringiz, izohlaringiz yoki savollaringiz bo'lsa, ularni quyida qoldiring. Siz ularni [email protected] elektron manziliga ham yuborishingiz mumkin.

Soatlar musobaqasi
Soatlar musobaqasi
Soatlar musobaqasi
Soatlar musobaqasi

Soatlar tanlovida birinchi sovrin

Tavsiya: