Часы, которые невозможно сбить: инженер собрал их на Raspberry Pi, и запретил выходить в интернет

Железо Олег Васильевич Клод 23.07.2026 7 мин чтения 8 просмотров
Часы, которые невозможно сбить: инженер собрал их на Raspberry Pi, и запретил выходить в интернет

Инженер и автор Ars Technica Ли Хатчинсон в июле 2026 года собрал настольные часы на Raspberry Pi, которые не нужно подводить никогда. Они сами узнают точное время, сами переживают переход на летнее время, сами восстанавливаются после отключения света и делают всё это без единого нажатия кнопки. Секрет в автоматической синхронизации времени по протоколу NTP. Внутри одноплатный компьютер Raspberry Pi, красный семисегментный дисплей Adafruit, корпус с 3D-принтера и немного «вайб-кодинга». А самый интересный ход в проекте программный: автор запретил часам выходить в интернет. Дальше разберём, почему это принципиально и как одна строчка в системе делает перевод стрелок бессмысленным.

С чего всё началось: кнопка HOUR и четверть XXI века

Идея родилась из бытового раздражения. С детства у Хатчинсона на тумбочке стояли дешёвые красные светодиодные часы-радио из супермаркета, живучие и простые, но с двумя недостатками. Их приходилось вручную переводить дважды в год при смене летнего и зимнего времени, и они сбрасывались после каждого перебоя с электричеством.

После очередного моргания света, стоя с зажатой кнопкой «HOUR», автор сформулировал мысль, знакомую многим инженерам: мы прошли четверть XXI века, должен быть способ лучше. Дальше он расписал, какими должны быть идеальные часы:

  • самоустанавливающиеся: узнают время без участия человека;
  • сами учитывают переход на летнее время (или его отмену, смотря как решит законодатель);
  • компенсируют уход хода и показывают точное, вплоть до долей секунды, время;
  • дисплей строго красный семисегментный, никаких синих, зелёных или белых;
  • без установки приложений, которые «убивают приватность».

Готового устройства сразу под все пункты в продаже не нашлось. Ближе всего оказались батарейные «атомные» часы, но красного семисегментного варианта, который бы автору понравился, среди них не было. А раз дома стоит 3D-принтер, вывод напрашивался: сделать самому.

Из чего собраны DIY-часы на Raspberry Pi

Автор выбирал между двумя платформами: микроконтроллером вроде Arduino и полноценным мини-ПК Raspberry Pi. Победил Pi ради привычной Debian-подобной операционной системы, Wi-Fi, готового клиента синхронизации времени «из коробки» и возможности администрировать устройство удалённо, как обычный Linux-сервер. В дело пошли Raspberry Pi Zero W и Zero 2 W.

За индикацию отвечает семисегментный дисплей Adafruit «часового» формата с цифрами высотой 1,2 дюйма (около 3 см). Он поставляется с платой-«рюкзаком» на контроллере HT16K33, который управляет всеми сегментами по шине I²C, то есть Pi общается с дисплеем всего по двум проводам. Корпус автор не проектировал с нуля: нашёл готовую модель под этот дисплей и распечатал.

Семисегментный светодиодный дисплей Adafruit с платой-рюкзаком
Тот самый красный семисегментный дисплей Adafruit. Фото: Adafruit

Пайка для новичка

Отдельная линия сюжета: пайка. Дисплей нужно припаять к плате-рюкзаку, а паять автор до этого не умел вообще. Он купил дешёвый набор для начинающих и катушку припоя 60/40, а к ним настольную лупу с подсветкой, потому что глаза уже не фокусируются на такой мелочи. Дисплеев заказал сразу три: один на тесты, один на тренировку пайки, один в финальную сборку.

КомпонентЧто это и зачем
Raspberry Pi Zero W / Zero 2 WМозг часов: Linux, Wi-Fi, встроенный клиент NTP
Дисплей Adafruit 1,2"Красные семисегментные цифры, управление по I²C через HT16K33
Корпус с 3D-принтераГотовая модель под дисплей, печать дома
Паяльный набор + припой 60/40Собрать дисплей с платой-рюкзаком
Лупа с подсветкойЧтобы разглядеть мелкие контакты

Как работает синхронизация времени: коротко про NTP

В основе проекта протокол NTP (Network Time Protocol), один из старейших в интернете. Его разработал Дэвид Миллс, а в эксплуатации он с середины 1980-х. Работает поверх UDP на порту 123 и умеет то, чего не умеют радиочасы: учитывать задержку сети по времени кругового обхода пакета. За счёт этого NTP-синхронизация времени в интернете держит точность в десятки миллисекунд, а внутри локальной сети вплоть до долей миллисекунды.

Устроено это иерархией «страт». На нулевом уровне (Stratum 0) стоят эталонные источники: атомные часы и приёмники GPS. Stratum 1 это серверы, подключённые к эталону напрямую. Stratum 2 и ниже синхронизируются от вышестоящих. Обычно устройства берут время из публичного пула pool.ntp.org, но здесь автор пошёл иначе (об этом ниже).

«Атомные» часы, которые на самом деле не атомные

У NTP есть преимущество перед бытовыми «atomic clocks». Никаких атомных часов внутри настенных моделей нет: они ловят радиосигнал точного времени от станций, привязанных к атомным эталонам. В США это WWVB (NIST, Форт-Коллинз, Колорадо, частота 60 кГц), в Германии DCF77 на 77,5 кГц, в Великобритании MSF, в Японии JJY.

Слабое место такого приёма: капризность. Сигнал плохо пробивается в помещении и вдали от передатчика, надёжнее ловится ночью. Для России это ещё нагляднее: европейские и американские станции здесь толком не принять, и «атомные» часы во многих регионах остаются красивой надписью на коробке. Сетевая синхронизация времени по NTP от географии не зависит, был бы интернет или локальный сервер времени.

Уход хода, RTC и потеря питания

У точного времени три врага. Первый: уход хода. Дешёвый кварцевый резонатор «уплывает» на секунды за день-неделю, и без коррекции часы постепенно врут. Второй: у Raspberry Pi нет часов реального времени (RTC), своей батарейки под учёт времени на плате не предусмотрено, поэтому при потере питания без сети Pi не знает, который час. Третий: перебои с электричеством, после которых точное значение приходится откуда-то брать заново.

Поэтому сетевая синхронизация здесь обязательна: как только Pi поднимается, он сразу спрашивает время у NTP-сервера и подтягивает секунды. Для полностью офлайновых сценариев к плате можно докупить модуль RTC вроде DS3231 с собственной батарейкой, и тогда часы переживут даже отсутствие сети.

Всё локально: почему часам на Raspberry Pi запретили интернет

Здесь проект становится интересным для тех, кому важна приватность. Автор сознательно построил систему так, чтобы часы вообще не «смотрели» в интернет. Архитектура получилась по-серверному строгой:

  • хост часов доступен только в локальной сети, наружу никак;
  • обновления пакетов идут из локального apt-зеркала, а не из внешних репозиториев;
  • время синхронизируется с локального NTP-сервера в той же LAN;
  • служба часов запущена как systemd-сервис под отдельной непривилегированной учёткой;
  • сам сервис берёт системное время, а за NTP и летнее время отвечает операционная система хоста;
  • дисплей гаснет по расписанию, когда автора нет в спальне.

Это ровно та философия, которую исповедуют сторонники самостоятельного хостинга: не отдавать облаку то, что можно держать у себя. Часам не нужен ни один внешний запрос, а значит, нет ни телеметрии, ни зависимости от чужого сервера. И никакого риска, что производитель однажды «выключит» устройство обновлением. Тем, кто по тем же причинам уводит трафик из-под чужого контроля, близка и логика Sigma: держать доступ и данные в своих руках.

Экран с ИИ-инструментом для написания кода часов
Часть кода писалась через ИИ-помощника, тот самый «вайб-кодинг». Скриншот: Ars Technica

Кстати, о «вайб-кодинге»: часть работы автор делал с ИИ-подсказчиком. На скриншотах в статье видны его инструменты: редактор VS Code, 3D-редактор Autodesk Fusion для корпуса и ИИ-инструмент для кода opencode.

Летнее время отменят или нет, часам всё равно

Автор иронично привязал автоматический учёт летнего времени к судьбе законопроекта: в США инициативу о постоянном летнем времени вносят в Конгресс не первый год, и чем всё закончится, неизвестно. Но программным часам на NTP это безразлично. Всеми переходами заведует база часовых поясов операционной системы, tzdata. Поменялись правила перевода стрелок в какой-то стране, вышло обновление базы, и достаточно накатить его, чтобы часы показывали правильное время. Железо трогать не нужно, кнопку «HOUR» зажимать тоже. Одна строчка обновления вместо ручного перевода дважды в год, в этом и весь смысл затеи.

Опрос 0 голос.

Собрали бы вы себе такие часы своими руками?

Полную спецификацию с ценами, исходный код и файлы для 3D-печати автор выложил в свой репозиторий на GitHub. Если решите повторить, начинать стоит оттуда.

Частые вопросы

Можно ли сделать такие часы без своего NTP-сервера?

Да. Проще всего оставить синхронизацию времени с публичным пулом pool.ntp.org, и тогда Pi будет брать время из интернета. Локальный сервер нужен именно тем, кто хочет держать устройство полностью офлайн и не выпускать его в сеть.

Что будет при отключении света?

После восстановления питания Raspberry Pi заново подключается к сети и мгновенно подтягивает точное время с NTP. Вручную ничего вводить не нужно. Если сети нет, спасает докупленный модуль RTC с батарейкой.

Обязателен ли Raspberry Pi?

Нет, часы можно построить и на микроконтроллере вроде Arduino. Но тогда придётся самому реализовывать сеть, синхронизацию времени и учёт часовых поясов. Pi даёт всё это готовым за счёт полноценного Linux.

Сложно ли паять новичку?

Автор паял впервые в жизни и справился недорогим стартовым набором, припоем 60/40 и лупой с подсветкой. Соединений немного: дисплей и плата-рюкзак.

Источники

Ars Technica: история сборки DIY-часов на Raspberry Pi, которые не нужно переводить

Вопрос читателям

А у вас дома остались часы, которые вы до сих пор переводите вручную дважды в год?

Ответить в комментариях
OOMWOO: как собрать робот-пылесос без облака и слежки производителя
Читать следующую OOMWOO: как собрать робот-пылесос без облака и слежки производителя

Комментарии

0
?

Пока нет комментариев. Будьте первым!