Итак, по порядку. Когда моя любовь к часам и точному времени достигла терминальной стадии, было решено воплотить мечту в жизнь. Начался поиск доступных плат для разработки с Ethernet на борту. Rapsberry с линуксом показались “пушкой по воробьям”, поэтому кинул вопрос на форум Netduino, ибо сейчас крепко сижу на C# и было интересно запустить байткод на микроконтроллере. Но увы, единственный модератор форума, видимо, уехал на отдых, и ему потребовалось несколько недель, чтобы одобрить и опубликовать мое первое сообщение. Not good, not good… На aliexpress была заказана плата Arch Pro и прочий недостающий обвес. Тогда это было самое доступное решение. На самой плате установлен микроконтроллер LPC1768 от NXP (ядро Cortex-M3), плюс LPC11U35 (Cortex-M0) для облегчения коммуникации с их софтом. Сам производитель предоставляет online IDE, компиляция тоже на их сервере, прошивка скачивается и закидывается на плату как файл на флешку, дебаггера нет, поэтому разработку проекта начал в Keil uVision, пробной версии, конечно же. Для прошивки и отладки микроконтроллера требуется только кабель micro-USB.
В качестве часов реального времени была выбрана ИС DS3231, которая приехала ко мне в виде готового модуля, общающегося по I2C:
Загадочный модуль почему-то работал только при подключенном и запитанном логическом анализаторе (пользуюсь Logic-U ISL от ребят из Харькова):
По даташиту между сигнальными линиями и V+ должны быть резисторы 10К, прозвон модуля показал мегаомы. Что это за муляж вместо резисторной сборки и светодиода, который никогда не загорался, я не понял. Напаянные резисторы модуль оживили, но порог колхоза перешагнул некую черту, поэтому была разработана плата по типу ардуиновского “щита”:
Схема:
В качестве индикатора был взят сегментный дисплей — такого размера (0.8? в высоту) был только с белыми светодиодами, из всей документации на него китаец предоставил только джипег с распиновкой, некоторые нечитаемые символы пришлось угадывать методом исключения. Контроллер к нему был взят всем известный MAX7219, общающийся по SPI.
Корпус… В новогодние праздники под рукой конечно нет ни 3D-принтера, ни лазерной резки. Самостоятельно напилил завалявшийся 8 мм плексиглас.
Момент безысходности на финальном этапе:
Конечный вид изделия:
Часы получают IP-адрес по DHCP (у меня их раздает роутер). Сервер NTP выбирается случайно. Время запрашивается каждые 25 часов (мой провайдер разрывает соединение с интернетом в одно и то же время вечером, поэтому не хотелось бы попасть на этот промежуток времени). Из-за постоянно меняющегося законодательства с часовыми поясами, решил не реализовывать переход на летнее и зимнее время, две кнопки просто уменьшают или увеличивают на час смещение от UTC. Смещение записывается в EEPROM микроконтроллера. Ход часов дополнительно резервируется литиевой батарейкой 3V, поэтому пропадание питания и интернета не проблема. Четыре цветных светодиода на плате служат для индикации проблем с интернетом, железом или ошибок в рантайме.
Исходные коды прошивки на ГитХабе:
https://github.com/sapozhnikov/eclock
Комментарии (9)
ZeroBit
14.09.2015 12:23+5Удивило то, что
любовь к часам и точному времени достигла терминальной стадии,
а секунд на часах нет.
ukku
14.09.2015 12:38+3А разве в LPC1768 нет модуля RTC? При синхронизации каждые 25 часов он отлично справится
Avalanch
14.09.2015 15:02+1Это бы усложнило разработку для обеспечения хода часов при пропадании питания. Пришлось бы загонять контроллер в режим с пониженным потреблением, продумывать схемотехнику, чтобы отключать периферию при питании от батарейки. А так все отключилось, а микросхема RTC со своей батарейкой потихоньку тикает и потребляет совсем мало.
ukku
14.09.2015 16:35+1там по схеме есть конденсатор между выводом BATT контроллера и землей. Если его отпаять то можно припаять свою батарейку и было бы тоже самое
nitro80
15.09.2015 02:45Чего не хватает имхо:
— определения места по GPS и Глонасу;
— соответственно вывода на экран информации о часовом поясе относительно UTC;
— секунд на дисплее/
Сам присматриваюсь к наручным часамMFJ-188BRC, которые:
MFJ-188BRC имеет возможность отображения времени в 24 и 12-часовых форматах плюс он имеет функцию автоматической подстройки точного времени и выбора часового пояса. Возьмите их с собой в любую точку мира и Вы всегда будете знать абсолютно точное время! Встроенный в часы высокочувствительный приемник принимает сигналы в соответствии с выбранной временной зоной. Вы также можете установить часовой пояс для UTC или можете индивидуально настроить часы в любом крупном городе мира. Например, если вы путешествуете по России, установите часовой пояс для Москвы, и часы будут принимать сигнал и держать для Вас точное время, соответствующее московскому часовому поясу. Когда Вы находитесь в Японии, установите часовой пояс Токио и так в любой стране мира.
Фото часовgrimich
17.09.2015 12:45Хочу купить такие, только с размером корпуса поменьше.
Совсем не гуглится нигде.
Хочется синк времени автоматический, работу по usb или 220, led экранчик как у вас.
Ни одной железяки не нашел вменяемой.
Сколько будет стоить сделать такое же, но поменьше?)
iliasam
Arch Pro довольно дорогая плата (40 $ у производителя). Как ни странно, намного более мощная плата Orange Pi бышла бы дешевле (15$), хотя она тоже выходит «пушкой по воробьям».
shpaker
Все таки Хабр враждебен пользователям мобильных, хотел плюсануть комментарии, а попал на минус((
А по статье да, согласен жирновато такие платы на часы переводить.
Апд: о боже, какие ужасные стрелки под статьёй теперь…