Love Clock - Часы своими руками. Полный гайд

Друзья, всем привет. Меня зовут Иван и в этой статье я расскажу вам как сделать часы своими руками или мой новый романтический проект Love Clock.

LoveClock 001

Love Clock - Это оригинальные электронные часы с функцией термометра и разнообразными анимационными эффектами.

Как появился проект?

Наверняка каждый радиолюбитель, да даже просто обычный человек видел проекты электронных светодиодных сердец. Их существует как правило 2-х разновидностей:

1) Простейшие - выполненные по типу мультивибратора на транзисторах или таймерах 555 серии. Стоят не дорого, эффекты тоже откровенно так себе :) но зато подходят для сборки начинающим.
2) По сложнее - выполненные на микроконтроллерах. В этом варианте конечно общая стоимость проекта подороже, но и возможностей значительно больше. Можно написать различные красивые эффекты, а не только переключение одной группы светодиодов на другую и обратно как в первом варианте. Как собака бегает за своим хвостом, все по кругу :)

Но, и первый и второй варианты разрабатывают, как правило, в качестве подарка любимому или любимой на день всех влюбленных 14 февраля. Наверняка, в большинстве случаев такой подарок будет включаться какое-то непродолжительное время непосредственно на сам праздник и еще какое-то время после самого праздника. И я вот что подумал, а что если сделать часы в форме сердечка в виде шелкографии, и в них дополнительно поставить еще одно сердечко, но уже меньшего размера на красных светодиодах. Сказано - сделано! Что получилось судить вам - результат на фотографиях в этой статье.

LoveClock 002

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

LoveClock 011

Анимация светодиодного сердечка будет всегда напоминать вашей второй половинке о безграничной любви к ней и дарить приятные эмоции дома или на работе в офисе. Такие часы невозможно купить ни в одном магазине, но зато их можно сделать самому! Не забывайте, подарок сделанный своими руками всегда самый лучший. Если Вы верите в приметы, и решите подарить часы (это касается любых часов) пусть вам дадут любую денежную сумму, типа их у вас купили просто формальность для надежности. Подробнее читайте в интернете, наша статья не об этом.

Что часы умеют:

- Отображение текущего времени.
- Отображение температуры.
- Диапазон измерения температуры: -55...+125 гр.С.
- Точность измерения: ±0,5 гр.С. в диапазоне -10...+85 гр.С.
- Дискретность отображения: 0,1 гр.С.
- Попеременный режим отображения информации. Настраиваемый.
- Ночной режим. Настраиваемый.
- Снижение яркости дисплея в ночном режиме по установленному времени, с возможностью полного отключения дисплея и сердечка.
- 7 уровней яркости дисплея в дневном режиме.
- Эффекты для сердечка разделены на 2 группы. Настраиваются.
  1 группа - эффекты, показываемые каждую секунду.
  2 группа - эффекты, показываемые в интервале от 1…60 минут
- Меню. Управление 4-я кнопками. «MENU», «UP», «DOWN», «ENTER».
- Сохранение настроек в энергонезависимой памяти EEPROM.
- Возможность сброса на установки по умолчанию.

Разработка печатной платы.

Печатную плату я разрабатывал как обычно в программе Altium Designer 15 версии меня она полностью устраивает. Печатная плата получилась 2-х слойная без каких либо заморочек. Размеры 90 x 85 мм. Паяется легко, радиоэлементы относительно крупные, к примеру SMD все 0805, светодиоды большие 5 мм, интегральные схемы все в паябельных корпусах никаких BGA и прочего тут нет. Изготовление печатной платы заказывал в Китае в компании PCBWay. В конце этой статьи я дам ссылку для заказа печатной платы.

Вот вам вид с лицевой стороны печатной платы:

LoveClock 003

А вот с обратной стороны:

LoveClock 004

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

LoveClock 005

LoveClock 006

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

Описание аппаратной и программной части.

Часы выполнены на 8 битном микроконтроллере STM8S103F3P6 в корпусе TSSOP-20. Информация выводится на 7-и сегментный 4-х разрядный дисплей с общим катодом. Управляет дисплеем специализированная микросхема фирмы Титан микроэлектроникс TM1628. C микроконтроллером она общается по аппаратному SPI интерфейсу. С порта PC6 - идут данные, с РС5 - тактовые импульсы, а с РС4 - стробирующие импульсы. Всю работу по выводу данных на дисплей берет эта микросхема, то есть не нужно использовать прерывания, чтобы обеспечить динамическую индикацию. Просто когда нужно отправляем данные на led driver и занимаемся другими делами.

В качестве часов реального времени (RTC) применена микросхема DS3231 в SOP-16 корпусе. Данная микросхема славится высокой точностью хода и простым управлением. С микроконтроллером RTC общается по шине I2C. В данной микросхеме присутствует "волшебный" выход именуемый SQW, который генерирует импульс положительной полярности каждую секунду.

В данном МК есть порт PC3 (TLI) - Top Level Interrupt (наивысший приоритет обработки прерываний) как раз таки на этот порт заведен сигнал SQW. То есть, как только пришел импульс от RTC она говорит STM8 Эй, бро? бросай все дела нафиг уже целая секунда прошла :), давай быстрей переходи в обработчик прерываний и устанавливай флаг! В обработчике этого прерывания устанавливается специальный флаг в 1 назвал я его Flag1Sec, а в основном цикле программы проверяется этот самый флаг и когда он в 1 с RTC считываются данные и когда это необходимо будут показываться для вас на дисплее и сразу после этого флажок сбросится в 0. После этого микроконтроллер будет постоянно проверять установился ли флаг о прошествии 1 секунды времени в обработчике прерывания и весь процесс будет повторяться бесконечно, то есть пока часы включены. Зачем что-то усложнять? Только все самое необходимое ИМХО.

LoveClock 007

Сердечко - реализовано на 14-и красных 5мм светодиодах слегка матовых :) я их раздобыл еще на прошлом месте работы, позаимствовал с ненужных лицевых панелей со старых компьютеров. Они там штатно показывали активность HDD естественно. Вам рекомендую использовать матовые, слишком сверхяркие возможно будут слепить - но это не точно :)), яркость вообще настраивается от 1...100%. Так это было отступление. Продолжаем.

Управляют светодиодами 2-а сдвиговых 8-и битных последовательных регистра 74НС595 работающих все по тому же аппаратному SPI. Такие микрухи применяются в рекламных бегущих строках, да и на Али экспрессе стоят копейки. Управлять яркостью сердечку помогает аппаратный ШИМ (по буржуйски PWM) на таймере TIM2, а именно канал 3 выход которого идет на порт PA3 это 10-й контакт микроконтроллера. В качестве ключа N-канальный полевой транзистор VT1 - FDN337N.

Тактирование МК осуществляется от встроенного HSI генератора на 16МГц, программные задержки реализованы на таймере TIM4 без использования прерываний. Программа написана на языке Си в среде разработки ST Visual Develop v4.3.12 & компиляторе Cosmic. Старался максимально возможно прямой записью в регистры без использования каких либо библиотек.

Данные отображаются на дисплее в попеременном режиме. К примеру 10 сек. показывается время, затем 3 сек. температура ну и все сначала. Как долго показывать решаете только Вы. Настраивается в специальном простом МЕНЮ, в нем же можно например включить/отключить эффекты для сердечка, а так-же настроить другие опции о них мы поговорим позднее.

Датчик температуры подключен к порту PD2. В качестве датчика температуры используется всем известный народный цифровой DS18B20 который работает по шине 1WIRE. Для достоверности показаний его необходимо разместить за пределами корпуса часов. При тестировании я припаял его сразу на плату и O My God :)) заметил, что чем дольше часы работают, тем больше завышение температуры в среднем на 1-2 градуса Цельсия. К печатной плате проводки от него припаиваются к контактным площадкам на обратной стороне платы. Каких либо разъемов я не стал делать, при желании Вы можете разместить какой либо разъемчик на корпусе самих часов и подпаяться к плате, в принципе никаких проблем.

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

Диод Шотки VD1 в качестве защиты от переполюсовки.

Вся конструкция питается от стабилизированного источника +5В с током нагрузки не менее 500мА (зависит от установленной яркости). К контактным площадкам на обратной стороне платы подключается программатор для заливки прошивки по SWIM интерфейсу, все контакты подписаны какой провод куда паять проблем не составит.

Показ времени:

LoveClock 008

Показ температуры:

LoveClock 009

Так выглядят часы с обратной стороны:

LoveClock 010

Это первая итерация печатной платы, поэтому возможно в будущем она видоизменится и что-то доработается, но пока так как есть. Тактовые кнопки поставил те, что были у меня в наличии.

Описание работы:

При включении часов, Вы увидите бегущую строку «Dom Device» далее, элегантно появится надпись «LOVE» и светодиодик за светодиодиком включится сердечко :). Затем на экране сразу отображается время и далее в зависимости от опций меню выполняется работа.

Все пользовательские настройки МЕНЮ хранятся в энергонезависимой памяти ЕЕПРОМ и считываются при каждом включении. Так-же проверяется наличие подключения датчика температуры, и если он не подключен, то соответственно данные с него не будут отображаться в попеременном режиме и не возникнет никаких программных глюков.

В часах как я уже упомянул ранее, присутствует небольшое и простое МЕНЮ для пользовательских настроек. Ведь как мы все знаем на «вкус и цвет все фломастеры разные» :))

LoveClock 011

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

Поэтому, совет всем кто будет повторять данный проект. Рассматривайте вариант немного затонировать дисплей тонировочной пленкой, какой именно не могу сказать нужно пробовать разные варианты. Опять таки все сугубо индивидуально, нужно подбирать / тестировать. Но, это все актуально когда дисплей светится приглушенно, если Вы выберите опцию в МЕНЮ полного отключения дисплея, то с этим можно и не заморачиваться. Кстати, поговорим ка мы сейчас об этом самом меню.

МЕНЮ:

Для того чтобы войти в меню последовательность действий следующая:

1) Отключите питание часов (если они были включены).
2) Нажмите на кнопку «MENU» не отпуская ее, подайте питание и удерживайте кнопку не менее 2сек. до появления на дисплее надписи «SET».
3) Отпустите кнопку «MENU». Часы автоматически перейдут к первому пункту меню.
Кнопка «MENU» - Возврат в главное меню и выход из меню.
Кнопка «ENTER» - Выбрать пункт меню.
Кнопки «UP» & «DOWN» - навигация по меню и корректировка параметров.

Заголовки меню отображаются на дисплее 1 секунду, после чего выводится текущее установленное значение пункта меню. Вы можете изменять его, нажимая на кнопки «UP» или «DOWN». После того как Вы выбрали, нужное вам значение нажмите кратковременно на кнопку «ENTER» или «MENU» (в зависимости от выбранного пункта меню, об этом я все подробно расскажу) для перехода к следующему пункту меню. Таким образом, установите желаемые настройки. После надписи "SAUE" часы сохранят текущие установки в энергонезависимую память EEPROM и перезагрузятся.

Для того чтобы сбросить настройки на дефолтные последовательность действий такая:

1) Отключите питание часов (если он были включены).
2) Нажмите одновременно на кнопки «UP» и «DOWN» не отпуская их, подайте питание и удерживайте нажатыми кнопки еще не менее 2с до появления на дисплее бегущей строки с надписью «DEFAULT». Настройки сброшены на значения по умолчанию.
3) Отпустите кнопки «UP» и «DOWN».

Описание пунктов главного Меню:

- «CLOC» Установка времени, ночного режима и его модификаций.
- «DISP» Установка длительности показа времени, температуры и яркости дисплея.
- «LOVE» Установки для сердечка.

Описание пунктов вложенных подменю:

Для возврата в главное меню кратковременно нажмите на кнопку «MENU». Настройки автоматически сохраняются при выходе из главного меню.

В пункте «CLOC»:
- «TIM» Установка времени. Устанавливаемый параметр мигает. Для установки используйте кнопки «UP» & «DOWN», например Вы уже установили час, для того чтобы перейти к установке минут нажмите кнопку «ENTER». После того, как установите минуты, нажмите на кнопку «MENU» чтобы применить настройки и выйти из подменю.

Небольшое пояснение, к примеру Вы установили 13:25 как только Вы нажмете кнопку «MENU» время установится/обновится. Порядок установки: Часы -- Минуты.

- «NIGH» Установка ночного режима. Устанавливаемый параметр мигает. Для установки используйте кнопки «UP» & «DOWN» по аналогии с предыдущими пунктами меню. Первым параметром настраивается час активации ночного режима. Например, 22 часа вечера (по умолчанию). Вторым параметром настраивается час деактивации ночного режима например 8 утра (по умолчанию).

- «NTYP» Установка вариантов ночного режима. Возможные варианты 0, 1, 2.
- 0. Дисплей и сердечко в ночном режиме будут полностью отключены.
- 1. Установится минимально возможная яркость дисплея и яркость сердечка снизится до 0,1%. Короче, сердечко будет светится едва заметно.
- 2. Установится минимально возможная яркость дисплея, но сердечко будет полностью выключено.

В режиме 0 часы условно спят, они по прежнему работают, просто ничего не выводят на дисплей и на сердечко. Для того чтобы их разбудить нажмите на любую кнопку и удерживайте ее нажатой не менее 1с. Часы проснутся и покажут Вам время в течении 5 секунд и столько же температуру, после чего снова уйдут в спячку до утра или до следующего нажатия на кнопку (-и).
Для того чтобы отключить ночной режим навсегда установите одинаковые значения активации и деактивации ночного режима. На дисплее Вы увидите надпись «OFF».

 

В пункте «DISP»:
- «TIM» Установка длительности показа времени. Для установки используйте кнопки «UP» & «DOWN». Минимальное время отображения 3 секунды, максимальное 60 секунд.

- «TMP» Установка времени показа температуры. Для установки используйте кнопки «UP» & «DOWN». Минимальное время отображения 1 секунда, масимальное 8 секунд.

- «DISP» Установка яркости дисплея в дневном режиме работы. Для установки используйте кнопки «UP» & «DOWN». Минимальный уровень яркости 1, максимальный 7.

 

В пункте «LOVE»:
- «LDAY» Установка яркости сердечка днем. То есть насколько ярко будет светить сердечко в дневное время суток. Для установки используйте кнопки «UP» & «DOWN». Если установить 0 сердечко днем будет выключено! Регулировка яркости осуществляется в процентах 1 - 100.

- «EFF1» Установка основных эффектов для показа каждую секунду.
0 - Эффекты выключены.
1 - Эффект плавного включения и отключения сердца (биение).
2 - Эффект поочередного включения светодиодов по часовой стрелке.
3 - Эффект поочередного включения светодиодов от центра по 2-м сторонам.

- «EFF2» Установка дополнительных эффектов. Периодичность их показа настраивается в следующем подменю.
0 - Эффекты перебираются автоматически начиная с 1.
1 - Эффект бегущий огонек 2-е стороны c заполнением.
2 - Эффект поочередного включения левой и правой стороны.
3 - Эффект бегущий огонек от центра по обоим сторонам.
4 - Эффект скручивания сверху и снизу.
5 - Эффект реверс скручивания (4 эффект наоборот).
6 - Эффект вращение по часовой стрелке.
7 - Эффект вращение против часовой стрелке.
8 - Эффект бегущие вертикальные полоски в стороны.
9 - Эффект бегущие вертикальные полоски в стороны с заполнением.

- «PERI» Установка периодичности показа дополнительных эффектов из предыдущего пункта. 0 - дополнительные эффекты выключены. Минимальный интервал спустя который эффект покажется составляет 1 минуту, максимальный интервал составит 60 минут. К примеру, если Вы установите значение 10, то через каждые 10 минут будет показываться выбранный вами эффект. Для установки периода используйте кнопки «UP» & «DOWN».

Для возврата в главное меню кратковременно нажмите на кнопку «MENU».
Для выхода из главного меню кратковременно нажмите еще раз на кнопку «MENU».

На дисплее отобразится надпись "SAUE" после чего часы перезагрузятся с обновленными настройками. Все настройки сохраняются в энергонезависимой памяти EEPROM, к примеру если в процессе работы отключат электричество ничего не собьется и заново ничего настраивать не придется. Если отключат электричество во время установок меню, то тогда да, все печально - придется делать сначала. Но это очень редкая ситуация, хотя возможная.

Технические характеристики часов:

- Микроконтроллер: STM8S103F3P6
- Тип RTC: DS3231
- Дисплей: 4 разрядный 7 сегментный 0,56 дюймовый светодиодный ОК
- Драйвер дисплея: TM1628
- Тип термодатчика: Цифровой, DS18B20, подключение по 3-х проводному кабелю.
- Защита от переполюсовки питания.
- Напряжение питания: 5 В.
- Потребляемый ток: зависит от установленной яркости дисплея и сердечка.
- Компактная конструкция и простая схемотехника.

Прошивка:

Внимание! Внимательно подключайте провода для программирования, в случае ошибки возможен выход устройства из строя! Защитный диод по входу к программатору не имеет отношение. Загружать прошивку необходимо с помощью программы STVP - ST Visual Programmer. Сразу, после того, как загрузите прошивку перейдите на вкладку «OPTION BYTE» нужно настроить AFR3 в качестве альтернативной функции выбрать из выпадающего списка Port C3 Alternate Function = TLI. Это очень важно без этой опции ничего работать не будет! После того как выбрали, нажмите вверху на значок красной стрелочки с микросхемкой и загрузите в микроконтроллер. Отключите программатор от платы. После загрузки ПО романтические часы-термометр готовы к работе с настройками по умолчанию.

Для заказа печатной платы в Китае:

1) Вам необходимо перейти по ссылке и зарегистрироваться в PCBWay

2) Перейти по ссылке и заказать печатную плату в PCBWay

3) На открывшейся странице в правой ее части нажмите на кнопку Add to cart и выберите необходимое количество плат для заказа.

Описание файлов в архиве:

  • LoveClock.s19 - файл прошивки
  • LoveClock_schematic.pdf - схема электрическая принципиальная
  • LoveClock_v1.0_пер_элем - перечень элементов к схеме
  • STVDProject - папка проекта с исходниками

СКАЧАТЬ ФАЙЛЫ

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

Автор: Петров Иван. По всем вопросам пишите мне в direct в инстаграм: domdevice

Благодарности:

  • За помощь и советы при создании проектов сестренке Ольге и подружке Екатерине
  • За разработку корпуса для Love Clock Ярославу
  • За изготовление корпуса компании rafet.kz Марине @trafuret и Юрию @kotyara__kuv
  • За качественные печатные платы компании PCBWay, отдельное спасибо Scarlett, Gloria, Anson

 

Все пока, до новых встреч!

https://domdevice.com | 2021-09-10 03:54:43 | STM8 | https://domdevice.com/content/logo/logo.png |
Друзья, всем привет. Меня зовут Иван и в этой статье я расскажу вам как сделать часы своими руками или мой новый романтический проект Love Clock.
Яндекс.Метрика
Copyrigth © «DomDevice», 2021. Копирование контента без прямой индексируемой ссылки на domdevice.com - запрещено!