image

Здравствуйте, меня зовут Дмитрий, сегодня я расскажу как я создал GPS часы. В конце статьи будет ссылка на прошивку и CAD 3D модель.

Итак захотелось мне сделать что нибудь на Arduino и при этом что нибудь полезное. И выбор мой пал на часы но не просто часы а часы с синхронизацией времени по GPS ну и будильником заодно.

Описание конструкции


Здесь я также буду приводить цены в долларах, причем с учетом доставки. Все компоненты были куплены на одном всем известном китайском сайте, каком говорить не буду, а то посчитают за рекламу.

  1. Ardurino Uno центр всей системы — Цена 3.45$.
  2. GPS модуль VK2828U7G5LF — Цена 6.21$.
  3. CD4026BE драйверы для цифровых индикаторов 5 шт. Цена 2.20$.
  4. Разъемы под драйверы 16Pins. Купил их чтобы не повредить драйверы при пайке. Цена 0.51$.
  5. 7 сегментные цифровые индикаторы 1,8 дюйма с общим катодом на это нужно обратить внимание, индикаторами с общим анодом нельзя управлять при помощи CD4026BE. 4 шт. Цена 3.63$.
  6. Разъемы под цифровые индикаторы 5Pins 10 шт. Эти разъемы выпили у меня много крови дело в том что ноги цифровых индикаторов немного тоньше обычных штырьков которые в них вставляются, поэтому обязательно подогните концы ног у цифровых индикаторов в сторону. Цена 1.57$.
  7. Резисторы 220 Ом. Нужны для ограничения тока в цепи светодиодов 40 шт я по неопытности заказал на 2 Вт но конечно-же подойдут и на 0,5 Вт. Цена 2.22$.
  8. Резисторы на 12 кОм. Покупал я их как «подтягивающие» для кнопок но потом узнал что у Ardurino есть встроенный резистор который активируется в режиме PullUp. Но они мне пригодились когда надо было подогнать яркость 2 центральных светодиодов под яркость цифровых индикаторов. Спаяв 5 штук параллельно я получил 2,3 кОм. Так что они все таки пригодились 20 шт. Цена 0.68$.
  9. Динамик пищалка активный. Цена 0.82$.
  10. Светодиод красный 10 шт. Цена 1.25$.
  11. Шлейф из проводов dupont line 20 см. Я использовал его как источник проводков для соединения компонентов. Цена 1.13$.
  12. Энкодер нужен для выставления времени будильника и настройки. Энкодер я выбрал поскольку при помощи него процесс установки времени упрощается в сто раз. Почему энкодеры не применяются повсеместно в всех часах ума не приложу. Цена 0.98$.
  13. Ручка для энкодера. Стандартная ручка ужасна. Цена 1.31$.
  14. Кнопка со встроенным в неё светодиодом. Цена 0.87$.
  15. Датчик освещенности BH1750 (я выбрал тот который короткий). Естественно я захотел чтобы часы автоматически регулировали свою яркость. Цена 0.81$.
  16. Мосфет модуль 2 шт. Почему 2 штуки? Первый как вы понимаете я использую для управления яркостью циферблата, а второй я использую чтобы отключать GPS модуль, конечно у него есть спящий режим но в этом режиме он отключается не полностью, поэтому я устроил ему «спящий режим» при помощи мосфета. Стоит ли отключать GPS модуль? Да стоит при включенном GPS часы потребляют 120 миллиампер а при выключенном только 80. Почему модуль? Потому что мосфеты продаются только партиями по 10 шт а мне столько не надо. Цена 1.06$.
  17. Индуктивный сенсор CJMCU-0101. Цена 1.73$.
  18. Набор разъем гнездо 40Pin 5 шт. Нужен чтобы при помощи них подключать провода к плате. Вы спросите почему я не использовал эти разъемы для цифровых индикаторов? Потому что я с начало заказал те разъемы а потом понял что их мне будет недостаточно. Цена 1.56$.
  19. Акрил из него сделан корпус. Я взял 2 куска. Первый 200x200x4 мм Полупрозрачный из них я сделал переднюю и заднюю панели. Второй 200x200x3 мм полностью черный из него я сделал боковые панели. Панели между собой я склеил термоклеем. Цена 13.03$.
  20. Специальный нож крюк для резки акрила. Цена 2.01$
  21. Две монтажные двусторонние платы 9x15 см. Цена 4.18$.
  22. Силиконовые само-клюющиеся ножки 4 шт. Цена 0.88$.
  23. Шестигранные латунные стойки для плат М3X12 20 шт формата папа мама. И М3x20 10 шт формата мама мама. Цена 3.67$.
  24. Винты черные с головкой под внутренний шестигранник 20 шт. Цена 2.06$.
  25. Макетная плата и перемычки для неё. Она вам понадобится чтобы проверить работа-способность ваши компонентов перед их установкой. Цена 3.77$.

Возможно вам понадобится блок питания как я уже сказал часы во время синхронизации потребляют 120 миллиампер когда GPS модуль отключен только 80 миллиампер но у меня он был.

Кроме того настоятельно рекомендую выпаять все светодиоды как с Arduino так и с модулей, а то внутри часов будет настоящая дискотека.

Итак в результате мы имеем 60,72$ или 4007 рублей по курсу на момент написания статьи. При этом если у вас нет паяльника мультиметра и других паяльных принадлежностей то вам придется отдать за них примерно столько-же.

Принцип работы


При включении часы показывают количество спутников которое видит GPS модуль. После того как синхронизация происходит часы начинают показывать время. При нажатии на энкодер можно устанавливать будильник. Кнопка включает и выключает будильник при этом она отображает включен-ли будильник.При срабатывание будильника если положить руку сверху на часы то можно перевести их в режим снуз (индикатор будильника будет при этом мигать).
Если нажать на энкодер при зажатой кнопке включения будильника можно установить нужный часовой пояс (по умолчанию +3). Последующее нажатие на энкодер позволяет выставить задержку режима снуз у будильника.

Ну и поскольку это GPS часы то у них есть «секретный» режим. Если их включить зажав кнопку включения будильника, часы перейдут в режим когда, они пересылают данные с GPS модуля через USB порт. При помощи программы u-center можно просматривать эти данные. Кроме того когда загорится индикатор работы будильника это будет означать что часы нашли координаты. После этого вращая энкодер можно увидеть сначала широту а потом долготу.

Фотосесия


image
Вид сзади со снятым корпусом.

image
Задняя плата с другой стороны.

image
Плата с цифровыми индикаторами спереди.

image
Плата с цифровыми индикаторами сзади.

Вывод


Не смотря на высокую стоимость этих часов я ими все таки доволен. Как вы понимаете производитель ориентируется на потребности среднестатистического потребителя. А благодаря Arduino можно создать продукт который полностью вас удовлетворит.

Прошивка вместе с CAD 3D моделью.

Данная модель сделана при помощи программного пакета Creo Parametric (бывший ProEnginer) для её просмотра вам понадобится либо сам Creo Parametric либо просмоторщик который называется Creo View Express его можно скачать с сайта ptc но вам придется у них зарегестрироваться.

Обновление



Конвертировал модель в формат PDF 3d теперь можно просмотреть модель через Acrobat Reader файл находится в папке CAD-3D-Model/01_clock.pdf.

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


  1. zhovner
    04.06.2019 03:01

    А есть ли какой-то модуль для подключения к компьютеру? Хочу NTP сервер без интернета.


    1. deema35 Автор
      04.06.2019 03:08

      Ardurino сам легко подключается к компьютеру. Другое дело что вам придется разработать программу на компьютере которая будет передовать время Ardurino через последовательный порт.


      1. jcmvbkbc
        04.06.2019 03:10

        вам придется разработать программу на компьютере

        вопрос, как я понял, о том, чтобы ардуина сама работала NTP-сервером.


        1. POS_troi
          04.06.2019 10:22

          Да без проблем собственно lloydm.net/Demos/GPS-NTP.html


      1. zhovner
        04.06.2019 03:11

        Я почти уверен что должны существовать готовые решения без необходимости писать свои драйвера.


        1. apple01
          04.06.2019 04:56

          Существуют GPS модули для подключения через serial или USB (c драйверами), есть также программы для установки времени использующие эти модули. Есть много проектов NTP серверов использующих Raspberry/Arduino/ESP8266/ЕSP32 (без интернета).


    1. kisaa
      04.06.2019 04:38

      Есть модуль Ethernet. Собирайте Arduino + Ethernet Shield + GPS, пишите прошивку — и вот готов ваш собственный time-server. Не факт, что потянет по точности как stratum 1, но для большинства нужд хватит.


    1. Javian
      04.06.2019 10:05

      Есть вариант NTP часов на ESP8266 + TM1637.


    1. iliar
      04.06.2019 13:02

      Есть вариант на распбери. www.satsignal.eu/ntp/Raspberry-Pi-NTP.html


      1. POS_troi
        04.06.2019 14:04

        Так это не интересно, готовый девайс жеж, макетку пихнуть некуда кучу проводов то-же, на борту линух который это умеет считай из каробки :)


        1. iliar
          04.06.2019 14:12

          За то работает

          ^ на скрине тест сигнала PPS. Цифра показывает чему было равно системное время в тот момент когда был получен сигнал PPS. Для бытовой точности как по мне весьма недурственный результат. Гораздо лучше чем я бы смог получить с какого то сервера из интернета.


    1. ppl2scripts
      04.06.2019 21:36

      Если к компьютеру, то Ардуино не нужен. Достаточно копеечного GPS модуля на USB подключенного напрямую.
      Есть опыт сборки и эксплуатации таких серверов, и там ничего сложного нет.


    1. JerleShannara
      04.06.2019 21:42

      А зачем модули городить? Берём почти любой GPS приёмник для компа (RS232/USB). Ставим ntpd, ставим gpsd. В конфиге gpsd прописываем порт и тип GPS приёмника. В конфиге ntpd прописываем то, что время тянуть локально с gpsd. Готово, у вас свой автономный NTP сервер. Как это на виндах сделать — увы не знаю, мне такое нужно не было.


      1. Alexeyslav
        05.06.2019 08:59

        И… держим постоянно включенным комп?


        1. JerleShannara
          05.06.2019 10:01

          >А есть ли какой-то модуль для подключения к компьютеру? Хочу NTP сервер без интернета.
          А зачем подключаемый модуль для выключенного ПК?


          1. Alexeyslav
            05.06.2019 10:11

            Тогда и NTP не нужен, если время нужно для одного ПК. Точное время многим потребителям нужно — ноутбуки, роутер, планшеты, телевизор…
            Для единственного ПК который перманентно в оффлайне, проще синхронизироваться вручную по сигналам точного времени раз в месяц.


            1. iig
              05.06.2019 11:09

              Точное время многим потребителям нужно — ноутбуки, роутер, планшеты, телевизор


              Зачем им точное время от специальных часов? Пока вся эта техника работает оффлайново — точности их внутренних часов на их срок службы больше чем достаточно. Если они умеют в интернет — там есть NTP.


            1. JerleShannara
              06.06.2019 02:15

              Я давал ответ на тот комментарий. В нём упоминался модуль для компьютера. В условии не стояло десятка девайсов.


  1. sav13
    04.06.2019 05:37

    Столько проводочков паять! А если один отпаяется — найти неисправность будет очень сложно. Неужели не проще ЛУТом плату развести, заодно убрав туда линейники и прочие детальки.

    Сколько спутников ловится в помещении? Обычно у GPS с этим туго.
    Ловятся ли одновременно GPS и GLONASS?
    Чем на пол статьи перечислять перечень элементов, лучше бы схему. Как говориться, лучше один раз услышать.

    В проекте на GITHUB скетч поместите в отдельный каталог, а то будет он цеплять всякие README.md и пр.
    Зачем там 3Д модель? Если бы корпус на принтере печатался.


    1. deema35 Автор
      04.06.2019 05:53

      Качество приема напрямую зависит от расположения часов. Если они стоят на окне то спутники находятся секунд за десять. Если часы как у меня стоят далеко от окна то могут минуты три обновляться. Правда для часов это не критично. Спутники у меня ловятся только GPS возможно это зависит от настроек модуля, я их не менял какие были такие и оставил.

      3D модель нужна чтобы понять поместиться всё внутрь. Представ те вы сделали корпус стали вставлять внутрь компоненты и поняли что они немного не влезают. Или например прорезали отверстия для портов а они оказались немного выше или ниже. Вы же не будете прорезать отверстия в уже готовом корпусе.

      А по поводу проводчиков а мультиметр на что.


    1. deema35 Автор
      04.06.2019 07:13

      По поводу цепляния файлов. Я конечно делал проект в VS но я сейчас проверил в IDE от arduino все нормально ничего лишнего не цепляется.


    1. PKav
      04.06.2019 11:04

      GPS не требует фиксации для определения времени, достаточно всего 1 спутника, даже отраженного сигнала, чтобы приемник начал выдавать корректное время.


      1. olartamonov
        04.06.2019 11:15

        Только есть проблема понять, корректное ли оно.

        Хотя если есть достоверное знание, что фиксация уже была ранее и с её момента прошло T±t секунд, то можно смотреть на попадание разности времени с GPS и внутренних часов в интервал ±t.

        А вот после перезагразки системы таки придётся ждать фиксации.


        1. PKav
          04.06.2019 11:21

          Корректность времени проверить легко — если год в дате вменяемый — значит время ±20 секунд корректное. Идеально — если принята коррекция Leap Second, но оно не особо нужно в часах без отображения секунд.


          1. olartamonov
            04.06.2019 11:41

            Для устройства, которое неизвестно сколько пролежало на полке в выключенном виде (может полчаса, а может пять лет), вменяемый год — это какой?..


            1. PKav
              04.06.2019 11:55

              На сколько я помню, при старте он выдает 2034 год, или около того.
              Более того, при холодном старте отсчет времени у G7020 начинается с 23:59:44, где 44 потому, что вшитый Leap Second равен 16. Как только время и дата резко перескочат — приемник получил точное время (кроме Leap Second) и можно его использовать. Фиксация координат, кстати, не означает получения коррекции Leap Second и время в этот момент может оставаться неточным даже при корректных координатах.


              1. deema35 Автор
                04.06.2019 12:29

                Модуль который я использую не выдает ни какого времени пока не подключится к спутнику. Так что просто ждете когда он выдаст время и это и будет правильное время.


                1. PKav
                  04.06.2019 12:32

                  Ну так надо включить в настройках вывод времени и даты даже без фиксации. И ещё можно включить предложение PUBX,04, которое выдает и время, и дату, и Leap Second.


        1. Jef239
          04.06.2019 20:07
          +1

          От схемы, приемника и нужной точности зависит. Если у приемника есть батарейное питание, то обычно есть и часы в CMOS. Уход у них — как у часов персоналки, 1-2 секунды в сутки. Как пример - GEOS-5M.

          Если приемник пишет старые координаты во flash, то по одному спутнику мы получим время с точностью (СКО) метров 15, то есть 50нс. Разумеется, если приемник не перемещался. Пример — тот же GEOS-5М.

          Про GPS и ему подобные (GALILEO, QZSS) лучше забудьте, без детального разбора протокола сложно понять, принял ли приемник leap second (сейчас это смещение на 18 секунд). Намного лучше ГЛОНАСС, где leap second просто нет (зато в минуте иногда 61 секунда), зато практически напрямую передается год. И суперкадр ЭФИ короче в 5 раз (2.5 минуты вместо 12.5 у GPS).

          Даже если приемник не хранит ваши координаты, по одному спутнику ошибка будет до 70 мс (время полета сигнала). То есть для часов — незначащая.

          Мораль — оставить прием только по ГЛОНАСС и можно верить первому же полученному времени. Да и дате тоже, у ГЛОНАСС-М биты с номером четырехлетия (N4) в соседних строках с битами номера дня в четырехлетии (NT), принимаются вместе, в одном 30секундном кадре.

          P.S. Это так, ворчание насчет «инженерного» подхода. Выдумали проблему на почти пустом месте.


  1. u_235
    04.06.2019 06:01

    Запятых не хватает по всему тексту.


    1. u_235
      04.06.2019 08:01

      deema35, так обиделся, что даже мне в профиль заглянул?


      1. deema35 Автор
        04.06.2019 12:30

        Нет я ничего не делал.


  1. olartamonov
    04.06.2019 09:10

    Первый как вы понимаете я использую для управления яркостью циферблата, а второй я использую чтобы отключать GPS модуль, конечно у него есть спящий режим но в этом режиме он отключается не полностью, поэтому я устроил ему «спящий режим» при помощи мосфета. Стоит ли отключать GPS модуль? Да стоит при включенном GPS часы потребляют 120 миллиампер а при выключенном только 80


    Опять двадцать пять, вас там под копирку что ли размножают?..

    $PMTK225,4 — и модуль в перманентном backup mode с потреблением меньше 10 мкА, пока ему ногу FORCE_ON не дёрнут.

    Ещё лучше — $PMTK225,1,3000,30000,30000,1800000 — и GPS сам просыпается каждые полчаса, чтобы уточнить координаты и время.


    1. Alexeyslav
      04.06.2019 09:25

      Более того, часы с питанием от сети… какая экономия энергии?


      1. olartamonov
        04.06.2019 09:31

        Нет, ну я могу понять желание не тратить лишние милливатты, если их можно не тратить.

        Но редкий ардуинщик долетит до середины даташита на GPS, хоть он даже на русском у «Навиа» уже есть давно.


    1. POS_troi
      04.06.2019 10:38
      +1

      А я всё ждал когда же бомбанёт у тебя, уже тегнуть хотел :D


    1. PKav
      04.06.2019 11:11

      Не, там нет таких команд — приемник там G7020 от UBlox :)


      1. augorelov
        04.06.2019 12:05

        Есть другие команды для энергосбережения. Изучаем документацию глава 11 «Power Management».


    1. Jef239
      04.06.2019 21:11

      Зачем каждые полчаса? Цель какая? Если у нас часовой кварц, то это уход на 1-2 секунды в сутки, то есть раз в 6 часов достаточно для полусекундной точности. Если у нас кварц похуже, то уход может быть на уровне 10PPM, то есть на секунду раз в 3 часа. Даже в этих условиях раз в полтора часа хватит.

      А зачем вам раз в полчаса — в упор не понимаю.

      P.S. А что чипсет и протокол перепутали — это детали.


  1. Alexeyslav
    04.06.2019 09:24

    Я бы сделал несколько иначе. Во-первых, управление одной кнопкой — это зло, добавить ещё кнопок сверху для функций. Корпус ведь позволяет, а удобство настройки повышает многократно.
    Во вторых, вам повезло что внутри помещения GPS хоть как-то да работает, не везде такое прокатит. Поэтому… делается система первичные-вторичные часы, датчик с GPS висит возле окна и передаёт в эфир широковещательно при помощи nrf24l01 данные по времени ежеминутно. Остальные часы принимают, повинуются и отображают. Преимущество: GPS один а часов много, причем в них можно отказаться от кварцевой стабилизации частоты, брать голый контроллер и пускать его без кварца на внутреннем генераторе.
    В третьих. GPS модуль зачем отключать? Часы работают от батареек? Экономия того не стоит… при включении модуль перейдёт в режим холодного запуска, будет заново искать спутники потребляя повышенный ток — экономия не стоит таких неудобств, даже если это просто работает.
    Использовать драйверы CD4026BE… ну то такое, на любителя. Лучше использовать stp16cp05, там сразу светодиодные драйверы и сразу отпадает необходимость в токоограничительных резисторах, управление яркостью всего индикатора по одному входу(туда можно вообще напрямую фоторезистор подключить и будет работать аппаратно)… но это лишь регистры, поэтому переводить двоичный код цифры в сегменты надо будет в коде а это пара дополнительных строчек и огромный + в опыт.


    1. olartamonov
      04.06.2019 09:38

      Во внешнем модуле заодно ставится BME280 или SHT21 — и готова метеостанция. При этом с GPS с просыпанием раз в пару часов (NB: auto periodic mode — до 35 минут, так что надо руками будить) оно даже на батарейках какое-то разумное время проживёт.

      Ну или вообще без всякого GPS — DCF77 какой-нибудь ловить, если территориальное расположение позволяет.


      1. Alexeyslav
        04.06.2019 10:33
        +1

        DCF77 слишком капризен вне Германии. Уже на расстоянии до Москвы его можно принять только ночью с прохождением и при отсутствии индустриальных помех. Или городить узкополосные фильтры на эту частоту, буквально с шириной полосы в 5...10Гц. Ага, и обеспечить стабильность параметров. При этом локальные часы должны держать темп автономно по меньшей мере сутки, а если им добавить элементарный ЦКХ то можно обойтись уже и без GPS.


        1. olartamonov
          04.06.2019 10:42

          У меня внешний модуль Oregon Scientific для BAR800 принимал вполне неплохо — правда, девятый этаж, окна на запад. Но там и антеннка в нём невыдающаяся по чувствительности.


          1. Alexeyslav
            04.06.2019 11:57

            А если «экономную» лампочку включить в комнате с приемником? И соседи пусть включат…
            В нём магнитная антенна?


            1. olartamonov
              04.06.2019 15:16

              Приёмник на улице, это внешний блок метеостанции.


              1. Alexeyslav
                04.06.2019 15:49

                Так не важно где он, лампочка для него фонит одинаково. У меня одна лампочка закрывает часть диапазона КВ в пределах квартиры… на длинных волнах проверить просто нечем из подручного.


                1. olartamonov
                  04.06.2019 16:30

                  Я встречал лампочки, которые глушат близко расположенный приёмопередатчик на 433 МГц, но а) это были единичные марки и б) от лампочки до приёмопередатчика было сантиметров в пределах двадцати.

                  DCF77 же совершенно стабильно принимался. Я вообще за него нежно любил BAR800 (а вот за то, что все три сдохли из-за врождённой болезни — отказа ЖК — не любил).


      1. iliar
        04.06.2019 13:09

        Ну или вообще без всякого GPS — DCF77 какой-нибудь ловить, если территориальное расположение позволяет.

        Имхо. GPS универсальнее чем DCF77. Возможно если бы мы жили в германии, то да, DCF77 круто. Но на большей части территории России DCF77 ловится чуть менее чем ни как. А там где ловится очень много чего зависит от состояния атмосферы (будет проходить сигнал или нет), расположения приемника, наличия источников помех поблизости, погоды на марсе и т. д. И как бы да, вроде бы одной успешной синхронизации скажем в неделю достаточно чтобы часы показывали точное время (даже на дерьмовом кварце часы без синхронизации за неделю не так сильно уйдут чтобы это создало бы проблему). С дрогой стороны есть GPS который стабильно раз в секунду дает точное значение времени плюс PPS сигнал.


      1. Polaris99
        04.06.2019 13:47

        Пробовал найти DCF77 модуль за вменяемые деньги — не нашел.


    1. iig
      04.06.2019 11:04

      Если это часы для дома, и в доме уже есть интернет, то NTP-часы на esp8266 это то что нужно.


    1. drWhy
      04.06.2019 11:40

      управление одной кнопкой — это зло
      А морзянка на что?

      Автору спасибо за тёплые светодиодные часы и статью.


      1. iig
        04.06.2019 11:59

        тёплые светодиодные часы


        Тёплый сведодиод идёт на смену тёплой лампе!


    1. deema35 Автор
      04.06.2019 12:39

      Поэтому… делается система первичные-вторичные часы, датчик с GPS висит возле окна и передаёт в эфир широковещательно при помощи nrf24l01 данные по времени ежеминутно.


      По мойму все очень громоздка. Хочется ведь чтобы все было в удобном маленьком корпусе.

      Я написал про потребление оно подскакивает на 50%. И у меня например синхронизация происходит раз в сутки. Так что я считаю экономия должна быть.


      1. Alexeyslav
        04.06.2019 13:23

        Это экономия на спичках. У вас потребление подскакивает раз в сутки, а то что они жрут 80мА круглосуточно, это ничего… не там экономите!
        nrf24l01 это платка 1x2см и самое габаритное там это выводы… GPS модуль и тот больше, не говоря об ардуине. Туда кстати можно вариант NANO без USB-интерфейса.


  1. ProstoUser
    04.06.2019 11:40

    Хм… GPS модуль есть, а в чем проблема часовой пояс по умолчанию не +3 делать, а по координатам определять?


    1. Alexeyslav
      04.06.2019 12:00

      А что по координатам определить? Зоны часовые имеют сложную конфигурацию, в контроллере надо держать все эти полигоны… а где их взять(координаты точек полигонов)? что делать на границах полигонов?


      1. deema35 Автор
        04.06.2019 12:43

        Также нужно помнить о постоянных изменениях в законодательстве. Зимнее время то отменяют то оно снова возвращается.


        1. ProstoUser
          04.06.2019 13:35

          А как же! Обновления прошивки и т.п.


      1. ProstoUser
        04.06.2019 13:35

        Ну да. Полигоны с непонятно какой точностью. Думаю, точность будет ограничена размером памяти. Где координаты взять — вопрос интересный. Если озаботиться, думаю, проблем не будет. Это же границы стран-областей.
        В любом случае будет нужна ручная корректировка, а результата никто не заметит — у тебя просто с самого начала правильное время. Да. Продуманный GUI он такой. Его не видно :-)


    1. iliar
      04.06.2019 13:16

      Имхо. Излишний функционал для дома. Для этого тебе нужно будет в память устройства занести карту часовых поясов. При этом это должна быть именно карта, а не просто если долгота больше 50 и меньше 60 то часовой пояс такой то, это так не работает.

      Потом получившуюся карту регулярно обновлять. Потому что не только в России правительство переодически херней страдает часовые пояса перекраивая.

      А теперь вопрос, зачем нужен этот функционал для часов которые в течении всего срока службы скорее всего даже не покинут пределы квартиры? Не проще ли один раз при запуске ввести поправку и навсегда об этом забыть?


      1. ProstoUser
        04.06.2019 13:38

        Поправку все равно надо допускать. Неоднозначности возможны в любом случае.

        И да. Это штука, которая работает один раз — при первом запуске. В разработке стоит дорого, эффекта не много. Ну, в общем, для единичного экземпляра смысла нет, но если хочется сделать устройство уровня яблочной компании, то стоит задуматься :-)


        1. drWhy
          04.06.2019 13:49

          Гаджет полезный, но уровень яблочной сейчас — это умный дом, в котором информация следует за человеком, предугадывающий запросы обитателей.


          1. ProstoUser
            04.06.2019 13:59

            Согласен на 100%!

            Именно поэтому, если делать часы, то они не должны спрашивать про часовой пояс. Они должны его предугадать. :-)


            1. Alexeyslav
              04.06.2019 14:18

              Заодно, кстати, при разработке можно математику подтянуть и геометрию. Хотел бы посмотреть код попадания точки в замкнутый произвольный многоугольник, запасся попкорном. Учитывая что в этих поясах есть анклавы…


              1. ProstoUser
                04.06.2019 15:54

                Хотел бы посмотреть код попадания точки в замкнутый произвольный многоугольник


                Ну это довольно простая задача. Берем точку заведомо внутри (можно ее задавать вместе с многоугольником) и ищем пересечения отрезка от нашей точки до той, что «заведомо внутри» со всеми сторонами многоугольника. Если число пересечений 0 или четное — мы внутри. Если нечетное — снаружи. Анклавы при этом учитываются как отдельные области.


                1. Alexeyslav
                  04.06.2019 16:01

                  Выглядит как-то сомнительно. Точку ещё брать, пересечение со сторонами… разбить на треугольники и искать попадание интересующей точки в них. Нашли хотябы один — можно заканчивать перебор досрочно.


                  1. ProstoUser
                    05.06.2019 15:48

                    Выглядит как-то сомнительно. Точку ещё брать, пересечение со сторонами… разбить на треугольники и искать попадание интересующей точки в них. Нашли хотябы один — можно заканчивать перебор досрочно.


                    Треугольники не учитывают аклавы. Кроме того, треугольники хорошо работают с выпуклыми многоугольниками и гораздо хуже в впуклыми. Ну и последнее — как определять попадание точки внутрь треугольника?


                    1. Alexeyslav
                      06.06.2019 15:18

                      Как раз в случае треугольников не надо беспокоится об анклавах — надо только правильно описать многоугольник разделив его на треугольники, а для треугольника форма только одна и попадание более определённое. Конкретные алгоритмы можно уже найти в интернете, или посидеть немного в математике.


                1. iig
                  04.06.2019 16:03

                  Ну это довольно простая задача.


                  На ардуине? ;)


                  1. ProstoUser
                    05.06.2019 15:50

                    Ну а какие проблемы? Для анализа одного отрезка надо всего лишь решить уравнение — одно деление и штук 5 умножений/сложений и 4 сравнения максимум.


                    1. iig
                      05.06.2019 15:58

                      Да никаких, памяти просто мало. А карту координат вершин многоугольников надо где-то хранить.


                      1. ProstoUser
                        05.06.2019 17:40

                        Это от точности зависит. Если как-то грубо, то не особо много и нужно :-)


                        1. iig
                          05.06.2019 17:53

                          Если грубо — можно резать глобус по параллелям и не морочить голову ;). Кому повезло — система угадает таймзону правильно. Кому не повезло — зададут вручную.


  1. psinetron
    04.06.2019 12:03

    Интересный GPS модуль вы взяли. У меня опыт только с NEO-6 имеется. В принципе неплохой. Как с качеством приема у вашего? Он значительно дешевле, а я люблю дешевое )


  1. melodictsk
    04.06.2019 12:47

    А можно было просто взять самый дешёвый смартфон с жпс на борту, где уже всё есть. Найти подходящую софтину с отображением большего циферблата и всё. Или вообще планшет.


    1. deema35 Автор
      04.06.2019 12:47

      Ну это-же очень скучно.


      1. iig
        04.06.2019 12:55

        Ну это-же очень скучно.

        В современных часах самое интересное это корпус. Нескучные часы без лютого оверинжениринга сложно придумать.


    1. Alexeyslav
      04.06.2019 13:32

      И лицезреть тонны рекламы, выгоревший дисплей через пол года и вспухший аккумулятор…


      1. iliar
        04.06.2019 13:45

        Ну если так хочется, то ПО для отрисовки часов можно написать своё и без рекламы.


        1. POS_troi
          04.06.2019 16:15

          Многие вон не осиливают даташит на транзистор прочитать а-то они будут в разработку под мобильные ОС чот вникать :)


        1. Javian
          04.06.2019 16:30

          Красивые точные часы из старого смартфона
          habr.com/ru/post/443052


  1. augorelov
    04.06.2019 13:05
    +1

    deema35, схему электрическую другие любители DIY для повторения должны разбирать по фотографиям с цветными проводками?


    1. Alexeyslav
      04.06.2019 13:31

      А как же получение навыков по реверс-инженерингу? В конце концов, там стандартные шилды, подключение стандартное а к каким выводам(там где есть выбор) подсмотреть можно в коде программы или назначить более удобные свои.


      1. deema35 Автор
        04.06.2019 13:56

        Электрическая схема в подобных устройствах просто будет показывать куда какая нога arduino подключена. Но эту информацию можно узнать и из прошивки. Смотрите файл define.h на гитхабе.


    1. drWhy
      04.06.2019 13:38

      Опередили. Можно опубликовать статью «Реверс-инжиниринг GPS часов на Arduino»


    1. augorelov
      04.06.2019 13:41

      Alexeyslav и drWhy, вы знаете толк в извращениях;)



  1. Max-812
    04.06.2019 22:32
    +1

    Парни. :) Человек сделал для себя ИГРУШКУ. Как хотел. Не надо ему рассказывать, как ее лучше было сделать с оптимальной точки зрения, не превращайте игрушку в работу.


    1. olartamonov
      05.06.2019 08:05

      Если он её сделал для себя, то зачем он нам рассказывает все эти душещипательные подробности про стоимость электронных компонентов на алиэкспрессе? Он предполагает, что нам это будет интересно?


      1. iig
        05.06.2019 11:17

        Он предполагает, что нам это будет интересно?


        Вы обратили внимание — значит вам интересно ;)
        Считайте это экономической частью пояснительной записки к проекту :D


        1. olartamonov
          05.06.2019 11:22

          Считайте это экономической частью пояснительной записки к проекту :D


          Я стартаперов, выходящих с очередного их конкурса радостными «такой-то сказал, что у нас всё отлично и пожелал не останавливаться!», всегда спрашиваю — «а денег при этом дал?».


      1. Max-812
        05.06.2019 18:34

        Вам или мне — не будет. Кому-то другому — вполне может быть. :)