Съдържание:

Двоичен алармен часовник Arduino: 14 стъпки (със снимки)
Двоичен алармен часовник Arduino: 14 стъпки (със снимки)

Видео: Двоичен алармен часовник Arduino: 14 стъпки (със снимки)

Видео: Двоичен алармен часовник Arduino: 14 стъпки (със снимки)
Видео: LDmicro 14: I2C LCD & DS3231 Real-Time Clock (Microcontroller PLC Ladder Programming with LDmicro) 2024, Юли
Anonim
Двоичен будилник Arduino DIY
Двоичен будилник Arduino DIY
Двоичен будилник Arduino DIY
Двоичен будилник Arduino DIY
Двоичен будилник Arduino DIY
Двоичен будилник Arduino DIY

Това отново е класическият двоичен часовник! Но този път с още повече допълнителни функции! В тази инструкция ще ви покажа как да изградите двоичен будилник с Arduino, който може да ви покаже не само час, но и дата, месец, дори с таймер и алармени функции, които могат да се използват и като нощна лампа! Без повече замисляне да започнем!

Забележка: Този проект не използва RTC модул, така че точността зависи от платката, която сте използвали. Включих коригиращ механизъм, който ще коригира отклонението на времето за определен период от време, но ще трябва да експериментирате, за да намерите правилната стойност за периода от време (Повече за това по -долу), и дори с коригиращ механизъм той все още ще се отклонява за дълго време (в сравнение с без такъв). Ако някой се интересува, не се колебайте да внедрите използването на RTC модул в този проект

Консумативи

5 мм светодиод (от всеки цвят, използвах 13 бели светодиода с един RGB светодиод като индикатор) --- 14 бр

Arduino Nano (други могат да работят) --- 1 бр

Микропревключвател --- 1 бр

Малко парче алуминиево фолио

Монтажна дъска (за заграждение, но не се колебайте да проектирате своя собствена)

Парче бяла хартия (или друг цвят)

Някакъв пластмасов филм (този, използван като корица на книга)

Куп жици

Звуков сигнал --- 1бр

NPN транзистор --- 1бр

Резистори 6k8 --- 14 бр, 500R --- 1 бр, 20R (10Rx2) --- 1 бр, 4k7 --- 1бр

Захранване за проекта (използвах li-on батерия)

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. В случай, че случайно го свържете назад, не се притеснявайте. Можете да промените всички HIGH до LOW и LOW до HIGH във функцията ledcontrol.

Стъпка 4: Подготовка на превключвателя (бутон всъщност)

Подготовка на превключвателя (бутон всъщност)
Подготовка на превключвателя (бутон всъщност)
Подготовка на превключвателя (бутон всъщност)
Подготовка на превключвателя (бутон всъщност)
Подготовка на превключвателя (бутон всъщност)
Подготовка на превключвателя (бутон всъщност)

За превключвателя (ще го нарека превключвател, защото използвах микро-превключвател, но знаете, че това е бутон), се нуждаем от 4k7 падащ резистор и разбира се, самия превключвател. А, не забравяйте да подготвите някои проводници. Започнете, като запоите резистора и парче тел към общата маса (COM) на микропревключвателя. След това запояйте друго парче тел към нормално отворения (NO) на микропревключвателя. Накрая, прикрепете друг проводник към резистора. Закрепете го с горещо лепило.

Ъгъл на знанието: Защо се нуждаем от падащ резистор?

"Ако изключите цифровия входно -изходен щифт от всичко, светодиодът може да мига неравномерно. Това е така, защото входът е" плаващ " - тоест, той ще се върне на случаен принцип или ВИСОК, или НИСКИ. Ето защо имате нужда от издърпване или издърпващ резистор във веригата. " - Източник: уебсайт Arduino

Стъпка 5: Подготовка на LED лента

Подготовка на LED лента
Подготовка на LED лента
Подготовка на LED лента
Подготовка на LED лента

LED лентата е за странична лампа на леглото, която не е задължителна. Просто свържете последователно LED лентата и плъзгащия превключвател, нищо особено.

Стъпка 6: Подготовка на сензора за капацитет

Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет
Подготовка на сензора за капацитет

Добре вижте снимката. По принцип просто ще прикрепим проводника към малко парче алуминиево фолио (тъй като алуминиевото фолио не може да бъде запоено), след което го залепете върху малко парче монтажна дъска. Любезно напомняне, внимавайте да не залепите напълно алуминиевото фолио. Оставете част от него изложена за директен контакт.

Стъпка 7: Подготовка на захранването

Подготовка на захранването
Подготовка на захранването
Подготовка на захранването
Подготовка на захранването
Подготовка на захранването
Подготовка на захранването

Тъй като използвах li-on батерия като захранване, имам нужда от модул TP4056 за зареждане и защита и усилващ преобразувател за преобразуване на напрежението на 9v. Ако сте решили да използвате 9V адаптер за стена, тогава може да се нуждаете от DC жак или просто да го свържете директно. Обърнете внимание, че стойността на резистора за усилвателя е проектирана за 9V и ако искате да използвате друго напрежение, може да се наложи да смените резистора.

Стъпка 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

За да зададете дата: d, XX

За да зададете месец: пн, XX

Когато горният коментар се изпълни, той трябва да ви върне току -що зададената стойност. (Например, когато зададете час с h, 15, той трябва да върне Hour: 15 в серийния монитор.

За сензора за капацитет може да се наложи да го калибрирате, преди да работи. За да направите това, натиснете два пъти микро превключвателя и погледнете серийния монитор. Той трябва да изведе куп числа. Сега поставете пръст върху сензора за капацитет и вижте да вземете под внимание обхвата на номера. След това променете променливата "captrigger". Да приемем, че получавате 20-30 при натискане, след това задайте captrigger на 20.

Скицата използва библиотеката ADCTouch, уверете се, че сте я инсталирали.

Стъпка 11: Коригиращ механизъм

Периодът от време за коригиращ механизъм в моя код е зададен на този, който е точен за мен. Ако времето все още не е точно, трябва да промените стойността на променливата "corrdur"

Corrdur сега е по подразбиране 0 в последната актуализация.

Стойността на corrdur означава колко милисекунди са необходими, за да се забави една секунда

За да разберете стойността на corrdur, използвайте формулата:

2000/(y-x)/x)

където x = действителната продължителност на изминалото време и y = продължителността на изминалото време на часовника, и двете в секунда

За да намерите стойността на x и y, трябва да направите малък експеримент.

Задайте часа на часовника на действителното време и запишете първоначалното време (действителното първоначално време и началното време на часовника трябва да са еднакви). След известно време (няколко часа) запишете крайното действително време и крайното време на часовника.

x = действително крайно време-първоначално време и y = часовник крайно време-първоначално време

След това променете стойността на corrdur в кода и го изтеглете отново в Arduino.

След това повторете теста и този път формулата се промени на:

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

Където x и y е същото като преди, докато z е текущата стойност на corrdur.

Качете отново и направете теста отново и отново, докато той е достатъчно точен за вас.

В случай, че часовникът ви все още се ускорява, дори corrdur е настроен на 0 (означава, че няма коригиращ механизъм), трябва да промените второто ++ на второ- в корективния механизъм част от кода (коментирах го), задайте corrdur на 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% ефективна. Като се има предвид, че батерията ми е 2000mAh, бих могъл да изчисля загубената мощност всеки ден.

Изгубена мощност = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh на ден

Това е 1.486kWh годишно! Това може да се използва за сваряване на 283 g вода (от 25 C до 100 C)? Но така или иначе, ще подобря ефективността на часовника. Начинът да направите това е изобщо да не използвате линейния регулатор. Това означава, че трябва да настроим усилвателния преобразувател, за да изведе 5V директно в 5V щифта на Arduino. След това, за да сведем до минимум загубата на енергия още повече, трябва да премахна двата вградени светодиода (pin13 и захранване), тъй като те ще губят 0,95Wh на ден. За съжаление, аз не съм напълно в SMD запояване, така че единственият начин да направя това е да отрежа релсата на дъската. След това трябва да премахна емитерния резистор на зумера и нощната лампа (LED лентата не работи при 5V). Но означава ли това, че трябва да се откажете от тази невероятна функция? Не! Тук имате два избора: Използвайте нормалния 5 мм LED диод или използвайте 5V LED лента. Но за мен вече се чувствах уморен да правя този проект през цялата минала седмица, затова реших да се откажа от тази функция. Въпреки това използвах превключвателя първоначално за светлинната функция за включване или изключване на часовника, за да спестя допълнително енергия, но в крайна сметка светодиодът мига, когато го изключвам. Грешка стана функция? Не знам (някой знае, моля, кажете ми по -долу).

В края на модификацията часовникът продължава повече от 2 дни!

След това имам по -малко сериозен проблем с часовника. По време на зареждане сензорът за капацитет ще полудее, така че добавям друг режим, който не прави абсолютно нищо.

Що се отнася до дрейфа на времето, тъй като е много неудобно да се включвате към компютъра всеки ден, за да го нулирате, добавих друг режим, който ще зададе минута на 30 и секунда на 0. Това означава, че можете да го нулирате на половин всеки час!

Препоръчано: