Мазмуну:

NeoClock: 7 кадам (Сүрөттөр менен)
NeoClock: 7 кадам (Сүрөттөр менен)

Video: NeoClock: 7 кадам (Сүрөттөр менен)

Video: NeoClock: 7 кадам (Сүрөттөр менен)
Video: neoClock 2024, Июнь
Anonim
Image
Image

Бул Adafruitтин фантастикалык неопикселдүү шакектерин колдонуу менен саат куруу жөнүндө. Бул сааттын кызыктуу жери, анын чындыгында неопикселдердин эки шакеги бар, бири сааттарды айтуу үчүн, бири мүнөт, секунд жана миллисекунд үчүн. Саат Sparkfun DS3234 DeadOn Real Time Clock чипин колдонуп, эң сонун убакытты сактайт. Оңой куруу жана өзгөртүү кызыктуу. Менин үмүтүм, бул башкаларды неопикселдүү шакектерди колдонуу менен саат же башка искусство курууга шыктандырат деп ишенем.

Менин бардык файлдарымды жөнөкөйлөтүлүүчү форматта алууну каалагандар үчүн, бул долбоор үчүн менин github репозиторийимден жүктөп алсаңыз болот

1 -кадам: Саатты долбоорлоо

Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо
Саатты долбоорлоо

Мен неопикселдердин жок дегенде эки шакегин колдонгум келгенин башынан эле билчүмүн. Бир аз иштөөдөн кийин, мен эң мыкты дизайн, бир шакектин экинчисинде болушу керек деп чечтим, ал сааттын баштапкы түрүн сактайт. Кичинекей шакек сааттар болмок, калган убакыт чоң шакекте сакталмак. Кээ бир дизайнердик ойлорго неопикселдердин баасы, кубаттуулуктун талаптары, лазердик кесилген кесимдердин өлчөмү жана мен ага кандай көркөмдү койгум келген.

Бул кадам аяктагандан кийин, сааттын корпусун лазер менен кесүү пландарын түзүүдөн мурун, электрониканы түшүнүшүм керек деп чечтим.

2 -кадам: Электрониканы долбоорлоо

Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо

Электрониканы долбоорлоо мен каалаган элементтерди алдын ала билүү үчүн келди:

  • Neopixel шакектери (60 саны жана 24 саны)
  • Ардуино (мээ)
  • Саат жөнгө салуу (arduinos жакшы убакыт өткөрбөйт)
  • Күчтү башкаруу

Неопикселдердин өлчөмү жана кубат талаптары жакшы документтештирилген. Алар 5V DC менен иштегендиктен, мен 5V Arduino менен барууну чечтим жана өзүм үчүн нерселерди жөнөкөйлөтөм. Мейкиндикти эске алуу менен мен кадимки Arduino Unoдо прототип жасоону чечтим, бирок акыркы электроника үчүн мен Arduino Mini тандадым.

Бул долбоордун биринчи кайталанышы түздөн -түз Adafruitтин NeoPixel Basic Connections баракчасынан келген. Мен жеңилдетүү үчүн веб -сайттан диаграмманы коштум. Мындан эки нерсе маанилүү:

  1. Пикселдерге зыян келтирбөө үчүн баштапкы токтун соккусун алдын алуу үчүн 1000uF конденсатору керек.
  2. 60 эсептөө шакегинин биринчи пикселине 470 Ом резистор керек (бул резистор 24 эсептөө шакегине курулган)

Adafruitте дизайнды улантуудан мурун окууңуз керек болгон NeoPixel Best Practices топтому бар.

Убакытты саатта кармоо дагы бир көйгөй. Ардуинодо орнотулган саат узак убакыт бою жакшы убакыт өткөрүү үчүн жетишсиз. Андан да жаманы, ардуинодогу убакыт ар бир жолу баштапкы абалга келтирилиши мүмкүн. Компьютерлер бул көйгөйдү электр чыңалуусунун ортосундагы убакытты сактоо үчүн саат чипиндеги кичинекей батареяны колдонуу менен чечишет. Мурун мен Adafruitтен ChronoDot сыяктуу нерсени колдонмокмун. Бирок бул учурда мен SparkFunдан DS3234 (DeadOn RTC) колдонууга шылтоо кааладым. Эгер сиз муну саатка интеграциялоону кааласаңыз, DeadOn RTCде күндүн маалыматын сактай аласыз.

Акыр -аягы, бийликти башкаруу бир аз ойлонууну талап кылды. Мен баары 5В болушу керек экенин мурунтан эле билчүмүн, бирок керектүү токтун көлөмү табышмактуу болуп көрүнгөн. Көпчүлүк долбоорлордо жалпы чыңалуу жөндөгүчү L7805 болуп саналат. Бул 24Вга чейинки чыңалууга жана 1,5Ага чейин максималдуу токко ээ болот. Менде 12V 1.5A дубалдын чөбү бар экенин билчүмүн, ошондуктан бул долбоор үчүн идеалдуу (жана арзан!) Чыңалуу жөндөгүчү болот деп чечтим.

Калган бөлүктөр менин кутучамдан же Radio Shackтен келген. Алар зымдарды, өчүргүчтөрдү жана DC токту туташтыргычты камтыйт.

3 -кадам: Электрониканы куруу

Электрониканы куруу
Электрониканы куруу
Электрониканы куруу
Электрониканы куруу
Электрониканы куруу
Электрониканы куруу

Бул долбоорду куруу үчүн сатып алган электрониканын толук тизмесин менин github репозиторийимден бул жерден тапса болот: Электроника бөлүктөрүнүн тизмеси. Бул ар бир бөлүк үчүн продукт баракчасына шилтемелерди камтыйт жана продукттун СКУсун камтыган кээ бир кошумча маалыматты камтыйт. Мен муну бат эле нан тактасына түшүрдүм жана кандайдыр бир сүрөткө түшөрдөн мурун лазердик кесүүгө жана имаратка өттүм. Бирок, мен аны бөлүп алуу оңой кылып курдум, андыктан мен сиз үчүн жогорудагы сүрөттөрдөгү бөлүктөрдү талкаладым.

Сүрөттөрдү жакшылап караңыз, анткени зымдар атайылап ийилгендиктен жана электрониканын бүт профилин жука кармап туруу үчүн. Бул баштапкы прототиптөөнү лазердик кесүүгө чейин жасоо мага тетиктердин калыңдыгын текшерүүгө мүмкүндүк берди, ошондуктан мен сааттын корпусунун акыркы өлчөмдөрүн аныктай алдым.

Байкасаңыз, мен бир нече атайын нан табакчасын жасадым. Мен аларды тактайлардын арткы жагын сүрөткө тартууга аракет кылдым, сиз аларды кайталай аласыз. Сиз бир нече долларга окшош нан такталарын сатып алып, аларды долбооруңузга ылайыкташтыра аласыз.

Кабелдер түз алдыга жылат, бирок сүрөттөрдөн эстен чыгарбоо керек болгон нерселер:

  • Mode жана Set өчүргүчтөрү резисторлорду түшүрүү керек болот. Мен жатып калган 2.21Ohm резисторлорун колдондум, бирок кичинекей резистор иштейт (эң жакшысы 1kOhm кем эмес). Бул туташкан Arduino киргизүү казыктарын турукташтырат, ошондуктан алар бийикке чыкканда ызы -чуудан айырмаланат.
  • DS3234төгү квадрат толкуну (SQW) ал колдонулбагандыктан негизделген.
  • L7805тин күчү RAW пиндеги Arduino Miniге киргизилет. Ар дайым Arduinoго келген күчтү RAWке салыңыз.
  • 60 неопикселдүү шакектин биринчи пикселинде 470Ohm резистору бар, маалымат пиктеринен биринчи пикселге келтирилген зыянды азайтуу үчүн. Бул көйгөй болбошу керек, анткени 24 эсептөөчү неопикселде буга чейин каршылыгы бар, бирок кечиримдүү болгондон көрө коопсузураак.
  • Mode жана Set өчүргүчтөрү SPST убактылуу баскыч баскычтары болуп саналат

Зымдын түстөрү:

  • Кызыл: +5VDC
  • Кара: Жер
  • Жашыл: маалыматтар
  • Сары, Көк, Ак: DS3234 үчүн атайын зымдар

Эгерде сиз неопикселдерди биринчи жолу колдонуп жатсаңыз, анда аларды узун чынжыр катары кароого болорун эстен чыгарбаңыз. Ошентип, рингдеги "биринчи пиксел" жөнүндө сүйлөшүү кызыктай көрүнүшү мүмкүн, бирок чындыгында шакектердеги ар бир чынжырдын башталышы жана аягы бар. Бул долбоордо кичинекей шакектин 24 пиксели биринчи орунда, ал эми чоңураактын 60 пиксели кийин келет. Бул чындыгында менде 84 неопикселден турган чынжыр бар дегенди билдирет.

Arduino Miniдеги зым үчүн:

  • DS3234 10-13 -казыктарга туташат
  • Mode жана Set өчүргүчтөрү 2 жана 3 -казыктарда
  • Неопикселдик маалыматтар пин 6дан келет.

Мен дагы 6 башты Arduino Mini түбүнө коюуну сунуштайм, андыктан аны FTDI кабели аркылуу программалай аласыз.

Учурдагы маанилүү эскертүү: Бул саат көп нерсени талап кылат. Мен муну чече алам деп ишенем, бирок менин практикалык тажрыйбам 500мАга барабар же андан аз нерсе акыры күрөң чыгууга алып келет. Бул сааттын жинди түстөрдү жаркылдатып, убакытты сактабаганын көрсөтөт. Менин акыркы дубал wort 12V жана 1.5A болуп саналат жана мен аны менен күрөң чыккан эмесмин. Бирок, 1.5A - бул чыңалуу жөндөгүчүнүн (жана башка бөлүктөрүнүн) чеги. Андыктан бул суммадан ашпаңыз.

4 -кадам: Саатты коддоо

Саатты коддоо
Саатты коддоо

Сааттын толук кодун GitHubдагы NeoClock кодунан тапса болот. Мен бул жерге файлды коштум, бирок репозиторийде кандайдыр бир өзгөрүүлөр болот.

Менин оюмча, эгер сиз бардыгын бир убакта жасоого аракет кылсаңыз, код жазуу өтө оор болушу мүмкүн. Буга баруунун ордуна, мен иштеп жаткан мисалдан баштоого аракет кылып, керектүү функцияларды түзүп жатам. Мен кирерден мурун, менин кодум төмөнкү репозиторийлерден жана Arduino CC форумунан көптөгөн мисалдарды бириктирүүдөн келип чыкканын белгилегим келет. Ар дайым кредитиңизди керектүү жерде бериңиз!

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

Бул репозиторийлердин кээ бир коддорун менин Code Examples Directoryдон тапса болот

Мен кодду түзүү үчүн колдонулган операциялардын тартиби төмөнкүдөй болду:

  • Neopixels Strand Test мисалында иштээрин ырастаңыз
  • Time Loop Code менен саатты иштетүү аракети
  • Саатты бир шакектин ордуна эки шакекче иштөө үчүн өзгөртүңүз
  • DeadOn RTC мисалы аркылуу убакытты сактоо үчүн DS3234 кошуңуз
  • Режимди кошуп, которгучтарды коюңуз
  • Arduion Debounce үйрөткүчүнүн жардамы менен Debounce кодун кошуңуз
  • Саат LED үчүн кээ бир түстүү темаларды кошуу
  • 0, 15, 30 жана 45 мүнөттүк белгилерге анимацияларды кошуңуз
  • 0, 15, 30 жана 45 мүнөт белгилерин багыттоо үчүн саатка компастын пункттарын кошуңуз

Эгерде сиз бул кодду кантип түзгөнүмдү көргүңүз келсе, анда GitHub'ды колдонуп, ар бир коддун аткарылышын карап чыгыңыз. Сааттын тарыхы милдеттенме тарыхында.

Түс схемаларын кошуу кызыктуу болчу, бирок аягында менюга алардын төртөөсүн гана киргиздим. Ар бир тема саат, мүнөт, секунд жана миллисекунд "колго" белгилүү бир түс коет. Чынында бул жерде варианттар чексиз, бирок мен темаларды киргиздим (методдордун аттары келтирилген):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Бирок, бул кошумча ыкмаларды коддон таба аласыз:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Анимациялар кошулду, анткени сааттын он беш мүнөттүк чекитинде эски сааттардын шыңгырашы мага жакты. Бул саат үчүн мен төмөнкү анимацияларды жасадым:

  • 15 мүнөт: шакектерди Кызыл түскө боёгула
  • 30 мүнөт: шакектерди жашыл түскө боёгула
  • 45 мүнөт: шакектерди көк түскө боёгула
  • Сааттын чокусу: Эки шакектин үстүнөн асан -үсөн жасаңыз

Пайдалуу жөндөмдүүлүк сааттын көйгөйү болуп чыкты, анткени саатты эч ким багыттай алган эмес. Бул диоддордун эки шакеги эле. Ошентип, маселени чечүү үчүн саатка компас пункттарын коштум. Бул убакытты көп нерсени айтуу жөндөмүн жакшыртты. Мен бул жөнүндө лазердик кесимдерди жөнөтүүдөн мурун билгенде, анын ордуна искусствого бир нерсе кошмокмун. Бирок, сиз караңгыда искусствону көрө албайсыз, андыктан компастын учтары чынында жардам берет. Муну эске алуу керек, сиз пикселди боёону чечкенде, биринчи кезекте учурдагы түстү тартып, жаңы аралаш түстү түзүшүңүз керек. Бул ага табигый сезимди берет.

Акыркы маалымат миллисекундтар жөнүндө. Ардуинодогу миллисекундтар DS3234 эмес, ички Arduino кристаллынан чыгат. Милисекунддарды көрсөтүүнү каалайсызбы же жокпу, сизге көз каранды, бирок мен муну кылдым, саат дайыма бир нерсе кылып жаткандай көрүндү. Милисекундтар жана секунддар дайыма эле бири -бирине туура келбейт деп ойлошуңуз мүмкүн, бирок иш жүзүндө саатты карап жатканда мага эч ким эч качан айткан эмес жана менимче, бул жагымдуу окшойт.

5 -кадам: Laser Cut Files долбоорлоо

Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо
Лазердик кесилген файлдарды долбоорлоо

Лазердик кесилген файлдарды иштеп чыгууда эки нерсени эске алуу керек болчу. Биринчиси, мен аны кургум келген материал, экинчиси кантип курулаары. Мен жыгачтан акрил менен неопиксель таркатууну каалаарымды билчүмүн. Материалды түшүнүү үчүн мен алгач Понокодон кээ бир үлгүлөрдү заказ кылдым:

  • 1x Veneer MDF - Жаңгак
  • 1x Veneer MDF - Cherry
  • 1x Акрил - Ачык Боз
  • 1х Акрил - Опал

Жыгачтын тандоолору мага растризациянын кандай болорун жана күйүк сааттын жагында кандай болорун көрүүгө мүмкүнчүлүк берет. Акрил мага неопикселдердин диффузиясын сынап көрүүгө жана анын жыгачка кандай караарын салыштырууга мүмкүндүк берет. Акыр -аягы, мен Opal акрил менен Cherry жыгачын чечтим.

Сааттын өлчөмдөрү негизинен неопикселдик шакектердин өлчөмү боюнча аныкталган. Мен билген жокмун, электроникага туура келиши үчүн анын калыңдыгы керек болчу. Электрониканы куруп, жыгачтын калыңдыгы 5,5 мм экенин билип, сааттын ичинде 15 ммдей боштук керек экенин аныктадым. Бул үч катмар жыгачты билдирет. Ал эми менин алдыңкы жана арткы бөлүгүм басымдуу бөлүгүн ээлеп турганда, мен бул шакектерди "кабыргаларга" бөлүп, кийинчерээк жабыштырышым керек болчу.

Мен InkScapeти Поноко берген шаблонго тартуу үчүн колдондум. Сааттын корпусун тарткандан кийин мен даракты колго тартууга кириштим. Мени шыктандырган баштапкы сүрөттү импорттой алган жокмун, бирок өзүмө окшош нерсени кантип жасоону түшүнүү коркунучтуу болгон жок.

Материалдардын баасы болгону 20 долларга жакын болчу, бирок кесүү баасы 100 долларга жакын болуп чыкты. Буга эки нерсе салым кошту:

  • Ийри жана Чөйрөлөрдүн баасы кымбат, анткени машина эки огунда кыймылдайт жана бул дизайнда көптөгөн ийри сызыктар бар
  • Растеризация кесим боюнча алдыга жана артка көп өтүүнү талап кылат. Муну таштасам эң көп акча үнөмдөлмөк, бирок мага жакты.

Дизайнды бүтүргөндөн кийин, мен EPS файлдарын Понокого жөнөттүм жана менин чыгармаларым бир жумадан кийин жасалды.

Белгилей кетчү нерсе, мен Mode жана Set өчүргүчтөрүн же DC Power Jackди дизайнга кошкон эмесмин. Мен муну жөнөткөндө, мен ал бөлүктөр боюнча чечим кабыл алган эмесмин. Өзүмө көбүрөөк ийкемдүүлүк берүү үчүн мен аларды таштап коюп, кийинчерээк кол менен бургулоону чечтим.

6 -кадам: Саатты куруу

Саатты куруу
Саатты куруу
Саатты куруу
Саатты куруу
Саатты куруу
Саатты куруу
Саатты куруу
Саатты куруу

Бардык бөлүктөр келгенде мен саатты түздүм. Биринчи кадам сааттын кузову болду, ал мага кабыргаларды тешип, артына жана маңдайына жабыштырууну талап кылды. Арткы бетине эки кабат кабыргасын коюп, бир катмарын жыгач клей менен койдум. Акрил шакектерин жана жыгач тегерекчелерин бириктирүү үчүн алдыңкы жагында жыгач желимин колдондум. Менде бош кезде борбордук бөлүк бар болчу, ал боштук катары кесүү керек болчу, ал курулуш учурунда жардамга келди. Мен аны бактын арткы бетине чаптадым жана бул мага кийин неопиксельдерди жабыштыра турган жер берди.

Корпустун түзүлүшү менен мен өчүргүчтөрдү жана электр уячасынын тешиктерин бурууну чечтим. Кичинекей геометрия (сүрөттө көрүнүп тургандай) мага баарын тегиздөөгө жардам берди. Мен бургулап жатканда сырттагы өзүнчө жыгачты колдонуп (өтө кылдат!) Мен тешиктерди жасап, өчүргүчтөргө жана домкратка чаптап койгом.

Электроника баары кийинки кирди. Мен неопикселдерди чаптадым, андан кийин конденсатор. Буларды мен неопикселдик электр өчүрүү тактасына туташтырдым. Андан кийин арткы жагына зымдарды өчүргүчтөргө жана электр уячасына койдум. Мен L7805 чыңалуу жөндөгүчүн да коштум.

Шакектерди багыттоо боюнча кыска жазуу. 60 пикселдик чоң шакек үчүн саатты багыттоо керек, ошондуктан пикселдердин бири нөл мүнөттү белгилөө үчүн так чокуда. Кайсы пикселдин мааниси жок жана мен эмне үчүн бир мүнөттө алам. 24 пикселдик кичинекей шакек үчүн саатты эки пикселдин ортосунда болушу үчүн багыттоо керек. Мунун себеби, эгерде сиз 12 саатты белгилөөнү кааласаңыз, анда бир пикселдин ордуна эки пикселди күйгүзөсүз. Офсетке ээ болуу менен жана пластмассаны жайылтуу менен, сизде чынында 12 кең пиксел бар сыяктуу көрүнөт.

Код кайсы пикселди ар бир шакектин "үстү" деп белгилегенине келсек, кодду бир аз түзөтүшүңүз керек. Менин кодумда "inner_top_led" жана "external_top_led" деген эки баалуулук бар. Менин сааттарымда "inner_top_led" кичинекей шакектин башынан 11 пикселди, ал эми "тышкы_топтун" чоң шакектин башынан 36 пикселди түзгөн. Эгерде сиз шакектерди башкача багыттасаңыз, анда сиз бул баалуулуктарды сиздин ориентацияңызга алмаштырмаксыз. Бир аз эксперимент жүргүзсөңүз, тез эле туура бааны таба аласыз.

Бул жерде мен баары күтүлгөндөй иштегенин сынап көрдүм.

Бирок, бардык проекттердегидей эле, мен көйгөйгө туш болдум, анткени мен анын кантип биригерин билбедим. Мен неопикселдер менен кабыргалардын ортосунда 3/8 дюймдай боштук бар экенин байкадым, ошондуктан Home Depotко бет алдым жана 3/8 дюймдук дубель менен бир катар неодим магниттерин алдым. Мен үч жерге кичинекей жыгач стенддерди куруп, ар бир стендге эки магнитти коюу үчүн аларды кум менен сүрдүм (супер клей менен). Мен ар бири 2 стендден 3 жуп менен аяктадым. Анан буларды кадрга чаптап, бардыгын кыскыч менен кармап турдум. Мен муну стенддеги клей ным болуп турганда жасадым, андыктан баары тегизделип, анан туура жерде кургайт. Бул кемчиликсиз иштеди жана релиздин баары жашыруун экенин жакшы көрөм.

Акырында мен аны дубалга илишим керек экенин түшүндүм, ошондуктан аны дубалга илиш үчүн артындагы кичинекей ангарды бургуладым.

7 -кадам: Акыркы ойлор

Бул долбоорду куруу абдан кызыктуу болду жана мага неопикселдер жана DS3234 жөнүндө билүү абдан жакты. Мага өзгөчө акыры башынан аягына чейин жакшы көрүнгөн долбоорду куруу абдан жакты. Эгер мен муну дагы бир жолу кылсам, жаңылай турган эки нерсе бар, бирок алар кичинекей:

  • Жөнөкөйлүк үчүн үч баскычтын ордуна эки баскычты тандадым. Ал эми ылдый жана өйдө кетүүгө мүмкүндүк бере турган баскычтын болушу саатты коюу үчүн жакшы болмок
  • Режим баскычы менен коюлган баскыч айырмаланбайт. Мен аларды көп аралаштырам. Балким, мен келечекте аларды карама -каршы тарапка коймокмун.
  • Мен эч качан жыгач фронтту бүтүргөн эмесмин. Башында чийки көрүнүшү мага жакты, кийинчерээк эгер мен финишти бузуп койсом, аны оңдоого көп каражат кетет деп кооптонуп калдым.
  • Даракты растирлөө - бул жакшы көрүнүш, бирок мен келечекте дарак үчүн кененирээк маалымат алмакмын.
  • Саатты караңгылатуу дагы жакшы өзгөчөлүк болмок, анткени ал караңгыда абдан жарык. Бирок, караңгылык түскө байланган жана бул бит өтө көп убакытты алганын түшүнүп, мен аны таштадым. Кыязы, мен келечекте бул функцияга кайра инвестиция салмакмын.

Бул көрсөтмө аркылуу окуу үчүн рахмат. Сиз өзүңүздүн саатты же неопикселдик проектиңизди жасап, мени менен бөлүшөсүз деп үмүттөнөм. Бактылуу курулуш!

Сунушталууда: