Мой вариант DIY часов с NTP клиентом

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

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

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

    0
    Arch Pro довольно дорогая плата (40 $ у производителя). Как ни странно, намного более мощная плата Orange Pi бышла бы дешевле (15$), хотя она тоже выходит «пушкой по воробьям».
      +1
      Все таки Хабр враждебен пользователям мобильных, хотел плюсануть комментарии, а попал на минус((
      А по статье да, согласен жирновато такие платы на часы переводить.
      Апд: о боже, какие ужасные стрелки под статьёй теперь…
      +5
      Удивило то, что
      любовь к часам и точному времени достигла терминальной стадии,
      а секунд на часах нет.
        +5
        Да что там, я после прочтения этой фразы надеялся на миллисекунды.
        +3
        А разве в LPC1768 нет модуля RTC? При синхронизации каждые 25 часов он отлично справится
          +1
          Это бы усложнило разработку для обеспечения хода часов при пропадании питания. Пришлось бы загонять контроллер в режим с пониженным потреблением, продумывать схемотехнику, чтобы отключать периферию при питании от батарейки. А так все отключилось, а микросхема RTC со своей батарейкой потихоньку тикает и потребляет совсем мало.
            +1
            там по схеме есть конденсатор между выводом BATT контроллера и землей. Если его отпаять то можно припаять свою батарейку и было бы тоже самое
          0
          Чего не хватает имхо:
          — определения места по GPS и Глонасу;
          — соответственно вывода на экран информации о часовом поясе относительно UTC;
          — секунд на дисплее/

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

          Фото часов


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

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое