Точные словесные часы: отображение времени в словах с точностью до минуты
Компоненты
| Arduino Nano R3 | ×1 |
Полный список компонентов — в репозитории проекта.
О проекте
Словесные часы на Arduino с минутной точностью и линейным отображением секунд. Реализованы режимы: словесные часы, цифровые, аналоговые, температура и влажность, а также три игры: «Жизнь», «Саймон» и «Тетрис». Часы могут работать автономно или как ведомые от мастер-часов. Встроенный термокомпенсированный RTC (DS3231) обеспечивает точность. Опционально: отключение экрана по PIR- или допплеровскому датчику движения. Размер 500×500 мм, вес 5,5 кг, настенное монтаж. Управление — сенсорные панели в углах (TTP223).

Типы словесных часов
Простые — блоки слов с 5-минутным шагом (например, «5 ПОЛОВИНА», «10 ПОЛОВИНА»). ~20 LED-блоков. Минус — фиксированный формат.

Средние — матрица 11×10 LED + 4 угловых. 110 LED позволяют показывать цифры и простые изображения. 5-минутный шаг с уточнениями вроде «ЧЕРЕЗ 5 МИНУТ». 4 угловых LED заполняют промежутки. Часто на LED-лентах.



Сложные (256 LED, 16×16) — минутная точность слов, указание времени суток (утро/вечер/ночь), температура словами. Огромное количество режимов. Сложны в сборке из-за проводки. PCB с SMD позволяют тонкий корпус, но >500 мм дорого. Ручная сборка матрицы требует места — 500×500 мм оптимален для проводки.

Изменения в этом проекте
- Никаких кастомных PCB — только готовые модули и 3 маленькие веробоарды для питания.
- Корпус из двух листов МДФ 14 мм (задний на 10 мм меньше по периметру, кроме верха) — визуально 14 мм толщины.
- Глубина 34 мм (с 4-мм стеклом и 2-мм пыльником) vs 21 мм у Wouter Devinck. Засчет отступа задней панели и стекла визуально выглядит как 14 мм.
- Матрица 256 LED собрана вручную на лицевой плате без PCB — любой размер дисплея.
- Сенсоры TTP223 вместо Azoteq IQS127D.
- Драйверы MAX7219 на модифицированных платах матриц (комплектующие уже установлены).
- Arduino Nano за компактностью.
- PIR-сенсор для выключения экрана при отсутствии людей (можно отключить).
- Подстроечный резистор для калибровки автояркости (доступен снизу).
- Синхронизация с мастер-часами каждые 30 сек. Без синхро — свободный ход от RTC. Импульсы синхро отображаются.
- Прошивка на базе «Catalan» Pijuana, переведена на английский. Экран crédits показывает версию, автора, год.
- Словарная температура убрана, добавлен статус синхро, PIR ON/OFF и линейные секунды в нижнем ряду.
- В режиме настройки нажатие правой нижней кнопки сбрасывает секунды в 0.
- Исправления формулировок: «MINUTE» вместо «MINUTES» при 1 минуте; «A QUARTER» вместо «QUARTER»; добавлено отсутствовалое «ELEVEN»; полдень — «TWELVE OCLOCK IN THE AFTERNOON», полночь — «TWELVE OCLOCK AT NIGHT», после полуночи всегда «IN THE MORNING»; «OCLOCK» без апострофа.
Конструкция корпуса
Два листа МДФ 14 мм. Задний черный, передний белый — создает иллюзию тонкости. Стекло 4 мм с полированными кромками, закреплено Чикагскими зажимами (они же — сенсорные панели). Пыльники на задней панели и за стеклом.



Управление
4 сенсора TTP223 в углах стекла (на болтах Чикагских зажимов). Функции зависят от режима.


Режимы отображения
Часы и среда: словесные, цифровые, темп/влажность, аналоговые.


Загрузочный экран: версия, автор, название.

Игры: «Жизнь» Конвея, «Саймон» (повтори последовательность), «Тетрис» (нуждается в доработке управления).



Прототипирование
Можно тестировать код на штатных матрицах 8×8 модулей MAX7219 до сборки большой матрицы. Нужно временно перепаять контакты матрицы на плате модуля.

Изгибаем пины 16, 15, 3, 4, 10, 11 на 90°, вставляем матрицу в сокет (эти пины не контактируют), припаиваем перемычки с обратной стороны сокета к выгнутым пинам по схеме: LEDA→16, LEDB→15, LEDG→3, LEDF→4, LEDE→10, LEDC→11.


Для теста слов печатают мини-версию виниловой наклейки 62×62 мм.



Тест модифицированных модулей
Скетч MAX7219_LED_Test.zip поочередно зажигает все 64 LED модуля. Подключаете 5 проводов к Nano и модулю, питание от USB, загружаете скетч.


Таблица соответствия времени словам

Слова настраиваются под свой речевой стиль. Файл перевода: Word+to+Time+Translations.xlsx.
Питание
Общий блок 12 В → локальные понижающие модули 5 В (MP1584 на веробоарде). Ток: 30 мА (мин яркость) — 250 мА (макс). Рекомендуемый блок ≥500 мА. PIR сильно экономит энергию.


Соединение модулей
Модули MAX7219 дази-чейнятся: первый к Nano, остальные друг к другу. Питание подводится к обоим концам цепи. Основная масса проводов — между MAX7219 и LED-матрицами.

Порядок сборки
- Печать виниловой наклейки (Inkscape, зеркально).
- Резка стекла 4 мм (500×500 мм, полировка кромок).
- Резка листов МДФ (передний 503×503 мм, задний 493×493 мм).
- Сверловка 256 отверстий под LED (6 мм) и 256 зенкеров (18 мм) по сетке 25 мм.
- Грунтовка и покраска (белый перед, черный зад).
- Нанесение виниловой наклейки на стекло (мыльная вода, скрепка, сушка).
- Монтаж сенсоров TTP223 в зенкеры передней панели, изоляция пластиковыми шайбами.
- Сборка веробоард: 1 питание + 2 распределительные.
- Модификация 4 модулей MAX7219 (90° пины, замена R1 на 22 кОм для 20 мА).
- Монтаж модулей на заднюю сторону передней панели.
- Ручная пайка 256 LED в матрицу (катудные и анодные шины из медного провода 0,9 мм на панелях-подставках).
- Проводка питания, данных, сенсоров, зуммера, RTC, DHT22, LDR.
- Подключение лучей от MAX7219 к матрицам по цветовой кодировке (50-жильный кабель).
- Установка PIR (удаленно) или допплеровского радара (внутри корпуса).
- Синхро-кабель к мастер-часам (если есть).
- Закрепление стекла Чикагскими болтами (одновременно фиксируют сенсоры).
- Тест.
Примерное время: ~150 часов + 40 часов прототипирование/программирование.
Виниловая наклейка
Дизайн в Inkscape (SVG). Файл: brett11_print_ready.svg. Печать в Regal Signs (~£27 с ватманом-диффузором). Нанесение на стекло через мыльный раствор.



Электронные компоненты
- LED 5 мм Flat Top белые: 256 шт, 13000 мкд, 3,2–3,8 В, 20 мА, 120°. Покупайте у надежных поставщиков.
- DHT22 — темп/влажность. Верх и левый вентиль заклеены скотчем (измеряет воздух комнаты, не корпуса). Отверстия в задней панели для циркуляции.
- Arduino Nano — питание 5 В регулируемое или 6–20 В нерегулируемое. ATmega328, 32 KB флеш, 2 KB RAM.
- TTP223 — 4 шт, болтится к Чикагским зажимам (болт = сенсорная пластина, изолирован пластиковой шайбой). Свой LED срывают для экономии.
- DS3231 AT24C32 — RTC. Убран резистор R5 зарядки Li-ion, поставлен несброниваемый элемент.
- MAX7219 модули — 4 шт, модифицированы (90° пины, R1=22 кОм). Дайзи-чейн по CLK, DIN, LOAD.
- LDR — фоторезистор под корпусом, калибровка подстроечником рядом.










Пыльники
Задний: 2 мм мягкий поролон на клеевой основе, зазор 5 мм от края. Передний (под стеклом): самосплавляющаяся резина, 5 мм от края + 4 квадратика под болты.



Схемы
Подключение Nano, 4 модулей MAX7219 и матриц. Матрицы поворачиваются на 90° друг относительно друга (модуль 01 — вход от Nano, выход → модуль 02 и т.д.).






Проводка LED-матриц
Каждая матрица 64 LED = 8 катодных шин (10 мм над платой, на панелях 15 мм) + 8 анодных шин (2 мм над платой, на ножках LED). 4 матрицы = 256 LED. Ножки LED гнут в приспособлении (1024 изгиба). Соединение по таблице цветовой кодировки (16 проводов на модуль, кабель 50 пар 0,5 мм).













Модификация модулей MAX7219
Припаивают два ряда по 8 пинов 90° к нижнему краю разъема матрицы. Провода отходят к большой матрице. R1 заменяют на 22 кОм для 20 мА.




Настройка автояркости
Подключаете Mini-USB (врезан в правую сторону задней панели) к телефону/ноутбуку, монитите Serial (Slick USB 2 Serial Terminal). Вставляете ювелирную отвертку в отверстие рядом с LDR, крутите до light reading = 600 и bright = 15 при макс. освещении. Если хотите тусклее — ставьте light reading < 600.



PIR-контроль экрана
Опционально. PIR в хромированной коробке выключателя на стене (не работает за стеклом). Вкл/выкл в режиме словесных часов: нижний левый сенсор — PIR ON, правый — PIR OFF. При смене показывает «PIR ON»/«PIR OFF» 5 сек. При включении по умолчанию OFF. PIR инициализируется ~1 мин.





Допплеровский радар (альтернатива PIR)
Видит через стекло и пластик, монтируется внутри корпуса за наклейкой. Дальность ~5 м. Проверка движения каждые 15 мин. Управление теми же сенсорами (PIR ON/OFF).




Установка времени
В режиме цифровых часов: нижний левый сенсор — вход в настройку. Часы мигают. Верхний правый — инкремент, верхний левый — декремент. 1-е нажатие нижнего левого — часы, 2-е — минуты, 3-е — выход и установка. Нижний правый — сброс секунд в 00.

Синхронизация
Если подключен синхро-кабель (30 сек) — часы прыгают на 30 сек при выходе из настройки. Без мастера — ход от RTC. Синхро игнорируется на 0 сек, работает на 20 сек и 20 мин. На экране появляется «SYNC».

Программное обеспечение
Архив: Brett_wordclock_v4_5.zip. Модули: Brett_wordclock_v4_3.ino (основной), brightness.cpp/h, character.cpp/h, credits.cpp/h, display.cpp/h, life.cpp/h, serial.cpp/h, simon.cpp/h, temphum.cpp/h, tetris.cpp/h, time.cpp/h, timeanalog.cpp/h, touchbuttons.cpp/h. Библиотеки: Chronodot, DHT, LedControl, stc (Tetris), pitches.h.
Слова задаются в time.h (координаты LED). Правила включения слов — в time.cpp. Пример: полночь (00:00) → «THE TIME IS TWELVE OCLOCK AT NIGHT».
Исправление аналоговых стрелок от srdevil: малый указатель двигается к следующему часу после HH:15.
GitHub: Wouter Devinck, Catalan, Мой форк.
CAD / Виниловая наклейка
Файл Inkscape: brett11_print_ready_6bbpMTDyFa.svg.
Схемы (файлы)
Главная схема, 4 схемы модулей MAX7219 (01–04).
Производственный процесс
- Кукушка: история, мастерство и современная эволюция
- Силиконовая 3D-печать: новая граница в аддитивном производстве
- Измерение аналоговых датчиков на Raspberry Pi с одним GPIO-пином
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Python timeit(): измерение времени выполнения с практическими примерами
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Часы реального времени на Arduino с расчётом времени намаза
- Устранение производственных узких мест: 5 проверенных инструментов эффективности
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код