Поскольку в предыдущих публикациях дело так и не дошло до готового изделия, предлагаю свой вариант. Железо — не моя специализация, поэтому прошу не судить строго.

Итак, по порядку. Когда моя любовь к часам и точному времени достигла терминальной стадии, было решено воплотить мечту в жизнь. Начался поиск доступных плат для разработки с 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:

RTC

Загадочный модуль почему-то работал только при подключенном и запитанном логическом анализаторе (пользуюсь Logic-U ISL от ребят из Харькова):

опыты

По даташиту между сигнальными линиями и V+ должны быть резисторы 10К, прозвон модуля показал мегаомы. Что это за муляж вместо резисторной сборки и светодиода, который никогда не загорался, я не понял. Напаянные резисторы модуль оживили, но порог колхоза перешагнул некую черту, поэтому была разработана плата по типу ардуиновского “щита”:

shield

Схема:

схема

В качестве индикатора был взят сегментный дисплей — такого размера (0.8? в высоту) был только с белыми светодиодами, из всей документации на него китаец предоставил только джипег с распиновкой, некоторые нечитаемые символы пришлось угадывать методом исключения. Контроллер к нему был взят всем известный MAX7219, общающийся по SPI.

Корпус… В новогодние праздники под рукой конечно нет ни 3D-принтера, ни лазерной резки. Самостоятельно напилил завалявшийся 8 мм плексиглас.

Момент безысходности на финальном этапе:

упс

Конечный вид изделия:

конец

Часы получают IP-адрес по DHCP (у меня их раздает роутер). Сервер NTP выбирается случайно. Время запрашивается каждые 25 часов (мой провайдер разрывает соединение с интернетом в одно и то же время вечером, поэтому не хотелось бы попасть на этот промежуток времени). Из-за постоянно меняющегося законодательства с часовыми поясами, решил не реализовывать переход на летнее и зимнее время, две кнопки просто уменьшают или увеличивают на час смещение от UTC. Смещение записывается в EEPROM микроконтроллера. Ход часов дополнительно резервируется литиевой батарейкой 3V, поэтому пропадание питания и интернета не проблема. Четыре цветных светодиода на плате служат для индикации проблем с интернетом, железом или ошибок в рантайме.

Исходные коды прошивки на ГитХабе:

https://github.com/sapozhnikov/eclock

Комментарии (9)


  1. iliasam
    14.09.2015 11:47

    Arch Pro довольно дорогая плата (40 $ у производителя). Как ни странно, намного более мощная плата Orange Pi бышла бы дешевле (15$), хотя она тоже выходит «пушкой по воробьям».


    1. shpaker
      15.09.2015 03:53
      +1

      Все таки Хабр враждебен пользователям мобильных, хотел плюсануть комментарии, а попал на минус((
      А по статье да, согласен жирновато такие платы на часы переводить.
      Апд: о боже, какие ужасные стрелки под статьёй теперь…


  1. ZeroBit
    14.09.2015 12:23
    +5

    Удивило то, что

    любовь к часам и точному времени достигла терминальной стадии,
    а секунд на часах нет.


    1. anatolikus
      14.09.2015 13:10
      +5

      Да что там, я после прочтения этой фразы надеялся на миллисекунды.


  1. ukku
    14.09.2015 12:38
    +3

    А разве в LPC1768 нет модуля RTC? При синхронизации каждые 25 часов он отлично справится


    1. Avalanch
      14.09.2015 15:02
      +1

      Это бы усложнило разработку для обеспечения хода часов при пропадании питания. Пришлось бы загонять контроллер в режим с пониженным потреблением, продумывать схемотехнику, чтобы отключать периферию при питании от батарейки. А так все отключилось, а микросхема RTC со своей батарейкой потихоньку тикает и потребляет совсем мало.


      1. ukku
        14.09.2015 16:35
        +1

        там по схеме есть конденсатор между выводом BATT контроллера и землей. Если его отпаять то можно припаять свою батарейку и было бы тоже самое


  1. nitro80
    15.09.2015 02:45

    Чего не хватает имхо:
    — определения места по GPS и Глонасу;
    — соответственно вывода на экран информации о часовом поясе относительно UTC;
    — секунд на дисплее/

    Сам присматриваюсь к наручным часамMFJ-188BRC, которые:

    MFJ-188BRC имеет возможность отображения времени в 24 и 12-часовых форматах плюс он имеет функцию автоматической подстройки точного времени и выбора часового пояса. Возьмите их с собой в любую точку мира и Вы всегда будете знать абсолютно точное время! Встроенный в часы высокочувствительный приемник принимает сигналы в соответствии с выбранной временной зоной. Вы также можете установить часовой пояс для UTC или можете индивидуально настроить часы в любом крупном городе мира. Например, если вы путешествуете по России, установите часовой пояс для Москвы, и часы будут принимать сигнал и держать для Вас точное время, соответствующее московскому часовому поясу. Когда Вы находитесь в Японии, установите часовой пояс Токио и так в любой стране мира.

    Фото часов


  1. grimich
    17.09.2015 12:45

    Хочу купить такие, только с размером корпуса поменьше.
    Совсем не гуглится нигде.
    Хочется синк времени автоматический, работу по usb или 220, led экранчик как у вас.
    Ни одной железяки не нашел вменяемой.
    Сколько будет стоить сделать такое же, но поменьше?)