Итак, свершилось. После долгих мучений наконец-то удалось выкроить приличное количество времени и, с помощью паяльника, набора надфилей, шруповёрта и такой-то матери, дособрать некоторую самоделку. Остаётся ещё небольшое количество технического долга в виде документации по программной части, но, в общем, можно сказать, что основные и самые гнусные мероприятия позади.
Понятное дело, что у проекта была предыстория, но она неинтересная. ...Итак, в один прекрасный момент я вспомнил, что было б круто обзавестись такими часиками, снова. Сказано - сделано. По пути пришлось апнуть мои инструменты для пайки всего и вся... По большому счёту, было закуплено всё, кроме паяльника и канифоли :) Попутно я затаривался ещё и нужными деталюшками для этой самоделки. С самым сложным мне повезло - корпус я купил между делом, вместе с модулем rtc, микроконтроллером и индикатором. Самая большая заминка вышла с проводами. Обычным МГШВ и аналогами паять сложновато, даже при температуре плавления сплава Розе (98 градусов) изоляция на этом проводе ведёт себя плохо. Было решено затариться старым-добрым МГТФ, а с ним проблема в том, что его продают либо от сотни метров, либо тупо катушками по полкилометра. В моей поделке хватило с запасом и 1 метра :) Либо есть вариант тащиться на другой конец города из-за небольшого куска этого провода. При таком раскладе было проще купить 10 метров этого провода в тридорого в Чип-и-Дипе. Блок питания - обычная зарядка для телефона - был куплен в переходе за 200р. Естественно, и тут не обошлось без нюансов: мне продали блочок с раздавленным корпусом, но это как раз то, что мне нужно было.
После того, как была собрана основная плата, выяснилось, что у ножек модуля RTC слишком большое сопротивление.
Тут надо сделать небоольшое отступление. Дело в том, что для самоделок продаются фактически 3 вида RTC (ну, хорошо, 4) это DS1302, с точностью ~ секунд 5 в сутки, DC1307 без флешовой памяти с точностью ~ секунд 5 в месяц, бывает DS1307 с флешкой, DS3231 с флешкой, точность хода ~ 5 секунд в год. Последний добивается такой точности за счёт использования термокомпенсатора. Если не использовать RTC-модуль, то сам микроконтроллер обладает точностью ~30 секунд в сутки. По большому счёту, вполне достаточно и DS1302, но это, как ни странно, редкий у нас в России модуль, да и цена на него мало чем отличается от DS1307. Формально, цена всех этих модулей колеблется от 70 до 150 рублей. Но в виду того, что я старался сэкономить на доставке, заказывал компоненты всего в 2-х точках, в одной rtc закончились, а в другой DS1307 был по 244р.
Но вернёмся к нашим баранам. Каково же было моё удивление, когда драйвер не подхватил RTC. Нет чипа и всё тут. Ну хорошо, вначале были перепутаны sda и scl местами. Исправил - ноль эмоций. Просто кинул перемычку с платки rtc на платку мк и вуаля - работает!
С грехом пополам была написана программка для часиков. Без изысков, просто время, мигающая разделительная точка и ничего больше. Настраивается 2-мя кнопками, часы и минуты. Как раз то, что нужно, чтобы ночью глануть на часы и сообразить сколько время до будильника. Но и здесь не обошлось без нюансов. Дело в том, что драйвер SevSeg не поддерживает правильное отображение нуля, когда ноль часов. Если использовать 4-х значное целое для отображения времени, то 0 часов не отображается, когда точки нет и отображается когда точка есть, с float - та же история, а строка (массив символов) не поддерживает точку вообще. Писать свою библиотеку-драйвер или использовать какую-то совсем уж наколеночную - что-то не оч хотелось. Так что обошёлся обычным leading zeroes, не оч этетично, но работает стабильно и выглядит более-менее нормально.
Дальше была история с подгонкой внутреннего рельефа корпуса под рельеф платы и vice-versa. Также были насверлены и расточены надфилем отверстия под кнопки, тумблер и кабель питания. И тут я всё-таки совершил ошибку: надо было купить кабельный ввод. Фигулька для монтирования в корпус, через которую пропускается кабель, заодно он там закрепляется. Вобщем, у меня оказалась под рукой термоусадка, которая едва-едва скукоживалась по кабелю и хомутик от чего-то, возможно, от сломанной вилки питания, таким образом удалось кое-как зафиксировать кабель питания. По итогам корпусных работ могу сказать, что была бы у меня дремелька, всё произошло бы быстрее и намного интереснее.
Но я не рассказал про саму схемку питания. Из USB-зарядки была извлечена платка, которая на выходе давала 4.5 вольта. В платке были просверлены отверстия, чтобы поместить её ровно на внутренние ножки корпуса, в которых проходят скрепляющие половинки корпуса шурупы. Естественно, пришлось пожертвовать дорожками и восстановить их тем самым тонюсеньким МГТФ-ом.
По итогам проделанных работ могу сказать, что из недоработок есть кабельный ввод, отсутствие предохранителя, что очень неправильно (сама плавкая вставка-то есть, некуда её присунуть, очень тесно в корпусе, а термоусадки подходящего диаметра нет. Тупо нечем изолировать). И отсутствие полноценных транзисторов-драйверов на сегментах индикатора, но конкретно в данном случае это не сильно принципиально, т.к. нагрузочные резисторы ограничивают ток потребления сегментов до удовлетворительного уровня и микроконтроллер работает в штатном режиме. А немного неоптимальное размещение платки мк на основной плате уже даже не всчёт.
Вот как-то так. Китайские наборы для самостоятельной сборки стоят в России примерно 1200р + доставка, эта самоделка обошлась мне (не считая инструментов) примерно в ту же сумму.
Дополнение.
История получила своё законное продолжение :) Соответственно, у меня на руках остались 4 транзистора s8550 и 7 резисторов на 10 КОм. В принципе, по спеке, nano может выдать до 30-40 ма на ногу, и мы пролазием по этому показателю, когда речь идёт за сегменты, там стоят огрничительные резисторы по 330 Ом и ток получается примерно 10 ма на сегмент. Но у нас общий анод, что же там? а там 70-80 ма, а это уже вдвое больше формального максимума, но, прада, за счёт динамической индикации перегрузка происхрдит очень непродолжительное время. Вроде как непорядок. детальки есть можно же сделать "как надо".
Сделал. Потратил на это пару дней, с нескольких подходов, т.к. паять приходилось подлезая через провода и через соседние детали, ибо изначально эти элементы схемы не были заложены и соответственно место под них и соединения пришлось выкраивать по-месту. И от USB оно работает, как часы... хм, это и есть часы. А вот если мы берём питание от usb-зарядки, а там стоит импульсный источник, то получаем все весьмёрки + все точки. Показания читаются с трудом, правильнее сказать: угадываются.
К сожалению, у меня нет возможности дособрать БП, чтобы он выдавал постоянный, а не импульсный ток, поэтому идею с транзисторами я пока отложил до неизвестных лучших времён.