Мазмұны:

NeoClock: 7 қадам (суреттермен)
NeoClock: 7 қадам (суреттермен)

Бейне: NeoClock: 7 қадам (суреттермен)

Бейне: NeoClock: 7 қадам (суреттермен)
Бейне: Қасымхан - Кім сенің жаныңды жаралап кеткен (сөзі/текст) 2024, Маусым
Anonim
Image
Image

Бұл Adafruit фантастикалық неопиксельді сақиналарын қолдану арқылы сағат құру туралы. Бұл сағаттың қызықты жері - оның неопиксельдің екі сақинасы бар, біреуі сағатты айтуға, екіншісі минуттарға, секундтарға және миллисекундтарға. Сағат Sparkfun DS3234 DeadOn нақты уақыт сағаты арқылы тамаша уақытты сақтайды. Құру оңай және өзгерту қызықты. Менің ойымша, бұл басқаларды неопиксельді сақиналар арқылы сағаттар немесе басқа өнер салуға шабыттандырады.

Менің барлық файлдарымды қарапайым форматта алғысы келетіндер үшін https://github.com/chrisgilmerproj/neoclock мекен -жайындағы менің github репозиторийімнен оларды жүктеп алыңыз.

1 -қадам: сағатты жобалау

Сағат дизайны
Сағат дизайны
Сағат дизайны
Сағат дизайны
Сағат дизайны
Сағат дизайны
Сағат дизайны
Сағат дизайны

Мен неопиксельдердің кем дегенде екі сақинасын қолданғым келетінін басынан білдім. Бірнеше жұмыстан кейін мен сағаттың бастапқы формасын сақтайтын бір сақинаның екіншісінде болуы жақсы деп шештім. Кішкене сақина сағат болады, ал қалған уақыт үлкен сақинада сақталады. Кейбір дизайнерлік көзқарастар неопиксельдердің құнын, қуатты талап етуді, лазерлік кесілген кесектердің мөлшерін және оған қандай өнер салғым келді.

Бұл қадам аяқталғаннан кейін мен сағат корпусын лазермен кесу жоспарын жасамас бұрын электрониканы түсінуім керек деп шештім.

2 -қадам: электрониканы жобалау

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

Электрониканы жобалау мен қалаған элементтерді алдын ала білуге келді:

  • Неопиксельді сақиналар (60 санау және 24 санау)
  • Ардуино (ми)
  • Сағаттың реттелуі (ардуино уақытты жақсы өткізбейді)
  • Қуатты басқару

Неопиксельдердің өлшемдері мен қуат талаптары жақсы құжатталған. Олар 5В тұрақты токпен жұмыс істейтіндіктен, мен 5В Arduino -мен жүруді жөн көрдім және өзім үшін жағдайды жеңілдетемін. Бос орынды ескере отырып, мен қарапайым Arduino Uno прототипін жасауды шештім, бірақ соңғы электроника үшін мен Arduino Mini таңдадым.

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

  1. Бастапқы ток соққысының пиксельдерге зақым келтірмеу үшін 1000uF конденсатор қажет.
  2. 60 санау сақинасының бірінші пиксельінде 470 Ом резистор қажет (бұл резистор 24 санау сақинасына салынған)

Adafruit -те дизайнды жалғастырмас бұрын оқу керек NeoPixel үздік тәжірибелері бар.

Уақытты сағатпен ұстау - тағы бір мәселе. Ардуиноға орнатылған сағат ұзақ уақыт бойы жақсы уақытты сақтау үшін жеткіліксіз. Нашар мәселе - бұл arduino -дағы уақытты әр уақытта қалпына келтіру қажет болуы мүмкін. Компьютерлер бұл мәселені электр сөндірулер арасындағы уақытты сақтау үшін сағат чипіндегі кішкентай батареяны қолдану арқылы шешеді. Бұрын мен Adafruit -тен ChronoDot сияқты нәрсені қолданар едім. Бірақ бұл жағдайда мен SparkFun -дан DS3234 (DeadOn RTC) қолдануға ақтау алғым келді. Егер сіз оны сағатқа қосқыңыз келсе, сіз DeadOn RTC -де күн туралы ақпаратты сақтай аласыз.

Ақырында, электр қуатын басқару біраз ойлануды қажет етті. Мен бәрін 5В кернеуін білуім керек еді, бірақ қажетті ток мөлшері жұмбақ болып көрінді. Көптеген жобалардағы жалпы кернеу реттегіші - L7805. Бұл 24В дейінгі кернеуді және 1,5А дейін максималды токты алады. Менде 12В 1.5А қабырға сусласы бар екенін білдім, сондықтан мен бұл жобаның кернеу реттегіші тамаша (және арзан!) Болады деп шештім.

Қалған бөліктер менің қорапшамнан немесе Radio Shack -тен келеді. Оларға сымдар, ажыратқыштар және тұрақты ток розеткасы кірді.

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

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

Мен осы жобаны құру үшін сатып алған электрониканың толық тізімін менің github репозиторийімде табуға болады: Электроника бөлшектерінің тізімі. Ол әр бөлікке арналған өнім бетіне сілтемелерге ие және өнім SKU қоса алғанда, кейбір қосымша ақпаратты қамтиды. Мен мұны нан тақтасында тез арада прототиптедім және кез келген суретке түсірмес бұрын лазермен кесуге және құрылысқа көштім. Дегенмен, мен оны бөлшектеуге оңай етіп жасадым, сондықтан мен сізге жоғарыдағы фотосуреттердегі бөлшектерді бөлшектедім.

Кескіндерді мұқият қараңыз, өйткені сымдар әдейі иілген және электрониканың бүкіл профилін жіңішке ұстауға мүмкіндік береді. Лазерлік кесуді жобалау алдында осы алғашқы прототипті жасау бөлшектердің қалыңдығын тексеруге мүмкіндік берді, осылайша сағат корпусының соңғы өлшемдерін анықтай алдым.

Менің байқауымша, мен бірнеше арнайы тақта жасадым. Мен сол тақталардың артқы жағын суретке түсіруге тырыстым, сонда сіз оларды қайталай аласыз. Сіз осындай табақтардың ассортиментін бірнеше долларға сатып ала аласыз және оларды сіздің жобаңызға сәйкес келтіре аласыз.

Сымдар тікелей алға, бірақ суреттерден есте сақтау маңызды:

  • Режим мен Реттеу қосқыштарына төмен түсетін резистор қажет болады. Мен жатқанымда 2.21 Ом резисторды қолдандым, бірақ кез келген шағын резистор жұмыс істейді (жақсырақ 1 кОм кем емес). Бұл қосылған Arduino кіріс түйреуіштерін тұрақтандырады, сондықтан олар жоғары көтерілгенде оны шуылдан ажыратуға болады.
  • DS3234 квадраттық толқыны (SQW) жерге қосылды, себебі ол қолданылмаған.
  • L7805 қуат көзі RAW түйреуішіндегі Arduino Mini -ге қосылады. Әрқашан Arduino -ға келетін қуатты RAW -ке қосыңыз.
  • 60 неопиксельді сақинаның бірінші пикселінде 470 Ом резисторы бар. Бұл мәселе болмауы керек, себебі 24 санаулы неопиксельде бұл үшін орнатылған резистор бар, бірақ өкініштен гөрі қауіпсіз.
  • Режим мен Орнату қосқыштары - SPST -тің батырмалы қосқыштары

Сымдардың түстері:

  • Қызыл: +5VDC
  • Қара: жер
  • Жасыл: деректер
  • Сары, көк, ақ: DS3234 үшін арнайы сымдар

Егер сіз неопиксельді бірінші рет қолдансаңыз, оларды ұзын тізбек ретінде қарастыруға болатынын есте ұстаған жөн. Сақинадағы «бірінші пиксель» туралы айту біртүрлі болып көрінуі мүмкін, бірақ шын мәнінде сақиналардағы әрбір тізбектің басталуы мен аяқталуы бар. Бұл жобада кіші сақинаның 24 пиксельі бірінші орынға, ал үлкен сақинаның 60 пикселі кейін келеді. Бұл менде 84 неопикселден тұратын тізбек бар екенін білдіреді.

Arduino Mini -дегі сымдар үшін:

  • DS3234 10 - 13 түйреуіштерге қосылады
  • Mode және Set қосқыштары 2 және 3 түйреуіштерде
  • Неопиксель туралы деректер 6 -штырудан келеді.

Мен FTDI кабелі арқылы бағдарламалау үшін Arduino Mini -нің төменгі жағына 6 тақырып қоюды ұсынамын.

Ағымдағы маңызды ескерту: Бұл сағат көп нәрсені қажет етеді. Мен оны шеше алатыныма сенімдімін, бірақ менің практикалық тәжірибем - 500 мА -ға тең немесе аз нәрсе ақыр соңында қоңыр дақтарды тудырады. Бұл сағаттың жынды түстермен жыпылықтауы мен уақытты сақтамауынан көрінеді. Менің соңғы қабырға суслоны - 12В және 1.5А, мен онымен ешқашан қоңыр түспедім. Алайда, 1.5А - кернеу реттегішінің (және басқа бөліктерінің) алатын шегі. Сондықтан бұл сомадан аспаңыз.

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 каталогынан табуға болады

Мен кодты жасау үшін қолданатын әрекеттер реті келесідей болды:

  • Неопиксельдердің Strand Test үлгісімен жұмыс жасайтынын растаңыз
  • Time Loop коды бар сағатты іске қосу әрекеті
  • Сағатты бір сақинаның орнына екі сақинада жұмыс істейтін етіп өзгертіңіз
  • DeadOn RTC мысалы арқылы уақытты сақтау үшін DS3234 қосыңыз
  • Режимді қосыңыз және қосқыштарды орнатыңыз
  • Arduion Debounce оқулығының көмегімен Debounce кодын қосыңыз
  • Сағат жарық диодтары үшін бірнеше түсті тақырыптарды қосыңыз
  • 0, 15, 30 және 45 минуттық белгілерге бірнеше анимация қосыңыз
  • 0, 15, 30 және 45 минуттық белгілерді бағдарлау үшін сағатқа компас нүктелерін қосыңыз

Егер сіз бұл кодты қалай құрғанымды көргіңіз келсе, GitHub -ды әр кодты қарау үшін қолдануға болады. Сағаттың тарихы - міндеттеме тарихында.

Түс схемаларын қосу қызықты болды, бірақ мен мәзірге олардың төртеуін ғана қостым. Әр тақырып сағат, минут, секунд және миллисекундтық «қолдарға» белгілі бір түс береді. Шындығында опциялар шексіз, бірақ мен тақырыптарды (тізімделген әдіс атауларын) қостым:

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Дегенмен, сіз осы қосымша әдістерді кодтан таба аласыз:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Анимациялар қосылды, себебі сағаттың он бес минуттық нүктесінде ескі сағаттардың шырылдауы маған ұнады. Бұл сағат үшін мен келесі анимацияларды жасадым:

  • 15 минут: Сақиналарды қызыл түске бояңыз
  • 30 минут: Сақиналарды жасыл түске бояңыз
  • 45 минут: Сақиналарды көк түске бояңыз
  • Сағаттың жоғарғы жағы: екі сақина бойынша кемпірқосақ жасаңыз

Қол жетімділік сағатқа қатысты мәселе болды, себебі ешкім сағатты бағдарлай алмады. Бұл светодиодтардың екі сақинасы. Мәселені шешу үшін мен сағатқа компас нүктелерін қостым. Бұл уақытты көп айту қабілетін жақсартты. Егер мен бұл туралы лазерлік кесуге жібермес бұрын білсем, оның орнына өнерге бірдеңе қосар едім. Бірақ сіз қараңғыда өнерді жақсы көре алмайсыз, сондықтан компас нүктелерінің болуы шынымен көмектеседі. Бір ескеретін жайт, сіз пиксельді бояуға шешім қабылдаған кезде, алдымен ағымдағы түсті түсіріп, жаңа аралас түсті жасауыңыз керек. Бұл оған табиғи сезім береді.

Соңғы бір ақпарат миллисекундтар туралы. Ардуинодағы миллисекундтар DS3234 емес, ішкі Arduino кристалынан шығады. Егер сіз миллисекундтарды көрсеткіңіз келсе немесе көрсетпесеңіз, бұл сізге байланысты, бірақ мен мұны істедім, сағат әрқашан бірдеңе істеп тұрғандай болды. Милисекундтар мен секундтар бір -біріне сәйкес келмейтіні сізді алаңдатуы мүмкін, бірақ іс жүзінде бұл туралы маған сағаттарға қараған кезде ешкім айтқан емес және менің ойымша, бұл жақсы көрінеді.

5 -қадам: Лазерлік кесілген файлдарды жобалау

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

Лазерлік кесу файлдарын жобалау кезінде мен екі нәрсені ескеруім керек болды. Біріншісі - мен жасағым келген материал, екіншісі - қалай жасалатыны. Мен неопиксельді диффузиялық акрилмен ағашпен қаптауды қалайтынымды білдім. Материалды түсіну үшін мен алдымен Понокодан бірнеше үлгілерге тапсырыс бердім:

  • 1x Шпон MDF - жаңғақ
  • 1x Шпон MDF - шие
  • 1х акрил - ақшыл сұр
  • 1х акрил - опал

Ағаш таңдаулары растризацияның қалай болатынын және күйіктің сағат жағында қалай көрінетінін көруге мүмкіндік берді. Акрил маған неопиксельдердің диффузиясын тексеруге және оның ағашқа қалай қарайтынын салыстыруға мүмкіндік береді. Ақырында мен шие ағашын опал акрилмен таңдадым.

Сағат өлшемдері негізінен неопиксельді сақиналардың өлшемімен анықталды. Мен білмедім, электроникаға сай болу үшін оның қалыңдығы қандай болуы керек еді. Электрониканы құрастырып, ағаштың қалыңдығы шамамен 5,5 мм болатынын біліп, маған сағат ішінде 15 мм бос орын қажет екенін анықтадым. Бұл ағаштың үш қабатын білдіреді. Бірақ дизайн мен кеңістіктің көп бөлігін алды мен артқы жағы алып қойғаннан кейін, мен бұл сақиналарды «қабырғаға» бөлуім керек болды, мен оларды кейін жабыстыра аламын.

Мен Ponoko ұсынған шаблонға сурет салу үшін InkScape қолдандым. Сағат корпусын шығарғаннан кейін мен ағашты қолмен салуды шештім. Мен шабыттандырған түпнұсқаны импорттай алмадым, бірақ мен өзіме ұқсас нәрсені қалай жасау керектігін білу қорқынышты емес еді.

Материалдардың бағасы шамамен 20 доллар болды, бірақ кесу құны шамамен 100 долларға өсті. Бұған екі нәрсе ықпал етті:

  • Қисықтар мен шеңберлер қымбатқа түседі, себебі машина екі осьте қозғалады және бұл дизайнда көптеген қисықтар бар
  • Растризация фрагмент бойынша алға -артқа көп өтуді қажет етеді. Мұны тастау көп ақшаны үнемдейді, бірақ маған ұнады.

Дизайнды аяқтағаннан кейін мен EPS файлдарын Понокоға жібердім және менің бөліктерім бір аптадан кейін дайын болды.

Мен Mode және Set қосқыштарын немесе DC қуат ұясын дизайнға енгізбегенімді ескеріңіз. Мен оны жібергенде, мен бұл бөліктер туралы әлі шешім қабылдаған жоқпын. Өзіме икемділік беру үшін мен оларды қалдырдым және оларды кейін қолмен бұрғылауды шештім.

6 -қадам: сағатты құру

Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру
Сағатты құрастыру

Барлық бөлшектер келгенде мен сағатты құрастырдым. Бірінші қадам - сағат корпусы, ол маған қабырғаларды тесіп, артқы және алдыңғы жағына жабыстыруды талап етті. Мен қабырғаның екі қабатын артқы жағына және бір қабатын алдыңғы жағына қойып, ағаш желімімен бекітемін. Алдыңғы жағында мен ағаш желіммен акрил сақиналары мен ағаш шеңберлерді біріктірдім. Менде құрылыс кезінде қажет болған бос орын ретінде кесетін қосалқы орталық бөлік болды. Мен оны ағаштың артқы жағына жапсырдым, бұл маған неопиксельді кейінірек желімдей алатын орын берді.

Корпус құрастырылған кезде мен ажыратқыштар мен қуат ұясына тесік бұрғылауды шештім. Кішкене геометрия (суретте көрсетілгендей) маған бәрін реттеуге көмектесті. Мен бұрғылау кезінде сыртынан бөлек ағаш бөлігін пайдаланып (өте мұқият!) Мен тесіктерді жасап, ажыратқыштар мен домкратқа жапсырдым.

Электроника бәрі кірді. Мен неопиксельдерді жабыстырдым, содан кейін конденсатор. Мен оларды неопиксельді ажыратқыш тақтаға қостым. Содан кейін артқы жағында сымдарды ажыратқыштарға және қуат ұясына қойдым. Мен L7805 кернеу реттегішін де енгіздім.

Сақиналарды бағдарлау туралы жылдам ескерту. 60 пиксельдік үлкен сақина үшін сағатты бағдарлау керек, сонда нөлдік минутты белгілеу үшін пикселдердің біреуі дәл жоғарғы жағында болады. Қандай пиксель маңызды емес және мен неге бір минут ішінде түсінемін. 24 пиксельді шағын сақина үшін сағатты екі пиксель арасында болатындай етіп бағыттау керек. Мұның себебі, егер сіз 12 сағатты белгілегіңіз келсе, сіз бір емес, екі пиксельді жарықтандырасыз. Пластмассаның таралуы мен ығысуы арқылы сізде шынымен 12 кең пиксель бар сияқты көрінеді.

Әр сақина үшін «пиксел» коды қандай пиксельге сәйкес келетініне келетін болсақ, кодты сәл өңдеу керек. Менің кодымда «inner_top_led» және «external_top_led» деп аталатын екі мән бар. Менің сағаттарымда «inner_top_led» кішкентай сақинаның басынан бастап 11 пиксель болды, ал «сыртқы_ үстіңгі» үлкен сақинаның басынан бастап 36 пиксель болды. Егер сіз сақиналарды басқаша бағдарлайтын болсаңыз, онда сіз бұл мәндерді бағдарыңыздың мәніне айналдырар едіңіз. Кішкене эксперимент және сіз дұрыс мәнді тез табасыз.

Осы сәтте мен бәрі күткендей жұмыс істейтінін тексердім.

Бірақ барлық жобалар сияқты мен де проблемаға тап болдым, мен оның қалай болатынын білмедім. Мен неопиксельдер мен қабырғалар арасында шамамен 3/8 дюйм бос орын бар екенін байқадым, сондықтан мен Home Depot -қа бардым, 3/8 дюймдік дюбель мен неодим магниттерін алдым. Мен үш жерге кішкене ағаш стендтер тұрғыздым және оларды әр құмыраға екі магнит қою үшін тегістедім (супер желім көмегімен). Мен әрқайсысы 3 жұптан 2 стендпен аяқтадым. Содан кейін мен оларды жақтауға бекітіп, қысқышпен орнында ұстадым. Мен мұны стендтердегі желім дымқыл болған кезде жасадым, сондықтан бәрі реттеліп, содан кейін дұрыс жерде кептіріледі. Бұл өте жақсы жұмыс істеді, мен шығарылымның бәрі жасырылғанын жақсы көремін.

Ақырында мен оны қабырғаға іліп қоюым керек екенін түсіндім, сондықтан оны қабырғаға іліп қою үшін артқы жағындағы кішкене ангарды бұрғыладым.

7 -қадам: Қорытынды ойлар

Бұл жобаны құру өте қызықты болды, мен неопиксельдер мен DS3234 туралы білуді ұнаттым. Маған, әсіресе, басынан аяғына дейін әдемі болып көрінетін жобаны құру ұнады. Егер мен мұны қайталасам, жаңартатын екі нәрсе бар, бірақ олар шамалы:

  • Мен қарапайымдылық үшін үш түйменің орнына екі түймені таңдадым. Бірақ төмен және жоғары түсуге мүмкіндік беретін түйменің болуы сағатты орнату үшін жақсы болар еді
  • Режим түймесі мен орнату түймесі ажыратылмайды. Мен оларды жиі араластырамын. Мүмкін мен оларды болашақта қарама -қарсы жаққа қояр едім.
  • Мен ешқашан ағаштың бетін бітірген емеспін. Маған бастапқыда шикі көрініс ұнады, кейінірек егер мен финишті бұзып алсам, оны түзету үшін көп шығын кетеді деп уайымдадым.
  • Ағашты растрлеу - бұл жақсы көрініс, бірақ мен болашақта ағаш туралы толығырақ мәлімет алуым мүмкін.
  • Сағатты күңгірттеу де жақсы мүмкіндік болар еді, өйткені ол қараңғыда өте ашық. Алайда, күңгірттеу түске байланысты және бұл бит тым ұзақ уақытқа созылғанын анықтады, сондықтан мен оны тастадым. Мен болашақта бұл мүмкіндікті қайта инвестициялайтын шығармын.

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

Ұсынылған: