У пина были электронные часы

В этой статье мы попросили мастера ответить на вопрос: «У пина были электронные часы?», а также дать полезные рекомендации для наших читателей. Что из этого получилось, читайте далее.

Спроектировать и собрать электронные часы не так просто, как может показаться на первый взгляд.

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

Полный сет компонентов проекта. В сет входят:

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

Переверните Quad Display на 180 градусов и вставьте в центральный и правый слоты нижнего ряда.

Поверните четырёхкнопочную клавиатуру на 90 градусов против часовой стрелки и вставьте в правый верхний слот.

Если у вас старый модуль семисегментного индикатора (у него всего три ноги и расположены они слева), схема сборки устройства, скетч и библиотеки будут отличаться. Мы выложили их ниже, в ответах на часто задаваемые вопросы .

Прошейте контроллер скетчем через Arduino IDE.

Хотите собрать другой девайс? Выберите своё будущее устройство из списка проектов на Slot Shield.

Да, модуль можно использовать, но скетч, библиотеки и схема сборки отличаются.

Вставьте QuadDisplay в правый нижний слот

Прошейте контроллер скетчем через Arduino IDE.

Я являлся счастливым обладателем стрелочных часов. Девайс консервативный и приятный взгляду.
Но 2 года как мне мозолили глаза электронные часы))) Еще знакомый в армии мне их притащил, когда я срочку топтал) Помню долго пришлось старшине объяснять что я прячу в подушке автомобильную деталь, а не шпионский прибор)))

Ну вернемся к нашим (моим) электронным часам)
Не так давно достался мне датчик температуры наружного воздуха вместе с фишкой, вот и решил все это дело собрать до кучи)

Побыстрее хотелось все это дело воткнуть что совсем забыл сфотографировать сами часы и датчик) Если кто не видел, вот вам фото с нета)

Далее приступаем к работе)

Засовываем туда руку и нащупываем рычажок, нажав который, достаем часы.

Хотел бы я посмотреть в глаза тому Гансу, который собирал мой автомобиль!
Ну почему! ПОЧЕМУ! Почему у меня все везде ЛОУ?! Может это такое испытание мне жизнь приготовила?( Или наоборот издевается?(
Три провода(((

Имеем такую распиновку:
— 4 пин (масса)
— 9 пин (постоянный плюс)
— 22 пин (питание подсветки)

А для электронных часов нужна такая:
— 4 пин (масса)
— 5 пин (на датчик температуры)
— 8 пин (плюс после включения зажигания)
— 9 пин (постоянный плюс)
— 18 пин (гонг)
— 19 пин (гонг)
— 22 пин (питание подсветки)

Упс… совсем забыл, гонга у меня нету) поэтому мне нужно добавить только 2 провода на 5 и 8 пины)
Для таких целей у меня в гараже валяется обрезанная фишка с приборки, идем в гараж и достаем 2 понравившихся пина и добавляем в фишку часов.

Чтобы разобрать фишку, нужно откусить пластиковый хомут и снять эту зеленую хрень)
Затем надавить на палочку, которая внутри фишки.

Все, добавили нужные провода.

Кстати! В стрелочных часах для подсветки используется одна лампочка (12В 1,2В), а в электронных три! Поэтому не забываем прикупить 2 лампочки) Например вот эти Hella 8GA 007 997-031.

Итак 8й пин тянем к замку зажигания, находим там + при вкл зажигания — паяемся) 5й пин тянем к бамперу, у левой туманки крепится датчик температуры.

Кстати фишка на датчик досталась с отгнившими проводами(

Итак, все собрано до кучи) Включаем зажигание, настраиваем время и дату. Смотрим температуру) +5.5 градусов.

Получив пару плат Arduino, и разные радиодетали для ознакомления с микроконтроллерами автор решил сделать что-то интересное и одновременно полезное. Имея в запасе большое количество светодиодов, пришла идея создать бинарные часы.

Со стороны электроники бинарные часы не являются особо сложными, но автор усложнил задачу и решил не экономить кнопки и светодиоды. Изначально в проекте должно было использоваться 22 светодиода, 6 кнопок, и одна пищалка. Также была идея собирать часы на Arduino Mega из-за большего количество пинов, но спасением оказались сдвиговые регистры 74HC595.

Материалы:
— Arduino Uno
— 2 полноразмерные макетные платы
— Светодиоды красные 7 шт
— Светодиоды зелёные 7 шт
— Светодиоды синие 6 шт
— Светодиоды жёлтые и белые по 2 шт
— Резисторы 220 ом 25 шт
— Пьезопищалка 1 шт
— Тактовые кнопки 6 шт
— Сдвиговые регистры выходные 74HC595 в корпусе DIP-16 3 шт
— Соединительные провода 90 шт
— Модуль часов реального времени на базе RTC-чипа DS1307

Как всё будет работать.
Существует около 10 видов бинарных часов. Одни показывают время в двоично-десятичном (BCD) формате, другие в виде двоичных чисел. Так как автору не особо нравятся BCD-часы, он решил сделать свои чисто двоичными. Некоторым их сложнее читать, но разница в них невелика, потому что переводить числа из двоичных в десятичные несложно. Также обязательным условием создателя часов являлась индикация секунд на часах.

Вдобавок часы имеют 6 кнопок:
Set — отвечает за режим настройки часов/будильника и сохранение параметра в режиме настройки.
Mode — отвечает за переключение между режимами часов, будильника и таймера.
Up — в настройке часов/будильника/таймера, повышает параметр на один. В будильнике и таймере отвечает за активирование и выключение выбранного режима. При срабатывании сигнала — отключит сигнал будильника/таймера.
Down — в настройке часов/будильника/таймера, уменьшит параметр на один. В таймере приостановит его без сброса отсчёта. При срабатывании сигнала будильника — перенесёт сигнал на 5 минут.
24/12 — изменение формата времени.
Dim — отвечает за включение и отключение светодиодов (когда светодиоды отключены остальные кнопки перестают работать).
Схема положения светодиодов:

Подключение компонентов
Все светодиоды автор будет подключать последовательно и с резистором. Резистор припаивается к одному из выводов светодиоды, не имеет значения к какому. Подключение светодиодов будем происходить через сдвиговые регистры, этот чип имеет 16 контактов. Такое количество контактов позволяет использовать большое количество выводов, занимая на Arduino всего 3 пина.

Распиновка сдвигового регистра 74HC595:
Q0-Q7 — это выводы регистра, к которым будут подключать светодиоды.
Vcc — пин питания на него подадут 5В.
GND — земля соединяемая с GND на Ардуино.
OE — пин отвечает за инвертированную активацию выводов, но использоваться он не будет, его просто замыкают на землю.
MR — инвертированная очистка регистра, управлять им не нужно, поэтому подключатся будет к питанию 5В.
ST_CP — пин отвечает за обновление состояния регистра. При записи состояния на него нужно подать LOW, после записи — HIGH, для обновления состояния выводов. Его нужно подключат к пину на Arduino. Соединить этот пин трёх регистрах можно параллельно.
SH_CP — пин, отвечает за сдвиг на 1 бит регистра. Его нужно подключат к пину на Arduino. Соединяются на микросхемах также параллельно.
DS — на этот пин подаются данные, он подключается к пину на Arduino.
Q7′ — этот пин используется для каскадного соединения с остальными регистрами 74HC595.

Пьезопищалка будет подключена к третьему пину Arduino последовательно с резистором. Перед включением пищалки в схему автор посмотрел какие пины поддерживают ШИМ, так как для неё это обязательно. На Arduino Uno ШИМ поддерживают 3, 5, 6, 9, 10 и 11 пины.

В подключении кнопок используются резисторы, встроенные в Arduino, при этом одна сторона кнопок подключается к земле, а другая к пинам Arduino.

Так, выглядит итоговая конструкция:

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

Программный код.
Имея подкованность в программировании, автор решил писать код самостоятельно, не используя чужие наработки. Первым шагом стало написание подпрограммы, отвечает она за мигание всеми диодами и подачу сигнала пьезопищалкой при включении. Эта функция помогает убедиться в целостности цепи, подобное реализовано на многих устройствах.

Скетч вышел довольно большой, далее можно рассмотреть основные его возможности.

Работа светодиодов.
Так как обращение к светодиодам происходит через сдвиговый регистр, в первую очередь потребовалось реализовать ещё подпрограммы для светодиодов. Для более просто работы с диодами осуществлён ряд дополнительных функций. Реализованы различные эффекты анимации диодов. Когда часы не настроены — диоды, отвечающие за часы и минуты, начнут мигать (как мигают обычные часы когда не настроены). В светодиодах, отвечающих за секунды, также есть своя анимация, диод может бегать вправо-влево в режиме будильника, или же в режиме настройки часов.

Основной цикл.
Программа настроена на работу следующим образом: часы выводят информацию в зависимости от текущего состояния, и меняют своё состояние в зависимости от использования кнопок, и событий. Выглядит это всё как немалое количество вложенных условий. Состояние диодов обновляется каждый раз после проверки состояния таймеров и кнопок с вызовом их обработчика.

Также автором проделана большая работа для корректной работы кнопок ввода и таймеров. Исходный код скетча можно скачать под статьёй.

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

Изучив эту проблему, было выяснено что оригинальная Arduino Uno использует керамический резонатор, а ему не хватает точности для измерения времени в длительных сроках. Наиболее рациональным решением была покупка часов реального времени, плюс из-за этого модуля время на часах не будет сбиваться при отключении. Автором был приобретен модуль Grove RTC от Seeed Studio. Он представляет из себя готовую плату с чипом часов. Пины модуля SDA и SCL автор подключил к Arduino на пины A4 и A5, GND к земле. Так как питание 5В занято платой часов подключать модуль было некуда. Автор решил запитать модуль от одного из цифровых пинов, который будет находиться постоянно под напряжением. Также автору потребовалось дорабатывать исходный код и добавить библиотеку часов реального времени.

Сборка часов
Завершив долгую работу над кодом, пришло время придать устройству завершённый внешний вид, и перенести его с макетной платы на печатную. В первую очередь потребовалось сделать разводку для платы. Для этого была использована Fritzing, так как автор уже имел представление о внешнем виде часов, и у него была построена схема устройства. Трассировку платы автор также провёл вручную, на это потребовалось немало времени.
Проект для производства печатной платы:

Производство печатной платы было заказано в Китае. Seeed Studio имеет сервис по производству плат Fusion PCB. Через Fritzing был произведён экспорт файла в формат Extended Gerber, с ним работают многие производители плат. Через две недели автор получил долгожданную плату на почте.

Оставалось только припаять уже немного запылённые детали на плату. Готовый результат после пайки выглядел намного лучше макета на Breadboard.

Автор проекта долго трудился и получил то что хотел — уникальные бинарные часы с таймером и будильником. Используя батарейный отсек часы можно поместить куда угодно. Arduino оправдала ожидания и полностью справилась с поставленной задачей.

Возможно у Вас есть свои мнения на тему «У пина были электронные часы»? Напишите об этом в комментариях.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock
detector