Мазмуну:
- Жабдуулар
- 1 -кадам: Районду туташтырыңыз
- 2 -кадам: Буззер бөлүгүн даярдоо
- 3 -кадам: LED панелин даярдоо
- 4 -кадам: Коммутаторду даярдоо (баскыч иш жүзүндө)
- 5 -кадам: LED тилкесин даярдоо
- 6 -кадам: сыйымдуулук сенсорун даярдоо
- 7 -кадам: Электр энергиясын даярдоо
- 8 -кадам: Аларды Arduino менен туташтыруу
- 9 -кадам: Каптоо
- 10 -кадам: Программалоо убактысы
- 11 -кадам: Оңдоо механизми
- 12 -кадам: Бардык функцияларды кантип колдонуу керек
- 13 -кадам: Жыйынтык
- 14 -кадам: Жаңыртуу: Бир жума колдонуудан кийин
Video: DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бул дагы классикалык бинардык саат! Бирок бул жолу дагы кошумча функция менен! Бул көрсөтмөдө мен сизге 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 панелин даярдоо
Светодиоддорду жана резисторду прототипдөөчү тактага ошого жараша сайыңыз. Дал ушул. Схеманы аткарыңыз. Эгерде сиз колдонгон интервалга кызыксаңыз, ар бир мамыча үчүн 3 тешик, жана ар бир катар үчүн эки тешик (сүрөттү караңыз). Жана индикатор LED? Мен аны туш келди сайдым.
Жарык диоддорун жана резисторду тактага кошкондон кийин, диоддордун бардык оң терминалдарын бириктиргиле. Андан кийин, диоддордун терс терминалдарындагы резисторлордун ар бирине бир -бирден ширетүү үчүн, биз аларды кийинчерээк Arduinoго ширете алабыз.
ЭСКЕРТҮҮ: Сиз бул кадамды түшүнбөй калышыңыз мүмкүн. Эсиңизде болсун, бардык жерди бириктирүүнүн ордуна, биз бардык оң терминалды бирге жана терс терминалды Arduinoдогу жеке пинге туташтырабыз. Ошентип, биз Arduino GPIO пинин Vcc эмес, жер катары колдонобуз. Кокустан аны артка туташтырсаңыз, кабатыр болбоңуз. LED көзөмөлдөө функциясында бардык ЖОГОРУЛАРДЫ ТӨМӨНГӨ жана ТӨМӨНГӨ ЖӨНГӨ өзгөртө аласыз.
4 -кадам: Коммутаторду даярдоо (баскыч иш жүзүндө)
Коммутатор үчүн (мен муну коммутатор деп атаймын, анткени мен микро-коммутаторду колдонгом, бирок бул баскыч экенин билесиң), бизге 4к7 тартылуучу резистор жана албетте, которгуч өзү керек. Эх, кээ бир зымдарды даярдоону унутпаңыз. Резисторду жана зымдын бир бөлүгүн микро которгучтун жалпы жерине (COM) ширетүү менен баштаңыз. Андан кийин, зымдын дагы бир бөлүгүн микро-которгучтун кадимкидей ачылган (NO) жерине ээрчиңиз. Акырында, резисторго дагы бир зым туташтырыңыз. Аны ысык клей менен бекемдеңиз.
Билим бурчу: Бизге эмне үчүн ылдый түшүүчү резистор керек?
"Эгерде сиз санариптик I/O төөнөгүчтү бардыгынан ажыратып салсаңыз, анда LED иретсиз ирмелиши мүмкүн. Бул" калкып жүрүүчү "болгондуктан, башкача айтканда, кокусунан ЖОГОРУ же ТӨМӨН кайтып келет. Ошол себептен сизге тартуу керек же чынжырдагы ылдый түшүүчү резистор. " - Булак: Arduino веб-сайты
5 -кадам: LED тилкесин даярдоо
LED тилкеси керебеттин капталындагы лампа үчүн, ал милдеттүү эмес. Жөн гана LED тилкесин туташтырыңыз жана слайд которгучун сериялуу түрдө кошуңуз, өзгөчө эч нерсе жок.
6 -кадам: сыйымдуулук сенсорун даярдоо
Макул сүрөттү караңыз. Негизинен, биз зымды кичинекей алюминий фольгага (анткени алюминий фольгага ширетүү мүмкүн эмес) бекитебиз, андан кийин аны кичинекей монтаж тактасына скотч менен жабыштырабыз. Эскерте кетсек, алюминий фольганы толугу менен скотч менен жабыштырбаңыз. Анын бир бөлүгүн ачык байланышта калтырыңыз.
7 -кадам: Электр энергиясын даярдоо
Мен Li-on батареясын электр менен камсыздоо катары колдонгонум үчүн, кубаттоо жана коргоо үчүн TP4056 модулу жана чыңалууну 9vга айлантуу үчүн күчөткүч алмаштыргыч керек. Эгерде сиз 9В дубал адаптерин колдонууну чечсеңиз, анда сизге DC уячасы керек болушу мүмкүн, же аны түз эле туташтырыңыз. Эске алыңыз, күчөткүч үчүн резистордун мааниси 9В үчүн иштелип чыккан жана эгер сиз башка чыңалууну колдонууну кааласаңыз, анда резисторду алмаштырышыңыз керек болот.
8 -кадам: Аларды Arduino менен туташтыруу
Схеманы аткарыңыз! Схеманы аткарыңыз! Схеманы аткарыңыз!
Туура эмес пин туташтырбаңыз, болбосо нерселер кызыктай болуп калат.
9 -кадам: Каптоо
Менин дизайнымдын өлчөмү 6.5см*6.5см*8см, андыктан бир аз көлөмдүү. Бул LED дисплейинин алдыңкы терезесинен жана керебеттин чырагынын үстүңкү терезесинен турат. Менин дизайным үчүн сүрөттөргө кайрылыңыз.
10 -кадам: Программалоо убактысы
Төмөндө менин эскизимди жүктөп алып, 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 -кадам: Бардык функцияларды кантип колдонуу керек
Сиз микро-которгучту басуу менен режимди өзгөртө аласыз.
Биринчи режимде ал жөн гана убакытты көрсөтөт. Эгерде индикатор жарыгы секундасына 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 кылып коёт. Бул сиз каалаган убакта жарым саатта баштапкы абалга келтире аласыз дегенди билдирет!
Сунушталууда:
Микро бинардык саат: 10 кадам (сүрөттөр менен)
Микро бинардык саат: мурда бинардык чектелген дисплей аянтын колдонот, инструктивдүү (бинардык DVM) түзүп, экилик саатты түзүү үчүн ондуктан экиликке которуунун негизги код модулун түзгөн кичинекей гана кадам
Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен)
Smart Alarm Clock: Raspberry Pi менен жасалган акылдуу ойготкуч: Сиз качандыр бир убакта акылдуу саатты кааладыңыз беле? Андай болсо, бул сиз үчүн чечим! Мен Smart Alarm Clock жасадым, бул веб -сайтка ылайык ойготкуч убактысын өзгөртө турган саат. Ойготкуч өчкөндө, үн чыгат (зумбул) жана 2 жарык күйөт
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): 10 кадам (Сүрөттөр менен)
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): Мурунку долбоорумда мен Wi-Fi менен акылдуу ванна таразасын иштеп чыккам. Ал колдонуучунун салмагын өлчөй алат, жергиликтүү түрдө көрсөтөт жана булутка жөнөтөт. Бул тууралуу кененирээк маалыматты төмөнкү шилтемеден ала аласыз: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Arduino негизделген бинардык ойготкуч саат: 13 кадам (сүрөттөр менен)
Arduino негизделген экилик ойготкуч саат: Эй, бүгүн мен сизге эң акыркы долбоорлорумдун бирин, экилик ойготкуч саатымды кантип курууну көрсөткүм келет. Интернетте бир нече ар кандай бинардык сааттар бар, бирок бул чындыгында түстүү даректүү LED диодунан жасалган биринчи саат болушу мүмкүн
Неопикселдерди колдонуу менен бинардык саат: 6 кадам (сүрөттөр менен)
Неопикселдерди колдонгон бинардык саат: Саламатсыздарбы, мен LED менен байланышкан бардык нерселерди жакшы көрөм, ошондой эле аларды ар кандай кызыктуу жолдор менен колдонгонду жакшы көрөм Ооба, бинардык саат бул жерде бир нече жолу жасалганын билем жана алардын ар бири кантип Өз саатыңызды түзүңүз