Pull to refresh

Comments 97

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

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

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

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

Существуют GPS модули для подключения через serial или USB (c драйверами), есть также программы для установки времени использующие эти модули. Есть много проектов NTP серверов использующих Raspberry/Arduino/ESP8266/ЕSP32 (без интернета).
Есть модуль Ethernet. Собирайте Arduino + Ethernet Shield + GPS, пишите прошивку — и вот готов ваш собственный time-server. Не факт, что потянет по точности как stratum 1, но для большинства нужд хватит.
Так это не интересно, готовый девайс жеж, макетку пихнуть некуда кучу проводов то-же, на борту линух который это умеет считай из каробки :)
За то работает

^ на скрине тест сигнала PPS. Цифра показывает чему было равно системное время в тот момент когда был получен сигнал PPS. Для бытовой точности как по мне весьма недурственный результат. Гораздо лучше чем я бы смог получить с какого то сервера из интернета.
Если к компьютеру, то Ардуино не нужен. Достаточно копеечного GPS модуля на USB подключенного напрямую.
Есть опыт сборки и эксплуатации таких серверов, и там ничего сложного нет.
А зачем модули городить? Берём почти любой GPS приёмник для компа (RS232/USB). Ставим ntpd, ставим gpsd. В конфиге gpsd прописываем порт и тип GPS приёмника. В конфиге ntpd прописываем то, что время тянуть локально с gpsd. Готово, у вас свой автономный NTP сервер. Как это на виндах сделать — увы не знаю, мне такое нужно не было.
И… держим постоянно включенным комп?
>А есть ли какой-то модуль для подключения к компьютеру? Хочу NTP сервер без интернета.
А зачем подключаемый модуль для выключенного ПК?
Тогда и NTP не нужен, если время нужно для одного ПК. Точное время многим потребителям нужно — ноутбуки, роутер, планшеты, телевизор…
Для единственного ПК который перманентно в оффлайне, проще синхронизироваться вручную по сигналам точного времени раз в месяц.
Точное время многим потребителям нужно — ноутбуки, роутер, планшеты, телевизор


Зачем им точное время от специальных часов? Пока вся эта техника работает оффлайново — точности их внутренних часов на их срок службы больше чем достаточно. Если они умеют в интернет — там есть NTP.
Я давал ответ на тот комментарий. В нём упоминался модуль для компьютера. В условии не стояло десятка девайсов.
Столько проводочков паять! А если один отпаяется — найти неисправность будет очень сложно. Неужели не проще ЛУТом плату развести, заодно убрав туда линейники и прочие детальки.

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

В проекте на GITHUB скетч поместите в отдельный каталог, а то будет он цеплять всякие README.md и пр.
Зачем там 3Д модель? Если бы корпус на принтере печатался.
Качество приема напрямую зависит от расположения часов. Если они стоят на окне то спутники находятся секунд за десять. Если часы как у меня стоят далеко от окна то могут минуты три обновляться. Правда для часов это не критично. Спутники у меня ловятся только GPS возможно это зависит от настроек модуля, я их не менял какие были такие и оставил.

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

А по поводу проводчиков а мультиметр на что.
По поводу цепляния файлов. Я конечно делал проект в VS но я сейчас проверил в IDE от arduino все нормально ничего лишнего не цепляется.
GPS не требует фиксации для определения времени, достаточно всего 1 спутника, даже отраженного сигнала, чтобы приемник начал выдавать корректное время.
Только есть проблема понять, корректное ли оно.

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

А вот после перезагразки системы таки придётся ждать фиксации.
Корректность времени проверить легко — если год в дате вменяемый — значит время ±20 секунд корректное. Идеально — если принята коррекция Leap Second, но оно не особо нужно в часах без отображения секунд.
Для устройства, которое неизвестно сколько пролежало на полке в выключенном виде (может полчаса, а может пять лет), вменяемый год — это какой?..
На сколько я помню, при старте он выдает 2034 год, или около того.
Более того, при холодном старте отсчет времени у G7020 начинается с 23:59:44, где 44 потому, что вшитый Leap Second равен 16. Как только время и дата резко перескочат — приемник получил точное время (кроме Leap Second) и можно его использовать. Фиксация координат, кстати, не означает получения коррекции Leap Second и время в этот момент может оставаться неточным даже при корректных координатах.
Модуль который я использую не выдает ни какого времени пока не подключится к спутнику. Так что просто ждете когда он выдаст время и это и будет правильное время.
Ну так надо включить в настройках вывод времени и даты даже без фиксации. И ещё можно включить предложение PUBX,04, которое выдает и время, и дату, и Leap Second.
От схемы, приемника и нужной точности зависит. Если у приемника есть батарейное питание, то обычно есть и часы в 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. Это так, ворчание насчет «инженерного» подхода. Выдумали проблему на почти пустом месте.
Да тут проводочки то цветные, поэтому схема как на ладони.
Одноцветный МГТФ — наше все!
image
image
«Pentagon»
Pentagon

А «Специалист» и вовсе одножильным лакированным самозалуживающимся проводом паяли.
Вот блин, хотел «Нравится» нажать, а рука дрогнула — и все :(
И исправить — не дает.
Вот! Не зря раньше мышек и прочих тачскринов не было :)
Подозреваю, многим знакома попытка ответить на важный звонок мыльными руками.
Arduino здорового человека ;)
UFO just landed and posted this here
UFO just landed and posted this here
Нет я ничего не делал.
Первый как вы понимаете я использую для управления яркостью циферблата, а второй я использую чтобы отключать GPS модуль, конечно у него есть спящий режим но в этом режиме он отключается не полностью, поэтому я устроил ему «спящий режим» при помощи мосфета. Стоит ли отключать GPS модуль? Да стоит при включенном GPS часы потребляют 120 миллиампер а при выключенном только 80


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

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

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

Но редкий ардуинщик долетит до середины даташита на GPS, хоть он даже на русском у «Навиа» уже есть давно.
А я всё ждал когда же бомбанёт у тебя, уже тегнуть хотел :D
Не, там нет таких команд — приемник там G7020 от UBlox :)
Зачем каждые полчаса? Цель какая? Если у нас часовой кварц, то это уход на 1-2 секунды в сутки, то есть раз в 6 часов достаточно для полусекундной точности. Если у нас кварц похуже, то уход может быть на уровне 10PPM, то есть на секунду раз в 3 часа. Даже в этих условиях раз в полтора часа хватит.

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

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

Ну или вообще без всякого GPS — DCF77 какой-нибудь ловить, если территориальное расположение позволяет.
DCF77 слишком капризен вне Германии. Уже на расстоянии до Москвы его можно принять только ночью с прохождением и при отсутствии индустриальных помех. Или городить узкополосные фильтры на эту частоту, буквально с шириной полосы в 5...10Гц. Ага, и обеспечить стабильность параметров. При этом локальные часы должны держать темп автономно по меньшей мере сутки, а если им добавить элементарный ЦКХ то можно обойтись уже и без GPS.
У меня внешний модуль Oregon Scientific для BAR800 принимал вполне неплохо — правда, девятый этаж, окна на запад. Но там и антеннка в нём невыдающаяся по чувствительности.
А если «экономную» лампочку включить в комнате с приемником? И соседи пусть включат…
В нём магнитная антенна?
Приёмник на улице, это внешний блок метеостанции.
Так не важно где он, лампочка для него фонит одинаково. У меня одна лампочка закрывает часть диапазона КВ в пределах квартиры… на длинных волнах проверить просто нечем из подручного.
Я встречал лампочки, которые глушат близко расположенный приёмопередатчик на 433 МГц, но а) это были единичные марки и б) от лампочки до приёмопередатчика было сантиметров в пределах двадцати.

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

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

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

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

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


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


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

Я написал про потребление оно подскакивает на 50%. И у меня например синхронизация происходит раз в сутки. Так что я считаю экономия должна быть.
Это экономия на спичках. У вас потребление подскакивает раз в сутки, а то что они жрут 80мА круглосуточно, это ничего… не там экономите!
nrf24l01 это платка 1x2см и самое габаритное там это выводы… GPS модуль и тот больше, не говоря об ардуине. Туда кстати можно вариант NANO без USB-интерфейса.
Хм… GPS модуль есть, а в чем проблема часовой пояс по умолчанию не +3 делать, а по координатам определять?
А что по координатам определить? Зоны часовые имеют сложную конфигурацию, в контроллере надо держать все эти полигоны… а где их взять(координаты точек полигонов)? что делать на границах полигонов?
Также нужно помнить о постоянных изменениях в законодательстве. Зимнее время то отменяют то оно снова возвращается.
А как же! Обновления прошивки и т.п.
Ну да. Полигоны с непонятно какой точностью. Думаю, точность будет ограничена размером памяти. Где координаты взять — вопрос интересный. Если озаботиться, думаю, проблем не будет. Это же границы стран-областей.
В любом случае будет нужна ручная корректировка, а результата никто не заметит — у тебя просто с самого начала правильное время. Да. Продуманный GUI он такой. Его не видно :-)
Имхо. Излишний функционал для дома. Для этого тебе нужно будет в память устройства занести карту часовых поясов. При этом это должна быть именно карта, а не просто если долгота больше 50 и меньше 60 то часовой пояс такой то, это так не работает.

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

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

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

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


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


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


На ардуине? ;)
Ну а какие проблемы? Для анализа одного отрезка надо всего лишь решить уравнение — одно деление и штук 5 умножений/сложений и 4 сравнения максимум.
Да никаких, памяти просто мало. А карту координат вершин многоугольников надо где-то хранить.
Это от точности зависит. Если как-то грубо, то не особо много и нужно :-)
Если грубо — можно резать глобус по параллелям и не морочить голову ;). Кому повезло — система угадает таймзону правильно. Кому не повезло — зададут вручную.
Интересный GPS модуль вы взяли. У меня опыт только с NEO-6 имеется. В принципе неплохой. Как с качеством приема у вашего? Он значительно дешевле, а я люблю дешевое )
А можно было просто взять самый дешёвый смартфон с жпс на борту, где уже всё есть. Найти подходящую софтину с отображением большего циферблата и всё. Или вообще планшет.
Ну это-же очень скучно.
Ну это-же очень скучно.

В современных часах самое интересное это корпус. Нескучные часы без лютого оверинжениринга сложно придумать.
И лицезреть тонны рекламы, выгоревший дисплей через пол года и вспухший аккумулятор…
Ну если так хочется, то ПО для отрисовки часов можно написать своё и без рекламы.
Многие вон не осиливают даташит на транзистор прочитать а-то они будут в разработку под мобильные ОС чот вникать :)
deema35, схему электрическую другие любители DIY для повторения должны разбирать по фотографиям с цветными проводками?
А как же получение навыков по реверс-инженерингу? В конце концов, там стандартные шилды, подключение стандартное а к каким выводам(там где есть выбор) подсмотреть можно в коде программы или назначить более удобные свои.
Электрическая схема в подобных устройствах просто будет показывать куда какая нога arduino подключена. Но эту информацию можно узнать и из прошивки. Смотрите файл define.h на гитхабе.
Опередили. Можно опубликовать статью «Реверс-инжиниринг GPS часов на Arduino»
UFO just landed and posted this here
Если он её сделал для себя, то зачем он нам рассказывает все эти душещипательные подробности про стоимость электронных компонентов на алиэкспрессе? Он предполагает, что нам это будет интересно?
Он предполагает, что нам это будет интересно?


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


Я стартаперов, выходящих с очередного их конкурса радостными «такой-то сказал, что у нас всё отлично и пожелал не останавливаться!», всегда спрашиваю — «а денег при этом дал?».
UFO just landed and posted this here
Sign up to leave a comment.

Articles