![]() |
![]() |
||||||||||||
LOVE clock
Автор: Петров Иван Всех приветствую. Уважаемый Кот, позволь поздравить тебя с днем рождения, с твоим 16 летием и хочу пожелать тебе здоровья, благополучия, успехов и процветания твоему сайту. Кстати, спасибо за сайт он очень классный! В качестве подарка хочу подарить тебе свой так сказать :) романтический проект который я назвал Love Clock, он очень простой и из копеечных деталей, любой кот сможет его сделать для своей кошечки.
Love Clock - Это оригинальные электронные часы с функцией термометра и разнообразными анимационными эффектами. Как появился проект? Наверняка каждый радиолюбитель, да даже просто обычный человек видел проекты электронных светодиодных сердец. Их существует как правило 2-х разновидностей: 1) Простейшие - выполненные по типу мультивибратора на транзисторах или таймерах 555 серии. Стоят не дорого, эффекты тоже откровенно так себе :) но зато подходят для сборки начинающим. Но, и первый и второй варианты разрабатывают, как правило, в качестве подарка любимому или любимой на день всех влюбленных 14 февраля. Наверняка, в большинстве случаев такой подарок будет включаться какое-то непродолжительное время непосредственно на сам праздник и еще какое-то время после самого праздника. И я вот что подумал, а что если сделать часы в форме сердечка в виде шелкографии, и в них дополнительно поставить еще одно сердечко, но уже меньшего размера на красных светодиодах. Сказано - сделано! Что получилось судить вам. Такой электронный проект отлично подойдет не только в качестве подарка на день влюбленных, но и пригодится в повседневе. Устройство показывает последовательно текущее время и температуру, ну и как-же без анимации сердечка, к примеру, каждую секунду оно может плавно зажигаться и плавно гаснуть, но это только один из вариантов, можно сделать чтобы оно светилось постоянно, а можно выбрать другие варианты об этом чуть ниже. Анимация светодиодного сердечка будет всегда напоминать Вашей второй половинке о вас и дарить приятные эмоции везде будь то дом или офис. Что часы умеют: - Отображение текущего времени. О печатной плате: Печатную плату я разрабатывал как обычно в программе 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) Отключите питание часов (если они были включены). Заголовки меню отображаются на дисплее 1 секунду, после чего выводится текущее установленное значение пункта меню. Вы можете изменять его, нажимая на кнопки «UP» или «DOWN». После того как Вы выбрали, нужное вам значение нажмите кратковременно на кнопку «ENTER» или «MENU» (в зависимости от выбранного пункта меню, об этом я все подробно расскажу) для перехода к следующему пункту меню. Таким образом, установите желаемые настройки. После надписи "SAUE" часы сохранят текущие установки в энергонезависимую память EEPROM и перезагрузятся. Для того чтобы сбросить настройки на дефолтные последовательность действий такая: 1) Отключите питание часов (если он были включены). Описание пунктов главного Меню: Описание пунктов вложенных подменю: В пункте «CLOC»: Небольшое пояснение, к примеру Вы установили 13:25 как только Вы нажмете кнопку «MENU» время установится/обновится. Порядок установки: Часы -- Минуты. - «NIGH» Установка ночного режима. Устанавливаемый параметр мигает. Для установки используйте кнопки «UP» & «DOWN» по аналогии с предыдущими пунктами меню. Первым параметром настраивается час активации ночного режима. Например, 22 часа вечера (по умолчанию). Вторым параметром настраивается час деактивации ночного режима например 8 утра (по умолчанию). - «NTYP» Установка вариантов ночного режима. Возможные варианты 0, 1, 2. В режиме 0 часы условно спят, они по прежнему работают, просто ничего не выводят на дисплей и на сердечко. Для того чтобы их разбудить нажмите на любую кнопку и удерживайте ее нажатой не менее 1с. Часы проснутся и покажут Вам время в течении 5 секунд и столько же температуру, после чего снова уйдут в спячку до утра или до следующего нажатия на кнопку (-и). В пункте «DISP»: - «TMP» Установка времени показа температуры. Для установки используйте кнопки «UP» & «DOWN». Минимальное время отображения 1 секунда, масимальное 8 секунд. - «DISP» Установка яркости дисплея в дневном режиме работы. Для установки используйте кнопки «UP» & «DOWN». Минимальный уровень яркости 1, максимальный 7. В пункте «LOVE»: - «EFF1» Установка основных эффектов для показа каждую секунду. - «EFF2» Установка дополнительных эффектов. Периодичность их показа настраивается в следующем подменю. - «PERI» Установка периодичности показа дополнительных эффектов из предыдущего пункта. 0 - дополнительные эффекты выключены. Минимальный интервал спустя который эффект покажется составляет 1 минуту, максимальный интервал составит 60 минут. К примеру, если Вы установите значение 10, то через каждые 10 минут будет показываться выбранный вами эффект. Для установки периода используйте кнопки «UP» & «DOWN». Для возврата в главное меню кратковременно нажмите на кнопку «MENU». На дисплее отобразится надпись "SAUE" после чего часы перезагрузятся с обновленными настройками. Все настройки сохраняются в энергонезависимой памяти EEPROM, к примеру если в процессе работы отключат электричество ничего не собьется и заново ничего настраивать не придется. Если отключат электричество во время установок меню, то тогда да, все печально - придется делать сначала. Но это очень редкая ситуация, хотя возможная. Технические характеристики часов: - Микроконтроллер: STM8S103F3P6 Прошивка: Внимание! Внимательно подключайте провода для программирования, в случае ошибки возможен выход устройства из строя! Загружать прошивку необходимо с помощью программы STVP - ST Visual Programmer. Сразу, после того, как загрузите прошивку перейдите на вкладку «OPTION BYTE» нужно настроить AFR3 в качестве альтернативной функции выбрать из выпадающего списка Port C3 Alternate Function = TLI. Это очень важно без этой опции ничего работать не будет! После того как выбрали, нажмите вверху на значок красной стрелочки с микросхемкой и загрузите в микроконтроллер. Отключите программатор от платы. После загрузки ПО романтические часы-термометр готовы к работе с настройками по умолчанию. Видео обзор пока не сделал, как сделаю добавлю видео сюда. Короткие видео есть в моем инстаграме, ссылку здесь наверное нельзя оставлять кто захочет найдет.
В архиве: схема электрическая принципиальная в формате pdf, перечень элементов, гербер файлы для печатной платы и проект с исходниками. P/S Просьба, так как я самоучка :), если Вы улучшите программу или придумаете свой корпус для этого проекта поделитесь пожалуйста, буду благодарен. Спасибо за просмотр!
Файлы: Все вопросы в Форум.
|
|
||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |