Часы, которые невозможно сбить: инженер собрал их на 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 общается с дисплеем всего по двум проводам. Корпус автор не проектировал с нуля: нашёл готовую модель под этот дисплей и распечатал.

Пайка для новичка
Отдельная линия сюжета: пайка. Дисплей нужно припаять к плате-рюкзаку, а паять автор до этого не умел вообще. Он купил дешёвый набор для начинающих и катушку припоя 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: держать доступ и данные в своих руках.

Кстати, о «вайб-кодинге»: часть работы автор делал с ИИ-подсказчиком. На скриншотах в статье видны его инструменты: редактор VS Code, 3D-редактор Autodesk Fusion для корпуса и ИИ-инструмент для кода opencode.
Летнее время отменят или нет, часам всё равно
Автор иронично привязал автоматический учёт летнего времени к судьбе законопроекта: в США инициативу о постоянном летнем времени вносят в Конгресс не первый год, и чем всё закончится, неизвестно. Но программным часам на NTP это безразлично. Всеми переходами заведует база часовых поясов операционной системы, tzdata. Поменялись правила перевода стрелок в какой-то стране, вышло обновление базы, и достаточно накатить его, чтобы часы показывали правильное время. Железо трогать не нужно, кнопку «HOUR» зажимать тоже. Одна строчка обновления вместо ручного перевода дважды в год, в этом и весь смысл затеи.
Собрали бы вы себе такие часы своими руками?
Полную спецификацию с ценами, исходный код и файлы для 3D-печати автор выложил в свой репозиторий на GitHub. Если решите повторить, начинать стоит оттуда.
Частые вопросы
Можно ли сделать такие часы без своего NTP-сервера?
Да. Проще всего оставить синхронизацию времени с публичным пулом pool.ntp.org, и тогда Pi будет брать время из интернета. Локальный сервер нужен именно тем, кто хочет держать устройство полностью офлайн и не выпускать его в сеть.
Что будет при отключении света?
После восстановления питания Raspberry Pi заново подключается к сети и мгновенно подтягивает точное время с NTP. Вручную ничего вводить не нужно. Если сети нет, спасает докупленный модуль RTC с батарейкой.
Обязателен ли Raspberry Pi?
Нет, часы можно построить и на микроконтроллере вроде Arduino. Но тогда придётся самому реализовывать сеть, синхронизацию времени и учёт часовых поясов. Pi даёт всё это готовым за счёт полноценного Linux.
Сложно ли паять новичку?
Автор паял впервые в жизни и справился недорогим стартовым набором, припоем 60/40 и лупой с подсветкой. Соединений немного: дисплей и плата-рюкзак.
Источники
Ars Technica: история сборки DIY-часов на Raspberry Pi, которые не нужно переводить
А у вас дома остались часы, которые вы до сих пор переводите вручную дважды в год?
Ответить в комментариях


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