Часы, которые не убегают

Всё началось с того, что меня достали вечно убегающие китайские часы. Причём не на секунды, а на минуты. Когда за полгода часы убегают на 8 минут (реальная цифра) — это бесит.
И я решил это исправить.
Ок, раз такого нету — попробую сделать сам. С контроллером сразу всё было понятно — ESP32 — дешево, сразу есть куча библиотек. Но — если брать не голый модуль, а готовый контроллер, то он довольно габаритный и резко увеличивает толщину готового изделия. И тут я подумал — а почему бы не разделить контроллер и индикатор? В таком случае контроллер может спокойно лежать рядом с блоком питания (а для LED индикации он нужен в любом случае), а от него до блока индикации пойдёт тонкий провод с питанием и управлением. Ок.
Сначала я начал прорабатывать вариант «готовые семисегментные индикаторы + многоканальные LED контроллеры со стабилизацией выходного тока». Получалось не очень. Во-первых, большие индикаторы довольно дороги. А во-вторых — они неожиданно толстые. Получалось дорого и громоздко.
Следующим вариантом стало «самодельные семисегментные индикаторы на SMD светодиодах + многоканальные LED контроллеры со стабилизацией выходного тока». Уже лучше. Но вылезла неожиданная проблема — для равномерной засветки на сегмент надо вешать по два светодиода. Если их вешать последовательно, то требуемое напряжение становится больше 5 вольт, а это резко усложняет запитывание системы. Если вешать параллельно, то какой смысл ставить драйвера со стабилизацией тока?
И тут я подумал — зачем мне драйвера — сейчас же есть куча адресуемых светодиодов WS2812 в маленьких SMD корпусах. Три провода, любой цвет, компактный корпус. То, что надо.
Далее я засел в Autodesk inventor и нарисовал корпус, так как исходил именно от желаемой формы сегментов. Я воспользовался тем, что в моём распоряжении есть двухголовый 3D принтер, поэтому рассеиватели я сделал белым ABS пластиком, а основной корпус — чёрным ABS пластиком. Получилось как-то так:
Далее я экспортировал слой с контурами плат, сегментов и расположением светодиодов в Kicad и нарисовал платы. Платы получились очень простые и я радостно заказал десяток плат у китайцев.
Получив платы я начал их паять и понял, что крепко лажанулся. Дело в том, что стандартный footprint для светодиода WS2812 в корпусе 3528 рассчитан на запайку в печке. И припаять его паяльником даже с самым тонким жалом почти невозможно — площадки почти не выступают из-под корпуса.
Убив с десяток светодиодов я пошёл на поклон к знакомому мастеру, который мне с помощью подогреваемого стола и какой-то матери напаял светодиоды на две платы.
Собрав всё это в кучу и набросав простейший скетч на GyverNTP и FastLED я таки получил свои первые часы. И это даже работало. Надо было делиться достижениями с народом. Но в варианте с 3528 это было нереально.
Первое, что я сделал — купил такие же светодиоды в корпусе 1209. Несмотря на название они буквально на полмиллиметра меньше 3528, что и позволило их запаивать ручками. Ок. Можно делиться.
Так как передняя часть печатается двумя пластиками, то после импорта STL в слайсер надо пометить грани, которые должны быть белыми. Я использую Snapmaker Luban, там этот инструмент называется Mesh Painting. Готовый файл для Luban после разметки лежит вместе с STL файлами.
После печати получаем переднюю и заднюю части. В переднюю часть вбиваем медные вставки M3X4X4mm под винты крепления плат. В результате должно получиться примерно так:

Напаиваем светодиоды и конденсаторы по питанию. Конденсаторы можно не ставить — у меня успешно работала плата и без них. Но с ними как-то спокойнее.
ВНИМАНИЕ: распиновка светодиодов у разных производителей РАЗНАЯ. Перед запайкой обязательно проверьте, что положение светодиода правильное.
С 3528 получается как-то вот так:
С 1209 — вот так:
Я подпаивал трехконтактный хвостик с разъемом, но если надо большую длину, то можно прямо напаивать трехпроводный плоский кабель соответствующей длины.
Со стороны ESP32 на этот кабель обжимается обычный трёхконтактный Dupont разъем. Я когда-то покупал набор, взял из него.
Следует помнить, что со стороны индикатора последовательность GND-DATA-VCC, а со стороны ESP32 — VCC-GND-DATA — не забываем правильно перекинуть линии. Кроме того, не забываем, что Dupont можно вставить любой стороной — обязательно вставляем ПРАВИЛЬНО
Временно прикручиваем платы на переднюю часть корпуса короткими винтами M3x6 и соединяем их короткими проводами. Должно получиться как-то так:
Разбираем и с использованием винтов M3x10 окончательно собираем индикаторную часть. Готово.
Печатаем для неё кожух
Скручиваем половинки винтами M3x10 — они просто входят в пластик, но так как нагрузки нет, то держатся довольно неплохо.
В кожухе заранее предусмотрено отверстие под dupont разъем с питанием и данными.
Остальные отверстия сделаны под датчик освещенности для автоматической регулировки яркости, но эта часть в программе пока не реализована — можете потом добавить сами.
Сделано под датчик
В Arduino для него надо выбрать плату DOIT ESP32 DEVKIT V1 и соответствующий COM-порт.
Нужно установить библиотеки GyverNTP и FastLED, в WiFi.begin задать имя и пароль точки доступа. Если надо — поменять часовой пояс — сейчас стоит +3. Можно поиграться с цветом и яркостью. Всё, грузим в плату.
Скетч простой как гвоздь, так что можно свободно менять что угодно — яркость, цвет, алгоритм и т.д. и т.п.
Ну вот, собственно, и всё. Если есть вопросы — спрашивайте в комментах — отвечу там же или добавлю в статью.

И я решил это исправить.
Как я до этого дошёл (предыстория)
Для начала я составил для себя список — что я хочу. И вот что получилось:- индикация — семисегментные светодиодные индикаторы не менее 40 мм высотой — чтобы ночью было видно время с кровати
- синхронизация от NTP
- умеренная толщина, чтобы можно было вешать на стену и это не смотрелось бегемотом
Ок, раз такого нету — попробую сделать сам. С контроллером сразу всё было понятно — ESP32 — дешево, сразу есть куча библиотек. Но — если брать не голый модуль, а готовый контроллер, то он довольно габаритный и резко увеличивает толщину готового изделия. И тут я подумал — а почему бы не разделить контроллер и индикатор? В таком случае контроллер может спокойно лежать рядом с блоком питания (а для LED индикации он нужен в любом случае), а от него до блока индикации пойдёт тонкий провод с питанием и управлением. Ок.
Сначала я начал прорабатывать вариант «готовые семисегментные индикаторы + многоканальные LED контроллеры со стабилизацией выходного тока». Получалось не очень. Во-первых, большие индикаторы довольно дороги. А во-вторых — они неожиданно толстые. Получалось дорого и громоздко.
Следующим вариантом стало «самодельные семисегментные индикаторы на SMD светодиодах + многоканальные LED контроллеры со стабилизацией выходного тока». Уже лучше. Но вылезла неожиданная проблема — для равномерной засветки на сегмент надо вешать по два светодиода. Если их вешать последовательно, то требуемое напряжение становится больше 5 вольт, а это резко усложняет запитывание системы. Если вешать параллельно, то какой смысл ставить драйвера со стабилизацией тока?
И тут я подумал — зачем мне драйвера — сейчас же есть куча адресуемых светодиодов WS2812 в маленьких SMD корпусах. Три провода, любой цвет, компактный корпус. То, что надо.
Конструирование
Изучив то, что есть на Aliexpress я выбрал вариант корпуса светодиодов — 3528. Как мне казалось — он достаточно маленький чтобы вписаться в сегмент, но при этом еще не настолько маленький, чтобы его нельзя было паять обычным паяльником. Как потом оказалось — это был неудачный выбор.Далее я засел в Autodesk inventor и нарисовал корпус, так как исходил именно от желаемой формы сегментов. Я воспользовался тем, что в моём распоряжении есть двухголовый 3D принтер, поэтому рассеиватели я сделал белым ABS пластиком, а основной корпус — чёрным ABS пластиком. Получилось как-то так:

Получив платы я начал их паять и понял, что крепко лажанулся. Дело в том, что стандартный footprint для светодиода WS2812 в корпусе 3528 рассчитан на запайку в печке. И припаять его паяльником даже с самым тонким жалом почти невозможно — площадки почти не выступают из-под корпуса.
Убив с десяток светодиодов я пошёл на поклон к знакомому мастеру, который мне с помощью подогреваемого стола и какой-то матери напаял светодиоды на две платы.
Собрав всё это в кучу и набросав простейший скетч на GyverNTP и FastLED я таки получил свои первые часы. И это даже работало. Надо было делиться достижениями с народом. Но в варианте с 3528 это было нереально.
Первое, что я сделал — купил такие же светодиоды в корпусе 1209. Несмотря на название они буквально на полмиллиметра меньше 3528, что и позволило их запаивать ручками. Ок. Можно делиться.
Конструкция
Корпус
Корпус состоит из двух частей — передней и задней. Исходные файлы в формате Autodesk Inventor лежат тут, а готовые STL модели тут.Так как передняя часть печатается двумя пластиками, то после импорта STL в слайсер надо пометить грани, которые должны быть белыми. Я использую Snapmaker Luban, там этот инструмент называется Mesh Painting. Готовый файл для Luban после разметки лежит вместе с STL файлами.
После печати получаем переднюю и заднюю части. В переднюю часть вбиваем медные вставки M3X4X4mm под винты крепления плат. В результате должно получиться примерно так:

Платы
Плату рисовал в KiCad 9.0, все исходники здесь. Там же лежат два готовых zip файла с герберами для заказа. Без номера — исходная версия, которую можно увидеть на фото. С постфиксом V2 — новая версия, рассчитанная под ручную пайку с кастомным footprint. Заказать я их уже заказал, а получить и проверить еще не успел. Поэтому пока выкладываю обе версии.Напаиваем светодиоды и конденсаторы по питанию. Конденсаторы можно не ставить — у меня успешно работала плата и без них. Но с ними как-то спокойнее.
ВНИМАНИЕ: распиновка светодиодов у разных производителей РАЗНАЯ. Перед запайкой обязательно проверьте, что положение светодиода правильное.
С 3528 получается как-то вот так:


Со стороны ESP32 на этот кабель обжимается обычный трёхконтактный Dupont разъем. Я когда-то покупал набор, взял из него.
Следует помнить, что со стороны индикатора последовательность GND-DATA-VCC, а со стороны ESP32 — VCC-GND-DATA — не забываем правильно перекинуть линии. Кроме того, не забываем, что Dupont можно вставить любой стороной — обязательно вставляем ПРАВИЛЬНО


Контроллер
Готовим часть контроллера. ESP32 я покупал здесь.Печатаем для неё кожух
Скручиваем половинки винтами M3x10 — они просто входят в пластик, но так как нагрузки нет, то держатся довольно неплохо.
В кожухе заранее предусмотрено отверстие под dupont разъем с питанием и данными.
Остальные отверстия сделаны под датчик освещенности для автоматической регулировки яркости, но эта часть в программе пока не реализована — можете потом добавить сами.
Сделано под датчик
Прошивка
Основной скетч лежит здесьВ Arduino для него надо выбрать плату DOIT ESP32 DEVKIT V1 и соответствующий COM-порт.
Нужно установить библиотеки GyverNTP и FastLED, в WiFi.begin задать имя и пароль точки доступа. Если надо — поменять часовой пояс — сейчас стоит +3. Можно поиграться с цветом и яркостью. Всё, грузим в плату.
Скетч простой как гвоздь, так что можно свободно менять что угодно — яркость, цвет, алгоритм и т.д. и т.п.
Ну вот, собственно, и всё. Если есть вопросы — спрашивайте в комментах — отвечу там же или добавлю в статью.

UPD 22/08/2025
Сделан вариант с секундами. Все файлы сейчас подготовлю и выложу туда же.
Самые обсуждаемые обзоры
+149 |
7006
120
|
+78 |
3968
106
|
+30 |
2082
70
|
+52 |
1899
45
|
Блин… сколько лет прошло…
— Пульт ДУ от любой техники. В режиме обучения запоминает нажатые кнопки и потом можно управлять. Руками выставить время/дату и корректировки к аналоговому датчику давления, цифровую подстройку точности хода, ну и эти режимы отображения. Можно полностью погасить табло.
— 2 датчика DS18B20
— Аналоговый датчик давления, отдельно ОУ для выделения атмосферного диапазона
— Главная фишка — автоматическая регулировка яркости высокочастотным ШИМом (нет мерцания). Заложена таблица интенсивности, адаптированная под глаз человека. Цифры стоят как нарисованные и с выключенным светом, и со включенным, немного теряют яркость при прямых солнечных лучах — просто индикаторы не вывозят.
— Синхронизация времени по UART, но уже отдельным устройством.
Пы.сы. у esp8266 нету аппаратного шим, а программный сжирает очень много ресурсов.
MAX7219 мне не нравится отсутствием независимого управления индикаторами, сборка из 595 + ШИМ на их OE выводы (легко на 10кГц работает) на мой вкус более гибка
Эксперименты показали, что в темноте при беглом движении глаза видно до 2кГц. Опять не то :)
В самом низу заметна. В процентах не помню, в значениях счётчика где-то до 10 было заметно. Если пересчитать в проценты линейно, это примерно 4%
У меня без задержек вообще было. Нормально работало. Единственное, что напрягало, в темноте при просмотре телека датчик реагировал на пульт как на фонарь, и они ярко мерцали в такт импульсам :)
Помню, когда то купил конструктор на люминесцентных одиночных индикаторах, естественно — без БП.
А так как БП было делать лениво, запитал от розетки, по схеме параметрического стабилизатора с балластным конденсатором, на накал в качестве стабилитрона — несколько диодов в прямом включении.
Работало ровно до тех пор, пока мне не потребовался вдруг диод, я ненадолго его оттуда выпаял, а потом, естественно, забыл про это и включил.
Так бы до сих пор работали…
2. Белое свечение на белом фоне среди черного имеет малый контраст, не хватает дымчатого светофильтра или печати чем-то более темным.
3 Не думаю, что маленький модулек esp32c3 mini увеличил бы толщину, зато питать можно было бы от любого зарядника без колхозного провода.
3. Существенно усложняется плата и растёт толщина. Если не нравится стандартный цветной трехпроводный, то есть куча вариантов — от тонкого прозрачного трёхпроводного (используется для гирлянд на WS2812) до провода от старой мыши (тонкий, гибкий и 4 провода внутри).
2. А при темных несветящихся сегментах и на солнце хорошо видно было бы.
3. Не очень понял, просто на плату ставится маленький модулек плоский и фсе, TypeC его наружу. Все равно между рассеивателем и светодиодами нужно расстояние для равномерной светимости и оно видно внутри корпуса. Модулек 22*18, на взгляд примерно чуть побольше и есть от сегмента до края корпуса.
2. Возможно. Можно будет попробовать взять прозрачный ABS — вроде был. Но пока и такой вполне устраивает — никаких проблем с читаемостью я не испытываю.
3. Насколько я помню FastLed не поддерживает ESP32C3. И места там недостаточно (~15мм), надо расширять. И, самое главное, для меня это вообще не проблема. Найти красивый тонкий прозрачный трехжильный провод элементарно. Так как блок питания всё равно нужен, то маленькая коробочка с ESP32 болтающаяся где-то рядом с ним никому не мешает
Это так, скорее дополнение и информация к размышлению для других…
Вообще, думаю самый правильный вариант самодельного индикатора – это эпоксидная смола с порошком диффузантом типа ДФ-151. Тут её можно было бы прямо в чёрный корпус отлить вместо второго пластика.
Я думал просто выкинуть родную плату и вкорячить туда кастомную (если бы умел их делать)), а корпус оставить заводской с большими сегментами.
1) В организации поднимаем свой NTP сервер и скармливаем ему пул серверов. NTP сервер умеет одновременно синхронизироваться с множеством NTP серверов при этом имеет механизмы определения качества, то есть даже если какой то один из пула отказывает или начинает сбоить, то он просто исключается из обработки.
2) Все устройства в организации настраиваются на работу именно с этим NTP сервером. Что позволит во первых снизить поток исходящего трафика, уменьшит вероятность того, что тебя блокнут ну и возможность централизованной настройки.
3) Для полного феншуя добавляем в сеть свои сервера уровня stratum 1. Чтобы даже при отключении интернета синхронизация не терялась.
Поздравляю мы прекрасны. У нас надёжное точное время. При этом описанные мной шаги не такие уж сложные. И при желании могут быть реализованы даже в контексте инфраструктуры умного дома.
А знаешь в чём прикол. Описанная мной схема от такого тоже защищает. В NTP сервере уже есть механизмы выявления сбойных серверов. То есть если интернет сервера будут работать как то странно (замечу не «перестали работать» а просто «как то странно») то приоритет будет отдан локальному stratum 1 серверу.
Ну ка, ну ка. Очень интересно посмотреть на RCT которые не убегают. Даже атомные часы со временем убегают (хоть и ОООООЧЧЧЕЕЕЕНЬ медленно) а тут какая то микросхемка и будет идеально стабильной. Верю. Верю.
363 active servers!!! Счастье для всех, даром, и пусть никто не уйдёт обиженным! ©
звонки в техподдержку традиционно свелись к тому, что «сами дураки», мол у них всё работает. достучался до конкретных одминов, дал доступ к локали. 123 порт убедились, что не работает. пообещали разобраться.
неделю чего-то там возились. иногда взлетало, но через небольшое время опять падало. ещё около десятка звонков. а ничего не работает. причём инет есть. stratum сервера доступны, но не по 123 порту… всё остальное работает как часы, а вот ntp нет… для простоты понимания, объект — отель на пару десятков номеров со смарт тв на андроиде и предустановлеными проплаченными тв приложениями типа винка, смотрёшки и т.п. имя им легион…
сердце успокоилось сменой провайдера. другой провайдер притащил свою оптику за шапку сухарей и проблем нет…
а вы так сразу рассуждать… и никакой хакерской атаки не надо ))
Далее проблема зависимости NTP от качества интернета действительно есть. Однако повторюсь NTP сервер не просто корректирует своё время, а рассчитывает поправку к скорости хода внутренних часов, так чтобы они точно шли. Поэтому при промадении синхронизации сервер ещё долгое время способен ходить точно.
Далее если это сильно важно, то NTP можно резервировать альтернативными решениями не связанными с интернетом.
Ну и главное. Потеря синхронизации легко детектируется. Ты понимаешь что что-то сломалось и идёшь это чинить. Проблема обычных часов в том, что часы показывающие точное время и часы показывающие погоду на марсе внешне выглядят одинаково. Обычные часы тебе никогда не скажут «ты на меня на смотри, я тебе фигню показываю»
Например, в наручных Casio у меня сделано именно так. Только наоборот — пока горит знак, то синхронизация в порядка. Как потух — можно проверять. За 4 года таких сбоев можно по пальцам одной руки пересчитать. А синхронизация зачем-то 3 раза в день.
Уже лет 6 работают трое часов с ntp, уже и забыл, когда в их вебку залазил. Включили вайфай, отсинхрониировались и обрубили вайфай до следующей синхронизации, зря в сети не висят
а вот откуда гарантии, что чей-то сервер будет всегда работать и выдавать правильное время — это тоже хороший вопрос. тоже касается и любых эфирных источников.
не говоря уж, что эти часы для подключения к другой точке доступа и вовсе надо перепрошивать. то еще удобство.
И у ВНИИФТРИ есть свои NTP сервера. И вот что-то мне подсказывает, что за точностью NTP серверов в метрологическом институте специализирующемся над поддержанием работы национального эталона времени нормально следят. Я бы даже сказал, что не так уж много способов получить более точное время. А доступных способов ещё меньше. И ВНИИФТРИ даёт время всяко точнее чем ты можешь получить сверяя время с телевизором (или откуда сейчас люди не признающие современные технологии узнают точное время).
З.Ы. Но с учётом, что затык и с белого адреса присутствовал, да ещё и в масштабах всей страны, явно проблема была не в частоте запросов. Я склоняюсь к версии о вредителях из РКН.
С ntp думается с разными время будет разным на какие-нибудь микросекунды…
Хотя учитывая, что мы говорим о часах и ошибка синхронизации не копится (что нельзя сказать про RTC где ошибка копится), то звучит приемлемо.
Эти часы зачем-то и как-то показывают секунды :)?
Я, бывало, три раза за ночь встречал — по иркутскому, по московскому и по варшавскому времени.
Сейчас точное время у каждого в мобильнике, но мне кажется, что все на точность уже давно забили.
Но это при стабильной комнатной температуре.
И, конечно, DS3231SN (не M).
Одна за 4 года на секунду ушла.
Другая может на минуту за год уйти. Китай такой китай.
Но даже при условии, что она точная, настраивать время вручную — удовольствие сильно ниже среднего. Я так вовсе ненавижу.
нынче модны «часы» которые нельзя настраивать вручную — они этого просто не поддерживают. правда после включения и до момента их пинка от «сервера» они часами быть вообщем-то перестают совсем.
Вот такие примерно:
В тех часах, что на фото, именно для этого ставится CR2032 — чтобы при отключении питания часы не сбивались.
Правда, в одних часах из двух — они немного разные — со схемой что-то намудрили, батарея влет разряжается, но настолько лениво все это разбирать и смотреть…
Не настолько часто свет отключают, чтобы заморачиваться :)
А так, когда сторублёвые китайские часы начали сильно врать, поменял на них кварц и стали более-менее точно ходить.
DCF-77
Только у меня редко и в пасмурную погоду.
RST и OREGON станции
Больше не надо ждать пасмурную погоду
Но в один прекрасный день — затеяли ремонт в комнате. И на время ремонта — переехали в другую. У которой окна на запад и нет соседних зданий. На этих часах у меня был настроен будильник (смарофонов тогда еще не было, да и телефоны были далеко не у всех). Ночью эта хрень таки поймала сигнал, синхронизировалась по нему и будильник сработал на 2 часа раньше (спасибо что не позже)
В России тоже есть передатчики точного времени, но ни одних потребительских часах не встречал с поддержкой нашего стандарта. А вот DCF77 довольно популярные, особенно от европейских брендов.
Готовых приёмников российских систем тоже не видел, но при желании не сложно поймать на гвоздь и любым микроконтроллером разобрать, сигнал у всех этих систем целенаправленно примитивный.
сигналом обновляют значение времени.
На территории Европы центры трансляции сигнала находятся в городе
Майнфлиген, Германия и в городе Анторн, Англия. Сигнал
распространяется в радиусе 500км. На расстоянии более 1500 километров
сигнал может быть слабым.
В Соединенных Штатах Америки центр трансляции сигнала находится в
городе Форт Коллинз. Сигнал распространяется в радиусе 1000 км. На
расстоянии более 3000 километров сигнал может быть слабым.
В Японии центры трансляции сигнала находятся в городах Фукушима и
Фукуога/Сага. Сигнал распространяется в радиусе 500 км. На расстоянии
более 1000 километров сигнал может быть слабым.
В Китае центры трансляции сигнала находятся в городе Шанкиу. Сигнал
распространяется в радиусе 500 км. На расстоянии более 1500 километров
сигнал может быть слабым. На расстоянии 500 км от данного города располагаются города Шанхай и Бейжинг, на расстоянии 1500 км – Гонконг, Чанчун и Ченгду.
Транслируемый сигнал также зависит от природных условий, атмосферного
давления
и температуры. На ослабление сигнала могут также повлиять следующие
факторы:
нахождение часов вблизи телевизора, компьютера, бытовой техники,
нахождение в метро или туннеле,
нахождение в аэропорту, железнодорожном вокзале, дороге скоростного
движения,
близость радиостанций или станций передачи сигналов,
электростатическое напряжение.»
Название города на российских картах — Шанцю, по китайским меркам очень провинциальный, хотя население за 7 млн. человек, ну да, ещё бы)).
Фишка в том, что я живу в 2 тыс. км. от сего славного городка, в небезызвестном ДВФО и часы у меня достаточно регулярно синхронизируются, раз в неделю-то минимум, но, возможно и чаще, редко проверяю, поначалу ежедневно смотрел. Вот и сейчас показывают время последней синхронизации 1:03, в ночь на 8 августа — сегодня.
Инженерам Casio, вероятно, было бы интересно.
Если что, живу в деревне, ЭМИ здесь послабее, чем в городе, хотя вышек сотовиков хватает, но и частоты у них кардинально иные, чем используют часики.
Не знаю, как они это делают(так, как сервера синхр. разные). но период. в Москве идет подлог.
Кто с видеонабл. работает. те уже попадали))
когда архив есть, записи есть а событий нет! Время пропало (остановилось) на 6ч)))
Синхронизация стояла раз в час.
А потом перепрыгнуло и пошло дальше.
У меня да же телек LG отказался на днях VK видео показывать.
Ругается, сертификат бла-бла…
Оказывается год перепрыгнул))) (стояла авт. синхр.)
ну и по нескольку раз в день. я по аэр. Шереметьево катаюсь.
Но это уже «классика»…
За 20+ лет проблем не замечено…
Зачем провайдеру банить NTP-сервера?
Кстати по хорошему время при синхронизации не должно резко прыгать. Правильные решения не меняют время, а корректируют скорость течения системного времени таким образом, чтобы время системы плавно «догоняло» истинное время.
Если я не ошибся в вычислениях :)
ссылка
А так — если на первом месте необходимость наличия часов, а не руки чешутся DYI заняться — практически идеальный вариант. И габариты, и функциональность, и внешний вид можно настроить по-всякому, и даже авторегулировка яркости «из коробки» (если в телефоне имеется).
надо делать на ламповом VFD от «дисплея покупателя»
cxem.net/arduino/arduino275.php
или на газоразрядных советских ИН-ках.
в обоих случаях DS3231 в качестве точного источника времени дает отличную точность хода часов.
Правда, у меня их 60+ штук…
https://aliexpress.com/item/1005006065308262.html
Для сегментных экранов мне нравится другое решение. Печатать лицевую поверхнось тонким слоем. Если светодиоды явркие, то прозрачности пластика достаточно, чтобы цифры через него было видно, при этом выключенные сегменты совершенно не отличимы от фона. Что улучшает читаемость.
10 плат обошлись в 16$
И синхронизация, доступная каждому:
или
это для которой нормируются отклонения в десятые герца? минут до 5 в сутки, или больше суток в год?
Если бы они в сутки на 5 мин отставали или в месяц их бы прекратили выпускать.Но нет выпускали лет 40.
а что выпускали всякую хрень — так исключительно из экономии, кварц денег стоит, и делитель на логике с его даже если килогерц — тоже. а вовсе не потому, что она хорошо работала.
База ATmega88 + PCF2129AT (остатки от эпохи халявных образцов), NTP на базе ESP-01, датчик освещенности, подключаемый термометр/гигрометр на DHT22, резервное питание на 18650 (примерно на пару суток). Индикаторы 1.8" на светодиодах 0603 (по 5 последовательно, питание от MT3608), 74HC595 + ULN2003 (независимое управление яркостью каждой цифры и вертикальных точек).
Перед экраном матовая тонировочная пленка с али, контраст даже на минимальной яркости отличный.
Тоже решил раздельные платы заказывать для экономии, но оно себя не оправдывает, трудоёмкость разработки корпуса и сборки существенно возросли, а разница в цене по итогу для разовой поделки была минимальная.
Если уж упираться в esp, то всяко проще будет взять модуль esp32 с бОльшим набором выводов и не страдать фигнёй. Но мне нравятся avr, работать с ними приятно, свою работу выполняют, на есп тут вообще ничего не завязано, если убрать, просто будет пропускать синхронизацию по таймауту и дальше работать на достаточно точных rtc
И белые рассеиватели тоже печатали на принтере с 2 головами или отдельно печатали и вставляли?
Наверняка есть дешевле, искать можно по ключевым словам из названия ссылки
Печаталось раздельно, потом «запрессовывалось»
Очень здорово вышло, только после очень внимательного разглядывания несколько небольших щелек нашел.
ИМХО у каждого в хозяйстве такое найдется. А не найдется — на авито можно купить за 500р.
Я хочу переделать под платы 100*100, чтобы уж не пропадать добру.
На самом деле это мой первый проект в KiCad, я с большим трудом понимаю его идеологию, поэтому получилось довольно кривовато. Если масштабировать, то проще с нуля переделать.
и есть из стандартного 500-рублевого конструктора на stc15w408 + ds1302. сделал два варианта, один с дешевым gps-модулем, и второй — с таким же esp8266, который берет время с ntp и отдает по nmea, как gps. модуль просыпается раз в несколько часов, синхрится и впадает в спячку. а самим часам при проблемах с питанием ионистора хватает на несколько дней. за пять лет время выставлять не приходилось. фотки, прошивки, доки есть на гитхабе — github.com/zerog2k/stc_diyclock/
А чем не устраивают обычные часы для ванной — если набрать это в поиске в озоне будет куча вариантов?
Раз в неделю включил, отсинхронизировался и выключил.
Сделать можно. Но малопотребляющие девайсы требуют вдумчивого программирования и отладки.
Esp32 совершенно не проблема, как и вайфай. Вам не надо быть онлайн, вам надо раз в месяц время подвести… На это батареек хватит. Остальное время от rtc.
А зойчем — непонятно.
Тот же монитор — у него там внутри те же плёнки с ЖК.
За единицу площади стоит на порядок дешевле.
Ну почему просто не делать ЧБ экраны на просвет/отражение на ЖК?
Зачем кормить эту проприетарь с их «электронной бумагой»!?!?!
Про ESP — я однажды запустил эту штуку, и когда ей питания от USB не хватило для запуска с этим вашим вайваем, то забыл про её существование. Для тупых устройств есть более предсказуемые решения.
Делайте сами, раз сами с усами :))), переубеждать в чем-то смысла не вижу.
p.s. За рукоблудство однозначно лайк, когда человек что-то делает, это завсегда хорошо!
Или, если хочется черные — можно переднюю морду напечатать в один слой таким паттерном с небольшой недоэкструзией, чтобы она была вся в микродырочку (линия заполнения с большим количеством изгибов будет давать сквозные дырдочки в местах изгибов)
https://aliexpress.com/item/1005007357553514.html
https://aliexpress.com/item/1005008532153360.html
Хм… На фото в лоте не видно разъёма для подключения GPS антенны. Они точно от GPS синхронизируются?Хм. Судя по описанию там антенна внутри. Сомнительно…
habr.com/ru/articles/860828/
habr.com/ru/companies/yandex/articles/861538/
Для точной обработки времени от GNSS требуется подключить выход PPS контроллера, ко входу GPIO процессора, а в ОС настроить низкоуровневое прерывание по фронту на этом входе. Такое можно сделать в формате GNSS + Pi (или что-то подобное). Но в формате роутера… ну наверное тоже можно но уже это будет адский пердолинг со сверлением корпуса и подпаиванием проводов к плате.
вот тут нагородили схему с ntp, без которого часы вообще не работают. это и сложнее и бестолковее.
а поднимать ради этого свой ntp через gps (или для чего там был роутер помянут) — это уже особо извращенный способ применения.
А по поводу времени из интернета. Я вот сейчас сравниваю между собой время от NTP серверов ВНИИФТРИ и время полученное от GNSS (с PPS). Разница составляет менее 1 мс. О каких ошибках в десятки мс от серверов из интернета ты говоришь я хз.
Примечательно, что задержка от GNSS (по USB без PPS) как раз таки может доходить до десятков мс.
Я бы больше переживал о том, как устанавливать GPS-приёмник в том тёмном углу, где обычно пылятся домашние сервера :) Там он неба не увидит, надо ещё что-то накручивать, провода пробрасывать…
Только я в упор не понимаю, зачем домашним часам такая точность. Думаю, если они будут идти с точностью 1 секунда — это выше крыши.
И да по поводу «зачем нужная милисекундная точность». Тут в соседней ветке это уже объяснял, повторюсь. NTP сервер не просто «мне сказали, что сейчас 18:53:47 значит установлю системное время как 18:53:47». Он корректирует скорость хода системных часов. Видит что внутренние часы спешат — замедляет их, видит что отстают — ускоряет. Что во первых защищает от ошибки скачков времени (например ты пишешь в базу данных логи, если между двумя записями прошла «грубая» синхронизация то более новая запись может получить таймштамп раньше чем более старая и у тебя две записи поменяются местами). Во вторых за долгое время синхронизации у тебя формируется довольно точное значение поправки именно для твоих внутренних часов. Поэтому даже после полной потери синхронизации это позволит иметь точное время достаточно долгое время. А теперь подумай повлияет ли на расчёт поправки для внутреннего генератора тот факт, что в источнике «точного» времени секунда длится от 900 до 1100 мс. В случае использования PPS сигнала, длительность импульса близка к 1 секунде с очень высокой точностью (при наличии хорошего сигнала от спутника отклонение менее 1 мкс). На основе такого сигнала можно отстроить скорость хода внутренних часов с очень высокой точностью.
Мы тут разве синхронизацию времени на мощном сервере обсуждаем? И я с первого сообщения пытаюсь это подчеркнуть. Есть у меня часы c МК, стоящие на столе, я хочу, чтобы время в них никогда не надо было подводить, подключаю к ним GPS приемник и по UART просто получаю текстовую строку, из которой извлекаю время и отображаю пользователю. И мне ГЛУБОКО плевать на то, пришла ли эта строка вовремя или на полсекунды позже, потому что в быту погрешность в пределах нескольких секунд абсолютно незаметна.
Ладно, выше там писали, что мы вставляем свисток в роутер и опрашиваем его. Удаленно, видимо. Это добавит еще до пары секунд возможной задержки. Но читаем выше — для домашних часов это некритично.
Что в этом простом сценарии может быть непонятно?
1) Если у тебя в локальной сети есть NTP сервер, то с ним может синхронизироваться не только настольные часы.
2) Если у тебя есть роутер, то вероятнее всего есть интернет. Зачем тебе платить деньги за GPS свисток чтобы получить точность хуже, чем позволяет получить NTP сервер в интернете.
3) В свете последний событий нельзя полагаться на GPS как на единственный источник точного времени.
В остальном, конечно, NTP дешевле — если есть WiFi, не надо ничего покупать дополнительного, а сервер можно поднять прямо в роутере (у меня, например, так, чтобы 3д-принтер без RTC имел возможность синхронизироваться, но не лез в интернет за новой прошивкой).
Что касается п. 3 — ни NTP, ни GPS более нельзя считать надежной технологией.
(чертежи и код синхронизации времени по GPS — на гитхабе)
Я тут ещё немного ступил: думал мы получаем данные по каждому спутнику от обычного приёмника, посмотрел — он, оказывается выдаёт обработанную информацию от всех спутников что наловил — то есть к какому-то отдельному спутнику, вызывающему доверие не присосёшься в такой ситуации :)
До сих пор модуль работает — антенна отрезок провода 50 см. Все устройства — котел Вайлант, м/ст Орегон и другие часы в квартире успешно синхронизируются.
т.к. в модуле стоит 3231 с батареей, то перебои GPS даже длиной в год — не страшны.
GPS to DCF77
Я у своих просто поменял кварц от других сломанных.
Ничего не городил от безделья.