Мазмұны:

DIY Arduino екілік дабыл сағаты: 14 қадам (суреттермен)
DIY Arduino екілік дабыл сағаты: 14 қадам (суреттермен)

Бейне: DIY Arduino екілік дабыл сағаты: 14 қадам (суреттермен)

Бейне: DIY Arduino екілік дабыл сағаты: 14 қадам (суреттермен)
Бейне: 4 LED Binary Counter || Arduino 2024, Шілде
Anonim
DIY Arduino екілік дабыл сағаты
DIY Arduino екілік дабыл сағаты
DIY Arduino екілік дабыл сағаты
DIY Arduino екілік дабыл сағаты
DIY Arduino екілік дабыл сағаты
DIY Arduino екілік дабыл сағаты

Бұл қайтадан классикалық екілік сағат! Бірақ бұл жолы қосымша функциямен! Бұл нұсқаулықта мен сізге Arduino -мен екілік оятқышты қалай жасау керектігін көрсетемін, ол сізге уақытты ғана емес, сонымен қатар күнді, айды, тіпті таймер мен дабыл функциясын қолдана отырып, төсек шамы ретінде қолдануға болады! Көп ойланбастан бастайық!

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

Жабдықтар

5мм жарық диоды (кез келген түсте, мен индикатор ретінде бір RGB светодиоды бар 13 ақ жарықдиодты қолдандым) --- 14 дана

Arduino Nano (басқалары жұмыс істей алады) --- 1 дана

Микро коммутатор-1 дана

Алюминий фольгадан жасалған кішкене бөлік

Монтаж тақтасы (қоршау үшін, бірақ өзіңіздің дизайныңызды жасаңыз)

Ақ қағаз бөлігі (немесе кез келген басқа түсті)

Кейбір пластикалық пленка (кітап мұқабасы ретінде пайдаланылады)

Сымдар шоғыры

Дыбыстық сигнал-1 дана

NPN транзисторы-1 дана

Резисторлар 6k8 --- 14 дана, 500R --- 1 дана, 20R (10Rx2) --- 1 дана, 4k7 --- 1pc

Жобаның қуат көзі (мен батареяны қолдандым)

5050 жарықдиодты жолақ және сырғытпалы қосқыш (міндетті емес)

1 -қадам: тізбекті қосыңыз

Циклды қосыңыз!
Циклды қосыңыз!

Мен бұл қадамды келесіге бөлемін:

1) Дабыл сигналы бөлігі

2) Жарық диодты панель

3) қосқыш (түйме)

4) жарықдиодты жолақ

5) Сыйымдылық сенсоры

6) Электрмен жабдықтау

7) Олардың барлығын Arduino -ға қосыңыз

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

2 -қадам: Зумерлік бөлікті дайындау

Зумерлік бөлікті дайындау
Зумерлік бөлікті дайындау
Зумерлік бөлікті дайындау
Зумерлік бөлікті дайындау
Зумерлік бөлікті дайындау
Зумерлік бөлікті дайындау

Егер сіз бұған дейін Arduino -мен дыбыстық сигналды қолданған болсаңыз, егер біз оны Arduino -ға тікелей қосатын болсақ, ол қатты дыбыс шығармайтынын білесіз. Сондықтан бізге күшейткіш қажет. Күшейткішті құру үшін бізге NPN транзисторы қажет (негізінен кез келген NPN жұмыс істейді, мен оны S9013 қолдандым, себебі мен оны ескі жобадан алдым) және токты шектейтін резистор. Бастау үшін алдымен транзистордың коллекторын, эмитентін және негізін анықтаңыз. Деректер кестесін біршама гуглинг бұл үшін жұмыс істейді. Содан кейін транзистордың коллекторын дыбыстық сигналдың теріс терминалына дәнекерлеңіз. Дыбыстық сигналдың оң терминалында біз сымның бір бөлігін дәнекерлейміз, сондықтан оны кейінірек Arduino -ға дәнекерлей аламыз. Осыдан кейін 500R резисторын (немесе кез келген ұқсас резистордың) резисторын транзистордың негізіне және резистордан дәнекерлеңіз, болашақта қолдануға болатын басқа сымды дәнекерлеңіз. Соңында екі 10Р резисторды транзистор эмитентіне дәйекті дәнекерлеп, резисторлардан басқа сымды жалғаңыз.

Шынында да, схемаға жүгініңіз.

p/s: Мен мұны жазған кезде транзисторға резисторды қалай таңдау керектігін әлі білмеймін. Мен қолданған мән эмпирикалық түрде таңдалады.

3 -қадам: жарықдиодты панельді дайындау

Жарықдиодты панельді дайындау
Жарықдиодты панельді дайындау
Жарықдиодты панельді дайындау
Жарықдиодты панельді дайындау
Жарықдиодты панельді дайындау
Жарықдиодты панельді дайындау

Светодиодтар мен резисторды сәйкесінше прототип тақтасына қосыңыз және дәнекерлеңіз. Міне бітті. Схеманы орындаңыз. Егер сіз қолданған бос орын сізді қызықтырса, әр баған үшін 3 тесік, әр жол үшін екі тесік (суретті қараңыз). Ал индикатордың индикаторы? Мен оны кездейсоқ жалғадым.

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

ЕСКЕРТПЕ: Сіз бұл қадамды шатастырып алуыңыз мүмкін. Есіңізде болсын, барлық жерді қосудың орнына, біз барлық оң терминалды және теріс терминалды Arduino жеке түйреуішіне қосамыз. Осылайша, біз Arduino GPIO түйреуішін Vcc емес, жер ретінде қолданамыз. Егер сіз кездейсоқ артқа қоссаңыз, алаңдамаңыз. LED басқару функциясында барлық HIGH -ды LOW -қа және LOW -ге HIGH -ға өзгертуге болады.

4 -қадам: Коммутаторды дайындау (іс жүзінде түйме)

Коммутаторды дайындау (іс жүзінде түймешік)
Коммутаторды дайындау (іс жүзінде түймешік)
Коммутаторды дайындау (іс жүзінде түйме)
Коммутаторды дайындау (іс жүзінде түйме)
Коммутаторды дайындау (іс жүзінде түймешік)
Коммутаторды дайындау (іс жүзінде түймешік)

Коммутатор үшін (мен оны коммутатор деп атаймын, себебі мен микро коммутаторды қолдандым, бірақ сіз оның батырмасы екенін білесіз), бізге 4k7 тартылатын резистор және әрине коммутатордың өзі қажет. О, кейбір сымдарды дайындауды ұмытпаңыз. Резистор мен сым бөлігін микро коммутатордың жалпы жеріне (COM) дәнекерлеу арқылы бастаңыз. Содан кейін, микро сөндіргіштің қалыпты ашылған (NO) сымының басқа бөлігін дәнекерлеңіз. Соңында резисторға басқа сымды жалғаңыз. Оны ыстық желіммен бекітіңіз.

Білім бұрышы: Неліктен бізге төмен түсетін резистор қажет?

«Егер сіз сандық енгізу -шығару түйреуішін барлығынан ажыратсаңыз, жарық диоды тұрақты түрде жыпылықтауы мүмкін. Бұл» өзгермелі «болғандықтан, яғни кездейсоқ жоғары немесе төмен деңгейге қайтарылады. тізбектегі тартылатын резистор ». - Дереккөз: Arduino веб-сайты

5 -қадам: жарық диодты жолақты дайындау

Жарық диодты жолақты дайындау
Жарық диодты жолақты дайындау
Жарық диодты жолақты дайындау
Жарық диодты жолақты дайындау

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

6 -қадам: Сыйымдылық сенсорын дайындау

Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау
Сыйымдылық сенсорын дайындау

Жарайды суретке қараңыз. Негізінде біз сымды алюминий фольгасының кішкене бөлігіне бекітеміз (өйткені алюминий фольганы дәнекерлеуге болмайды), содан кейін оны монтаж тақтасының кішкене бөлігіне жабыстырамыз. Еске сала кетейік, алюминий фольганы жапсырмаңыз. Оның бір бөлігін ашық байланыста қалдырыңыз.

7 -қадам: Қуат көзін дайындау

Қуат көзін дайындау
Қуат көзін дайындау
Қуат көзін дайындау
Қуат көзін дайындау
Қуат көзін дайындау
Қуат көзін дайындау

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

8 -қадам: оларды Arduino -ға қосу

Оларды Arduino -мен байланыстыру
Оларды Arduino -мен байланыстыру
Оларды Arduino -ға қосу
Оларды Arduino -ға қосу
Оларды Arduino -мен байланыстыру
Оларды Arduino -мен байланыстыру

Схеманы орындаңыз! Схеманы орындаңыз! Схеманы орындаңыз!

Қате түйреуішті қоспаңыз, әйтпесе біртүрлі болады.

9 -қадам: қоршау

Қоршау
Қоршау
Қоршау
Қоршау
Қоршау
Қоршау
Қоршау
Қоршау

Менің дизайнның өлшемі 6.5см*6.5см*8см, сондықтан ол аз көлемді. Ол жарықдиодты дисплейге арналған алдыңғы терезеден және төсек шамының жоғарғы терезесінен тұрады. Менің дизайнымды суреттерден қараңыз.

10 -қадам: Бағдарламалау уақыты

Image
Image
Бағдарламалау уақыты!
Бағдарламалау уақыты!

Төмендегі эскизімді жүктеп, Arduino -ға жүктеңіз. Егер сіз мұны қалай жасау керектігін білмесеңіз, бұл жобаны жасамаңыз! Әзіл емес, міне жақсы оқулық: эскизді arduino -ға жүктеңіз

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

Сағатты орнату үшін: h, XX - мұнда xx - ағымдағы сағат

Минутты орнату үшін: мин, XX - xx - ағымдағы минут

Екінші орнатуға: s, XX

Күнді орнату үшін: d, XX

Айды орнату үшін: дс, XX

Жоғарыда келтірілген түсініктеме орындалған кезде, ол сіз орнатқан мәнді қайтаруы керек. (Мысалы, сағатты 15, арқылы орнатқанда, ол сериялық мониторда Сағат: 15 мәнін қайтаруы керек.

Сыйымдылық сенсоры үшін оны жұмыс жасамас бұрын калибрлеу қажет болуы мүмкін. Мұны істеу үшін микро қосқышты екі рет басып, сериялық мониторға қараңыз. Ол көптеген сандарды шығаруы керек. Енді саусағыңызды сыйымдылық сенсорына қойыңыз және санның диапазонына назар аударыңыз. Әрі қарай, «captrigger» айнымалысын өзгертіңіз. Сіз басқан кезде 20-30 аласыз делік, содан кейін каптриггерді 20-ға қойыңыз.

Эскизде ADCTouch кітапханасы қолданылады, оны орнатқаныңызға көз жеткізіңіз.

11 -қадам: түзету механизмі

Менің кодтағы түзету механизмінің уақыт кезеңі мен үшін дәл уақытқа орнатылды. Егер уақыт әлі де дәл болмаса, айнымалы мәнін өзгерту керек «corrdur»

Ең соңғы жаңартуда түзеткіш енді әдепкі бойынша 0 болады.

Коррдурдың мәні бір секундқа баяулау үшін қанша миллисекунд қажет екенін білдіреді

Коррдурдың мәнін білу үшін мына формуланы қолданыңыз:

2000/(у-х)/х)

мұнда x = өткен уақыттың нақты ұзақтығы және у = сағаттың өткен уақыты, екеуі де секундта

X пен y мәнін табу үшін кішкене эксперимент жасау керек.

Сағаттың уақытын нақты уақытқа орнатыңыз және бастапқы уақытты жазыңыз (нақты бастапқы уақыт пен сағаттың бастапқы уақыты бірдей болуы керек). Біраз уақыттан кейін (бірнеше сағаттан кейін) соңғы нақты уақыт пен соңғы уақытты жазыңыз.

x = нақты соңғы уақыт-бастапқы уақыт және у = сағат соңғы уақыт-бастапқы уақыт

Содан кейін кодтағы түзетудің мәнін өзгертіңіз және Arduino -ға қайта жүктеңіз.

Содан кейін тестті қайталаңыз және бұл жолы формула өзгерді:

2000/((2/z)+(y-x/x))

Мұндағы x және y - бұрынғыға ұқсас нәрсе, ал z - ағымдағы түзету мәні.

Қайта жүктеңіз және тест сізге жеткілікті дәл болғанша қайта -қайта жасаңыз.

Егер сіздің сағатыңыз әлі де жылдамдаса, тіпті түзету 0-ге орнатылған (түзетуші механизм жоқ дегенді білдіреді), кодтың түзету механизмінің бөлігінде екіншісін ++ екіншіге өзгерту керек (мен түсіндірдім), коррдурды 0-ге орнатыңыз, сосын жоқты табыңыз. миллисекундқа бір секунд жылдамдықты алу қажет.

12 -қадам: Барлық функцияларды пайдалану әдісі

Image
Image

Режимді микро коммутаторды басу арқылы өзгертуге болады.

Бірінші режимде ол тек уақытты көрсетеді. Егер индикатор шамы секундына 1 рет жыпылықтаса, дабыл өшірулі. Егер секундына 2 рет болса, дабыл қосылады. Сыйымдылық сенсорын басу арқылы дабылды бірінші режимде 10 минутқа кейінге қалдыруға болады.

Екінші режимде ол күнді көрсетеді. Сыйымдылық сенсорын басу ештеңе жасамайды.

Үшінші режимде таймерді орнатуға болады. Сыйымдылық сенсорын басу таймерді қосады және сіз индикатор шамы жыпылықтай бастағанын көресіз. Сыйымдылық сенсоры таймер уақытын орнату үшін де қолданылады. Таймер диапазоны 1 минуттан 59 минутқа дейін.

Төртінші режимде сыйымдылық сенсорының көмегімен оятқыш сағатты орнатуға болады

Бесінші режимде сыйымдылық сенсорының көмегімен дабыл минутын орнатуға болады.

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

Жетінші режим - зарядтау кезінде сыйымдылық сенсоры істен шыққан жағдайда ештеңе жасамау режимі.

О, дабылды өшіру үшін микро қосқышты басыңыз. (ДАБЫЛ ҚОСУЛЫҒЫНА ҚОСЫЛҒАН СОҢҒЫ ЖАҢАРТУ)

Ал, сағатты оқу қалай? Бұл оңай! Екілік сағатты оқу - Wikihow Сізге бастапқыда біртүрлі болып көрінуі мүмкін, бірақ сіз оған үйренесіз!

13 -қадам: Қорытынды

Қорытынды
Қорытынды
Қорытынды
Қорытынды

Мен бұл жобаны не үшін бастадым. Бастапқыда менде ескі цифрлық сағат болғандықтан, мен оны оятқышқа айналдырғым келеді. Өкінішке орай, ескі сағат сынған болып шықты. Мен неге Arduino көмегімен біреуін құрмасқа болатынмын? Біраз Google іздеу арқылы мен бұл екілік сағаттық жобаны Cello62 нұсқауы бойынша RTC жоқ деп таптым. Дегенмен, менде оятқыш функциясы жоқ, сондықтан мен кодты алып, оны өзім өзгертемін. Ал жоба дүниеге келді. Сонымен қатар, мен жақында нұсқаулық бойынша өтіп жатқан сағат байқауын көрдім, бұл маған одан да мотивация берді. Қалай болғанда да, бұл менің Arduino қолданатын алғашқы жобам, сондықтан көптеген жақсартулар болуы мүмкін.

Болашақ жетілдіру:

1) RTC қолданыңыз

2) Сигналды немесе уақытты немесе таймерді сымсыз орнатыңыз!

3) Мен қандай ерекшелікті ойлаймын

14 -қадам: Жаңарту: Бір аптадан кейін

Жаңарту: бір аптадан кейін
Жаңарту: бір аптадан кейін
Жаңарту: бір аптадан кейін
Жаңарту: бір аптадан кейін
Жаңарту: бір аптадан кейін
Жаңарту: бір аптадан кейін

Айқын проблемадан басқа - уақыттың ауытқуы, келесі айтарым - энергия тұтыну. Біріншіден, мен кернеуді 9в дейін арттырамын, содан кейін оны Arduino желілік реттегіші төмендетеді. Сызықтық реттегіш өте тиімсіз. Сағат тек бір күнге созылады. Яғни, мен оны күн сайын қайта зарядтауым керек. Бұл бүкіл жүйенің тиімділігі шамамен 50% екенін түсінгенге дейін бұл ең үлкен мәміле емес. Менің аккумуляторым 2000 мАч екенін ескере отырып, мен күн сайын кететін қуатты есептей алар едім.

Қуат жоғалды = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh тәулігіне

Бұл жылына 1,486 кВт / сағ! Мұны 283 г суды қайнатуға қолдануға болады (25 С -тан 100 С -қа дейін)? Бірақ бәрібір мен сағаттың тиімділігін арттырамын. Мұның жолы - сызықтық реттегішті мүлде қолданбау. Бұл күшейткіш түрлендіргішті 5V шығуына тікелей Arduino -дегі 5В істікшесіне реттеу керек дегенді білдіреді. Әрі қарай, одан әрі кететін қуатты азайту үшін, мен борттағы екі светодиодты (pin13 және қуат) алып тастауым керек, себебі олар күніне 0,95 Вт сағатты жоғалтады. Өкінішке орай, мен SMD дәнекерлеуді мүлдем білмеймін, сондықтан мұны істеудің жалғыз жолы - тақтадағы рельсті кесу. Осыдан кейін, мен дыбыстық сигналдағы эмитент резисторы мен төсек шамын алып тастауым керек (жарық диодты жолақ 5В жұмыс істемейді). Бірақ бұл таңғажайып қасиеттен бас тарту керек дегенді білдіре ме? Жоқ! Мұнда сізде екі таңдау бар: қалыпты 5мм диодты қолданыңыз немесе 5В жарықдиодты жолақты қолданыңыз. Бірақ мен өткен аптада бұл жобаны орындаудан шаршадым, сондықтан мен бұл мүмкіндіктен бас тартуға шешім қабылдадым. Дегенмен, мен коммутаторды энергияны үнемдеу үшін сағат тақтасын қосуға немесе өшіруге арналған жарық функциясы үшін қолдандым, бірақ мен оны өшіргенде жарық диоды жыпылықтайды. Қате функцияға айналады ма? Мен білмеймін (білетіндер төменде айтыңыздаршы).

Модификация аяқталғаннан кейін сағат қазір 2 күннен асады!

Келесі кезекте менде сағатқа қатысты маңызды мәселе жоқ. Зарядтау кезінде сыйымдылық сенсоры есінен танып қалады, сондықтан мен ештеңе жасамайтын басқа режимді қосамын.

Уақыттың ауытқуына келетін болсақ, оны қалпына келтіру үшін күнделікті компьютерге қосылу өте ыңғайсыз болғандықтан, мен басқа режимді қостым, ол минутты 30 мен секундты 0 -ге қояды. Бұл оны кез келген сағаттың жартысында қалпына келтіруге болатынын білдіреді!

Ұсынылған: