Arduino DCF77 Analyzer Clock MK2 — точные часы с кольцом из 60 LED и декодером времени
Компоненты и материалы
| Arduino Nano R3 (или UNO) — 2 шт. (один для декодера, второй для Super Filter) | × | 2 |
| DCF77-приёмник (например, PV Electronics / Conrad) | × | 1 |
| LED 3 мм — 120 шт. (2 кольца по 60) + 24 статусных = ~144 шт. (подбирайте по яркости) | × | ~144 |
| Модули MAX7219: 3 × Dot Matrix (для колец и статусных LED), 2 × 7-seg 0.56", 2 × 7-seg 0.39" | × | 7 модулей |
| RTC DS3231 (с батареей CR2032, резистор зарядки R5 удалён) | × | 1 |
| JQ6500 — 2 модуля (тик-так и боец/часовые бои) | × | 2 |
| Динамики 3W 8Ω — пара | × | 2 |
| LM2596 (DC-DC 7-12В → 5В, ~1А) | × | 1 |
| Доплеровский радар RCWL-0516 или PIR (детекция присутствия) | × | 1 |
| Фоторезистор (LDR) — автояркость | × | 1 |
| Переключатели (7 шт.) — панель управления | × | 7 |
| Вероборды, разъёмы, провода, корпус (ретро или фоторамка) | × | 1 комплект |
О проекте
Продвинутые настенные часы, визуализирующие DCF77-временной код на двух кольцах по 60 LED (внутреннее — текущая минута в реальном времени, внешнее — декодированное время предыдущей минуты). Дополнительно: 24 статусных LED, два больших 8-разрядных 7-сегментных индикатора (время/дата), два маленьких (биты/ошибки/пульсы), звуковое сопровождение (секундные тики, четверть/часовые бои), Super Filter Удо Клейна для синтеза чистого сигнала и подстройки кварца.


Основа и отличия от оригинала Erik de Ruiter
- Два кастомных Arduino Uno на вероборде (вместо Uno + Mega).
- Дешёвые китайские модули MAX7219 (7-seg и Dot Matrix) — с модификациями для устойчивой работы в цепочке.
- JQ6500 вместо Adafruit Sound Board (один hardware-управляемый, второй — software).
- Третий Dot Matrix модуль вместо свободных пинов для статусных LED.
- PWM-яркость всех групп LED (кольца, большие 7-seg, маленькие 7-seg, Super Filter) — от одного LDR, 4 уровня интенсивности.
- Нет индикации температуры и номера недели.
- Super Filter: добавлены мониторные LED, убраны лишние режимы (остались только Synthesized / Inverted Synthesized), добавлен LED-тест при включении.
- Звук DCF77: «0» = 100 мс, «1» = 500 мс — легче различать по слуху.
Управление (7 переключателей на панели)
- Tick On/Off — питание JQ6500 тиков.
- Tick Volume (3-поз. нефиксирующий) — ADKey JQ6500.
- Chime Control: Off / 24/7 / Timer (05:15–23:00).
- Chime Volume (3-поз. нефиксирующий) — программный контроль + тестовый боец при переключении.
- DCF77 Sound On/Off — пьезо-излучатель воспроизводит принятые биты.
- Reset (нефиксирующий): Filter / Analyzer — перезапуск соответствующего MCU.
- DCF77 Source: Off / Analyzer (прямой сигнал) / Filter (синтезированный из Super Filter).

Схемы и монтаж
3 схемы: главная плата, Dot Matrix модули, 7-seg модули. Монтаж на веробордах с разъёмами. Все модули крепятся на деревянные бруски на обратной стороне циферблата (алюминий 1.5 мм, ~700 отверстий под LED). Циферблат — водяная декаль на крафте/акриле.



Ключевые модификации «железа»
MAX7219 7-seg модули — устранение ошибок в цепочке
- Добавить электролит 10µF параллельно 0.1µF у питания MAX7219 (на обратной стороне платы).
- Удалить защитный диод 1N4148 в цепи питания — заменить перемычкой (иначе падает напряжение на дальних модулях).
Контраст 7-seg
Нейтральный фильтр ND 0.9 (теплостойкий ацетат) над индикаторами — скрывает негорящие сегменты, работает для любого цвета LED.
Двоеточие на часах
В коде разряды 3 и 6 принудительно выставляются в «o» (маленькая о), сверху клеится чёрная лента с прорезями — получаются двоеточия.
Super Filter (Удо Клейн)
Активно обрабатывает входящий DCF77, через несколько минут синхронизируется, предсказывает сигнал, синтезирует исправленный выход даже при отсутствии сигнала. Подстраивает частоту кварца Arduino — удерживает точность днями без сигнала.

Состояния: Filter Synchronized (лучшее) → Filter Locked → Sync Lost <200ms → Sync Lost >200ms → Signal Dirty / Signal Bad.
Код
- DCF77 Decoder Code — для Arduino декодера (скачивается как ZIP).
- Super Filter Code — для Arduino фильтра (ZIP).
- Библиотека JQ6500_Serial — с патчем: в
JQ6500_Serial.cppпосле строки 263 добавитьif(!responseBuffer && !bufferLength) return;(убирает ожидание ответа, иначе часы теряют такты).
Репозиторий автора: brewittoliver.org.uk
Корпуса: два варианта
- Ретро — старый деревянный корпус напольных часов, латунный бेजель, восстановленный задний ящик.
- Модерн — большая фоторамка, квадратный задний ящик, петлевое крепление циферблата, переключатели на торце.

Файлы проекта
- CAD (TurboCAD) + PNG 4000×4000 циферблата:
turbocad_drawings.zip - Звуки для JQ6500:
bell.zip(бои 1-12, четверти 13-16, тест 17),tick_tock.zip(тик-так) - Схемы (3 файла)
Производственный процесс
- Кукушка: история, мастерство и современная эволюция
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Стильные настенные часы на четырех кольцах Adafruit Neopixel 60 LED и Arduino
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Часы реального времени на Arduino с расчётом времени намаза
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код