Мазмуну:

DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)
DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)

Video: DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)

Video: DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)
Video: Octopus Max EZ v1.0 - EZ5160 2024, Ноябрь
Anonim
DIY Arduino бинардык ойготкуч саат
DIY Arduino бинардык ойготкуч саат
DIY Arduino бинардык ойготкуч саат
DIY Arduino бинардык ойготкуч саат
DIY Arduino бинардык ойготкуч саат
DIY Arduino бинардык ойготкуч саат

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

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

Жабдуулар

5мм LED (каалаган түстө, мен индикатор катары бир RGB светодиод менен 13 ак диодду колдондум) --- 14 шт

Arduino Nano (башкалар иштеши мүмкүн) --- 1 шт

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

Алюминий фольгасынын кичинекей бөлүгү

Монтаж тактасы (корпус үчүн, бирок өзүңүздүн дизайныңызды тартынбаңыз)

Ак кагаздын бир бөлүгү (же башка түстө)

Кээ бир пластикалык пленка (китептин мукабасы катары колдонулат)

Зымдардын тобу

Зумер-1шт

NPN транзистору-1pc

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

Долбоор үчүн энергия менен камсыздоо (мен ли-батареяны колдондум)

5050 LED тилкеси жана слайд которгуч (милдеттүү эмес)

1 -кадам: Районду туташтырыңыз

Районду туташтырыңыз!
Районду туташтырыңыз!

Мен бул кадамды бөлөм:

1) Зумердин бөлүгү

2) LED панели

3) которгуч (баскыч)

4) LED тилкеси

5) сыйымдуулук сенсор

6) Электр энергиясы менен камсыздоо

7) Алардын бардыгын Arduino менен туташтырыңыз

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

2 -кадам: Буззер бөлүгүн даярдоо

Буззер бөлүгүн даярдоо
Буззер бөлүгүн даярдоо
Буззер бөлүгүн даярдоо
Буззер бөлүгүн даярдоо
Буззер бөлүгүн даярдоо
Буззер бөлүгүн даярдоо

Эгерде сиз буга чейин Arduino менен ызылдакты колдонгон болсоңуз, анда биз аны Arduino менен түз байланыштырсак, анын үнү катуу чыкпай турганын билесиз. Андыктан бизге күчөткүч керек. Күчөткүчтү куруу үчүн бизге NPN транзистору керек (негизинен ар кандай NPN иштейт, мен S9013ди колдондум, анткени мен аны эски долбоордон алгам) жана токту чектөө үчүн кээ бир резистор. Баштоо үчүн, адегенде транзистордун коллекторун, эмитентин жана базасын аныктаңыз. Маалымат баракчасынын бир аз гуглинги бул үчүн иштейт. Андан кийин, транзистордун коллекторун ызы -чуунун терс терминалына кошуңуз. Позиционердин оң терминалында, биз жөн гана ага зымдын бир бөлүгүн коштук, андыктан аны кийин биздин Arduinoго ширете алабыз. Андан кийин, 500R (же кандайдыр бир окшоштуктагы резистордун) резисторун транзистордун базасына жана резистордон ээрчитип, келечекте колдонуу үчүн дагы бир зымды ширеткиле. Акыр -аягы, эки 10R каршылыгын транзистордун эмитентине катарынан кошуп, резисторлордун башка зымын туташтырыңыз.

Чынында, схемага кайрылыңыз.

p/s: Мен муну жазып жатканда транзистор үчүн резисторду кантип тандоо керек экенин дагы деле билбейм. Мен колдонгон баалуулук эмпирикалык түрдө тандалат.

3 -кадам: LED панелин даярдоо

LED панелин даярдоо
LED панелин даярдоо
LED панелин даярдоо
LED панелин даярдоо
LED панелин даярдоо
LED панелин даярдоо

Светодиоддорду жана резисторду прототипдөөчү тактага ошого жараша сайыңыз. Дал ушул. Схеманы аткарыңыз. Эгерде сиз колдонгон интервалга кызыксаңыз, ар бир мамыча үчүн 3 тешик, жана ар бир катар үчүн эки тешик (сүрөттү караңыз). Жана индикатор LED? Мен аны туш келди сайдым.

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

ЭСКЕРТҮҮ: Сиз бул кадамды түшүнбөй калышыңыз мүмкүн. Эсиңизде болсун, бардык жерди бириктирүүнүн ордуна, биз бардык оң терминалды бирге жана терс терминалды Arduinoдогу жеке пинге туташтырабыз. Ошентип, биз Arduino GPIO пинин Vcc эмес, жер катары колдонобуз. Кокустан аны артка туташтырсаңыз, кабатыр болбоңуз. LED көзөмөлдөө функциясында бардык ЖОГОРУЛАРДЫ ТӨМӨНГӨ жана ТӨМӨНГӨ ЖӨНГӨ өзгөртө аласыз.

4 -кадам: Коммутаторду даярдоо (баскыч иш жүзүндө)

Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутаторду даярдоо (баскыч иш жүзүндө)

Коммутатор үчүн (мен муну коммутатор деп атаймын, анткени мен микро-коммутаторду колдонгом, бирок бул баскыч экенин билесиң), бизге 4к7 тартылуучу резистор жана албетте, которгуч өзү керек. Эх, кээ бир зымдарды даярдоону унутпаңыз. Резисторду жана зымдын бир бөлүгүн микро которгучтун жалпы жерине (COM) ширетүү менен баштаңыз. Андан кийин, зымдын дагы бир бөлүгүн микро-которгучтун кадимкидей ачылган (NO) жерине ээрчиңиз. Акырында, резисторго дагы бир зым туташтырыңыз. Аны ысык клей менен бекемдеңиз.

Билим бурчу: Бизге эмне үчүн ылдый түшүүчү резистор керек?

"Эгерде сиз санариптик I/O төөнөгүчтү бардыгынан ажыратып салсаңыз, анда LED иретсиз ирмелиши мүмкүн. Бул" калкып жүрүүчү "болгондуктан, башкача айтканда, кокусунан ЖОГОРУ же ТӨМӨН кайтып келет. Ошол себептен сизге тартуу керек же чынжырдагы ылдый түшүүчү резистор. " - Булак: Arduino веб-сайты

5 -кадам: LED тилкесин даярдоо

LED тилкесин даярдоо
LED тилкесин даярдоо
LED тилкесин даярдоо
LED тилкесин даярдоо

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

6 -кадам: сыйымдуулук сенсорун даярдоо

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

Макул сүрөттү караңыз. Негизинен, биз зымды кичинекей алюминий фольгага (анткени алюминий фольгага ширетүү мүмкүн эмес) бекитебиз, андан кийин аны кичинекей монтаж тактасына скотч менен жабыштырабыз. Эскерте кетсек, алюминий фольганы толугу менен скотч менен жабыштырбаңыз. Анын бир бөлүгүн ачык байланышта калтырыңыз.

7 -кадам: Электр энергиясын даярдоо

Электр энергиясын даярдоо
Электр энергиясын даярдоо
Электр энергиясын даярдоо
Электр энергиясын даярдоо
Электр энергиясын даярдоо
Электр энергиясын даярдоо

Мен Li-on батареясын электр менен камсыздоо катары колдонгонум үчүн, кубаттоо жана коргоо үчүн TP4056 модулу жана чыңалууну 9vга айлантуу үчүн күчөткүч алмаштыргыч керек. Эгерде сиз 9В дубал адаптерин колдонууну чечсеңиз, анда сизге DC уячасы керек болушу мүмкүн, же аны түз эле туташтырыңыз. Эске алыңыз, күчөткүч үчүн резистордун мааниси 9В үчүн иштелип чыккан жана эгер сиз башка чыңалууну колдонууну кааласаңыз, анда резисторду алмаштырышыңыз керек болот.

8 -кадам: Аларды Arduino менен туташтыруу

Аларды Arduino менен туташтыруу
Аларды Arduino менен туташтыруу
Аларды Arduino менен туташтыруу
Аларды Arduino менен туташтыруу
Аларды Arduino менен туташтыруу
Аларды Arduino менен туташтыруу

Схеманы аткарыңыз! Схеманы аткарыңыз! Схеманы аткарыңыз!

Туура эмес пин туташтырбаңыз, болбосо нерселер кызыктай болуп калат.

9 -кадам: Каптоо

Корпус
Корпус
Корпус
Корпус
Корпус
Корпус
Корпус
Корпус

Менин дизайнымдын өлчөмү 6.5см*6.5см*8см, андыктан бир аз көлөмдүү. Бул LED дисплейинин алдыңкы терезесинен жана керебеттин чырагынын үстүңкү терезесинен турат. Менин дизайным үчүн сүрөттөргө кайрылыңыз.

10 -кадам: Программалоо убактысы

Image
Image
Программалоо убактысы!
Программалоо убактысы!

Төмөндө менин эскизимди жүктөп алып, Arduinoго жүктөңүз. Эгер муну кантип жасоону билбесеңиз, бул проекти жасоо үчүн убара болбоңуз! Жок, тамаша, бул жерде жакшы окуу куралы: эскизди arduinoго жүктөңүз

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

Саатты коюу үчүн: h, XX - мында xx - учурдагы саат

Мүнөттү коюу үчүн: мин, XX - xx - учурдагы мүнөт

Экинчисин коюу үчүн: s, XX

Күндү белгилөө үчүн: д, XX

Айды коюу үчүн: пн, XX

Жогорудагы комментарий аткарылганда, ал сизге жөн эле койгон маанини кайтарышы керек. (Мисалы, h, 15 менен саатты койгондо, ал сериялык монитордо Hour: 15 кайтарышы керек.

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

Эскиз ADCTouch китепканасын колдонот, аны орнотконуңузду текшериңиз.

11 -кадам: Оңдоо механизми

Менин коддогу түзөтүүчү механизмдин убактысы мен үчүн так убакытка коюлган. Эгерде убакыт дагы эле так болбосо, "коррдур" өзгөрмөсүнүн маанисин өзгөртүү керек

Коррдур азыр акыркы жаңыртууда 0 үчүн демейки.

Коррдурдун мааниси бир секундада жай басуу үчүн канча миллисекунд кетерин билдирет

Коррдун маанисин билүү үчүн төмөнкү формуланы колдонуңуз:

2000/(y-x)/x)

мында х = өткөн убакыттын иш жүзүндөгү узактыгы жана у = сааттын убактысынын узактыгы, экинчисинде

X жана y маанисин табуу үчүн кичине эксперимент жасоо керек.

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

х = чыныгы акыркы убакыт-алгачкы убакыт жана у = саат акыркы убакыт-алгачкы убакыт

Андан кийин коддогу коррдун маанисин өзгөртүп, 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 издөө менен, мен бул экилик сааттын долбоорун RTC жок Cello62 тарабынан көрсөтмө боюнча таптым. Бирок, анда мен каалагандай будильниктин функциясы жок, ошондуктан мен кодду алып, өзүм өзгөртөм. Жана жоба туады. Мындан тышкары, мен жакында мага көрсөтмө берген саат сынагын көрдүм, бул мага ого бетер мотивация берди. Кандай болбосун, бул дагы эле Arduino колдонгон биринчи долбоорум, андыктан мүмкүн болгон жакшыртуулар.

Келечектеги жакшыртуу:

1) RTC колдонуу

2) Ойготкучту же убакытты же таймерди зымсыз орнотуңуз!

3) Мен ойлогон кандай өзгөчөлүк

14 -кадам: Жаңыртуу: Бир жума колдонуудан кийин

Жаңыртуу: Бир жума колдонулгандан кийин
Жаңыртуу: Бир жума колдонулгандан кийин
Жаңыртуу: Бир жума колдонулгандан кийин
Жаңыртуу: Бир жума колдонулгандан кийин
Жаңыртуу: Бир жума колдонулгандан кийин
Жаңыртуу: Бир жума колдонулгандан кийин

Ачык көйгөйдөн тышкары - убакыттын өтүшү, мен айткым келгени - электр энергиясын керектөө. Биринчиден, мен чыңалууну 9v чейин көтөрөм, андан кийин Arduinoдогу сызыктуу жөнгө салуучу тарабынан басылат. Сызыктуу жөнгө салуучу абдан эффективдүү эмес. Саат БИР КҮНГӨ гана созулат. Демек, мен аны күн сайын толуктап туруум керек. Бул бүт система болгону 50% эффективдүү экенин түшүнмөйүнчө, бул эң чоң келишим эмес. Батарейкам 2000 мАч экенин эске алып, мен күн сайын текке кеткен энергияны эсептей алмакмын.

Күч сарпталган = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh күнүнө

Бул жылына 1.486 кВт / саат! Бул 283г сууну кайнатуу үчүн колдонулушу мүмкүн (25 С дан 100 С чейин)? Бирок, баары бир, сааттын эффективдүүлүгүн жогорулатам. Мунун жолу - сызыктуу жөндөгүчтү такыр колдонбоо. Бул демек, биз күчөткүчтү 5V түз Arduinoдогу 5V пинге чыгаруу үчүн тууралашыбыз керек. Андан кийин, күчтү мындан ары текке кетирүү үчүн, мен экиден LEDди (pin13 жана күч) алып салуум керек, анткени алар күнүнө 0.95Wh текке кетет. Тилекке каршы, мен SMD ширетүүдө таптакыр жокмун, андыктан муну жасоонун бирден -бир жолу - тактайдагы темир жолду кесүү. Андан кийин, мен сигнализациядагы эмиттердин резисторун жана керебеттин жанындагы чыракты алып салышым керек (LED тилкеси 5Вда иштебейт). Бирок бул укмуштуудай өзгөчөлүктөн баш тартуу керек дегенди билдиреби? Жок! Бул жерде сизде эки тандоо бар: кадимки 5мм диодду колдонуңуз же 5V диоддук тилкени колдонуңуз. Бирок мен үчүн, мен өткөн жумада бул долбоорду аткаруудан чарчадым, ошондуктан бул мүмкүнчүлүктөн баш тартууну чечтим. Бирок, мен күйгүчтү энергияны үнөмдөө үчүн саат панелин күйгүзүү же өчүрүү үчүн жарык функциясы үчүн колдонгом, бирок мен өчүргөндө LED жарк этип бүтөт. Мүчүлүштүктөр өзгөчөлүккө айландыбы? Билбейм (билгендер болсо төмөндө айтып койсоңуздар).

Өзгөртүүнүн аягында, саат азыр 2 күндөн ашык убакытка созулат!

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

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

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