РадиоКот :: LOVE clock
Например TDA7294

РадиоКот >Конкурсы >Поздравь Кота по-человечески 2021! >

Теги статьи: Добавить тег

LOVE clock

Автор: Петров Иван
Опубликовано 15.09.2021
Создано при помощи КотоРед.

Всех приветствую.

Уважаемый Кот, позволь поздравить тебя с днем рождения, с твоим 16 летием и хочу пожелать тебе здоровья, благополучия, успехов и процветания твоему сайту. Кстати, спасибо за сайт он очень классный! В качестве подарка хочу подарить тебе свой так сказать :) романтический проект который я назвал Love Clock, он очень простой и из копеечных деталей, любой кот сможет его сделать для своей кошечки.

 

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

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

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

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

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

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

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

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

- Отображение текущего времени.
- Отображение температуры.
- Диапазон измерения температуры: -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 и прочего тут нет. Изготовление печатной платы заказывал в Китае.

С установленными компонентами выглядит вот так:

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

Схема электрическая принципиальная (чтобы увеличить кликните на фото)

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

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

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

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

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

Управляют светодиодами 2-а сдвиговых 8-и битных последовательных регистра 74НС595 работающих все по тому же аппаратному SPI. С сигналом управления яркости сердечку помогает аппаратный ШИМ на таймере 2, а именно канал 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 интерфейсу, все контакты подписаны какой провод куда паять проблем не составит.

Внешний вид получившегося устройства:

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

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

МЕНЮ:

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

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. Это очень важно без этой опции ничего работать не будет! После того как выбрали, нажмите вверху на значок красной стрелочки с микросхемкой и загрузите в микроконтроллер. Отключите программатор от платы. После загрузки ПО романтические часы-термометр готовы к работе с настройками по умолчанию.

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

 

В архиве: схема электрическая принципиальная в формате pdf, перечень элементов, гербер файлы для печатной платы и проект с исходниками.

P/S Просьба, так как я самоучка :), если Вы улучшите программу или придумаете свой корпус для этого проекта поделитесь пожалуйста, буду благодарен.

Спасибо за просмотр!


Файлы:
Архив ZIP
Пример отображения времени
Пример отображения температуры


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

32 10 8