Оглавление:

Двоичный будильник DIY Arduino: 14 шагов (с изображениями)
Двоичный будильник DIY Arduino: 14 шагов (с изображениями)

Видео: Двоичный будильник DIY Arduino: 14 шагов (с изображениями)

Видео: Двоичный будильник DIY Arduino: 14 шагов (с изображениями)
Видео: Открытые уроки по Arduino. Урок 7: работаем с графикой и пишем собственные функции 2024, Ноябрь
Anonim
Бинарный будильник DIY Arduino
Бинарный будильник DIY Arduino
Бинарный будильник DIY Arduino
Бинарный будильник DIY Arduino
Бинарный будильник DIY Arduino
Бинарный будильник DIY Arduino

Это снова классические двоичные часы! Но на этот раз с еще большей дополнительной функцией! В этом руководстве я покажу вам, как создать двоичный будильник с 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 и ползунковый переключатель (опционально)

Шаг 1: Подключите схему

Подключите схему!
Подключите схему!

Я разделю этот шаг на:

1) Зуммерная часть

2) Светодиодная панель

3) Переключатель (кнопка)

4) светодиодная лента

5) Емкостной датчик

6) Источник питания

7) Подключите их все к Arduino

В большинстве случаев это просто шаг по схеме. Так что ознакомьтесь со схемой выше или даже загрузите и распечатайте ее!

Шаг 2: Подготовка части зуммера

Подготовка части зуммера
Подготовка части зуммера
Подготовка части зуммера
Подготовка части зуммера
Подготовка части зуммера
Подготовка части зуммера

Если вы раньше использовали зуммер с Arduino, вы знаете, что если мы подключим его напрямую к Arduino, он будет недостаточно громким. Итак, нам нужен усилитель. Для создания усилителя нам понадобится транзистор NPN (в основном любой NPN будет работать, я использовал S9013, потому что получил его из старого проекта) и некоторый резистор для ограничения тока. Для начала определите коллектор, эмиттер и базу транзистора. Для этого подойдет небольшой поиск в Google. Затем припаяйте коллектор транзистора к отрицательной клемме зуммера. К положительному выводу зуммера мы просто припаиваем к нему кусок провода, чтобы потом припаять его к нашей Arduino. После этого припаяйте резистор 500R (или резистор любого аналогичного номинала) к базе транзистора и от резистора припаяйте еще один кусок провода для использования в будущем. Наконец, припаяйте два резистора 10R последовательно к эмиттеру транзистора и подключите другой провод от резисторов.

Действительно, обратитесь к схеме.

p / s: Я до сих пор не знаю, как выбрать резистор для транзистора на момент написания этой статьи. Используемое мной значение подобрано опытным путем.

Шаг 3: Подготовка светодиодной панели

Подготовка светодиодной панели
Подготовка светодиодной панели
Подготовка светодиодной панели
Подготовка светодиодной панели
Подготовка светодиодной панели
Подготовка светодиодной панели

Вставьте светодиоды и резистор в макетную плату соответствующим образом и припаяйте. Вот и все. Следуйте схеме. Если вас интересует используемый мной интервал, по 3 отверстия для каждого столбца и по два отверстия для каждого ряда (см. Рисунок). А светодиодный индикатор? Я воткнул случайно.

Припаяв светодиоды и резистор к плате, соедините все положительные выводы светодиодов вместе. Затем припаивайте провода один за другим к каждому резистору на отрицательных выводах светодиодов, чтобы мы могли позже припаять их к Arduino.

ПРИМЕЧАНИЕ. На этом шаге вы можете запутаться. Помните, что вместо того, чтобы соединять всю землю вместе, мы соединяем все положительные клеммы вместе, а отрицательные клеммы с отдельным контактом на Arduino. Таким образом, мы используем вывод Arduino GPIO в качестве заземления, а не Vcc. В случае, если вы случайно подключите его обратно, не волнуйтесь. Вы можете изменить все HIGH на LOW и LOW на HIGH в функции ledcontrol.

Шаг 4: Подготовка переключателя (фактически кнопка)

Подготовка переключателя (кнопка на самом деле)
Подготовка переключателя (кнопка на самом деле)
Подготовка переключателя (кнопка на самом деле)
Подготовка переключателя (кнопка на самом деле)
Подготовка переключателя (кнопка на самом деле)
Подготовка переключателя (кнопка на самом деле)

Для переключателя (я назову его переключателем, потому что я использовал микропереключатель, но вы знаете, что это кнопочный) нам понадобится понижающий резистор 4 кОм и, конечно же, сам переключатель. Ах, не забудьте подготовить провода. Для начала припаяйте резистор и кусок провода к общей земле (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 - текущий час

Для установки минут: min, XX - xx - текущая минута

Для установки секунды: s, XX

Для установки даты: d, XX

Чтобы установить месяц: пн, XX

Когда приведенный выше комментарий будет выполнен, он должен вернуть вам только что установленное значение. (Например, когда вы устанавливаете час с h, 15, он должен вернуть Hour: 15 в последовательном мониторе.

Что касается емкостного датчика, вам может потребоваться откалибровать его, прежде чем он начнет работать. Для этого дважды нажмите микровыключатель и посмотрите на монитор последовательного порта. Он должен вывести несколько чисел. Теперь положите палец на датчик емкости и обратите внимание на диапазон числа. Затем измените переменную captrigger. Допустим, при нажатии вы получаете 20-30, а затем установите для каптригера значение 20.

В скетче используется библиотека ADCTouch, убедитесь, что вы ее установили.

Шаг 11: Корректирующий механизм

Период времени для корректирующего механизма в моем коде установлен на тот, который является точным для меня. Если время по-прежнему неточное, необходимо изменить значение переменной corrdur.

Corrdur теперь по умолчанию равен 0 в последнем обновлении.

Значение corrdur означает, сколько миллисекунд нужно, чтобы замедлить одну секунду.

Чтобы узнать значение corrdur, используйте формулу:

2000 / (г-х) / х)

где 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: Обновление: через неделю использования

Обновление: через неделю использования
Обновление: через неделю использования
Обновление: через неделю использования
Обновление: через неделю использования
Обновление: через неделю использования
Обновление: через неделю использования

Помимо очевидной проблемы - дрейфа времени, я бы сказал, что следующая проблема - это энергопотребление. Сначала я увеличиваю напряжение до 9 В, которое затем будет понижено линейным регулятором в Arduino. Линейный регулятор очень неэффективен. Часы работают только ОДИН ДЕНЬ. Это значит, что мне нужно заряжать его каждый день. Это не самое главное, пока вы не поймете, что эффективность всей системы составляет лишь около 50%. Учитывая, что у меня батарея 2000 мАч, я мог бы подсчитать расход энергии каждый день.

Потраченная мощность = (7,4 Вт · ч * 10%) + (7,4 Вт · ч * 90% * 50%) = 4,07 Вт · ч в день

Это 1,486 кВт / ч в год! Что можно использовать для кипячения 283 г воды (от 25 C до 100 C)? Но в любом случае я собираюсь повысить эффективность часов. Способ сделать это - вообще не использовать линейный регулятор. Это означает, что мы должны настроить повышающий преобразователь для вывода 5 В непосредственно на вывод 5 В на Arduino. Затем, чтобы минимизировать потери мощности еще больше, мне нужно удалить два встроенных светодиода (контакт 13 и питание), так как они будут тратить 0,95 Втч в день. К сожалению, я совершенно не разбираюсь в пайке SMD, поэтому единственный способ сделать это - разрезать направляющую на плате. После этого снимаю резистор эмиттера зуммера и прикроватной лампы (светодиодная лента не работает при 5В). Но означает ли это, что вам нужно отказаться от этой удивительной функции? Нет! У вас есть два выбора: использовать обычный светодиодный диод 5 мм или использовать светодиодную ленту 5 В. Но что касается меня, я уже чувствовал себя усталым, занимаясь этим проектом всю последнюю неделю, поэтому решил отказаться от этой функции. Тем не менее, я изначально использовал переключатель для функции освещения для включения или выключения панели часов для дальнейшей экономии энергии, но в конечном итоге светодиод мигает, когда я его выключаю. Ошибка стала функцией? Я не знаю (кто-нибудь знает, расскажите, пожалуйста, ниже).

По окончании модификации часов теперь хватает на 2 дня!

Далее у меня менее серьезная проблема с часами. Во время зарядки датчик емкости сойдет с ума, поэтому я добавляю еще один режим, который совершенно ничего не делает.

Что касается дрейфа времени, так как очень неудобно подключаться к компьютеру каждый день для его сброса, я добавил еще один режим, который установит минуты на 30, а секунды на 0. Это означает, что вы можете сбросить его на полпоследнего в любой час!

Рекомендуемые: