Точные 7-сегментные часы на Arduino Pro Mini и DS1302 RTC
Компоненты и материалы
| Arduino Pro Mini 328 5V/16MHz (SparkFun) | ×1 |
| Модуль RTC DS1302 (нужно снять разъем и кварц) | ×1 |
| Батарея CR1220 с держателем | ×1 |
| SMD конденсатор 0.1 мкФ 1206 | ×1 |
| SMD конденсатор 10 мкФ 1206 керамический | ×1 |
| Тактильные кнопки 12 мм с накладками | ×4 |
| DC-DC понижающий преобразователь 3А (mini) | ×1 |
| 7-сегментный индикатор 0.28″ общий катод 4-разрядный | ×36 |
| MAX7219 DIP | ×18 |
| Зуммер | ×1 |
| Машинные разъемы (male + female, 8 полос по 40 пинов) | ×1 комплект |
| DC-разъем питания 5.5×2.1 мм | ×1 |
Инструменты
- Паяльник
- 3D-принтер
Приложения
- Arduino IDE
О проекте
Автор увидел на Hackaday.io часы из массива 7-сегментных индикаторов (проект Frugha) и решил сделать компактную версию. Использование 0.28″ индикаторов вместо 0.56″ уменьшило размер в 4 раза. Программно добавлены: будильник, экран настройки времени/даты/будильника/мелодии/яркости/формата даты/шрифта.
Экран настройки
Управление 4 кнопками: SELECT (верхняя) — вход в меню/цикл пунктов (Time, Date, Alarm, Tune, Brightness, Date Format, Clock). ENTER (вторая) — выбор параметра для изменения (мигает). UP/DOWN (нижние) — изменение значения. При выходе в режим CLOCK настройки сохраняются в RTC и EEPROM.
Экран даты
Нажатие ENTER в режиме часов показывает дату на 5 секунд. Формат (DD-MM или MM-DD) и шрифт (квадратный/малый) настраиваются в меню.
Конструктивные решения
Для упрощения платы использованы 4-разрядные индикаторы вместо одиночных. Из-за малого размера 0.28″ драйверы MAX7219 вынесены на отдельную плату. Соединение плат — машинные разъемы (male/female). Файлы Eagle прилагаются для заказа печатных плат или самостоятельного изготовления (метод ЛУТ).
Платные колонки (6 шт.)
Каждая держит 6 индикаторов. Паять разъемы лучше от центра к краям, используя спичку для подъема гнезда. Тонкий паяльник, припой 0.5 мм. После пайки край индикаторов закрасить матово-черной краской — скрывает щели. Пронумеровать модули маркером для правильной установки в материнскую плату.
Материнская плата MAX7219 (18 чипов)
Разводка упрощена: соответствие сегментов/разрядов MAX7219 пинам индикаторов не соблюдалось, корректировка в прошивке. Рекомендация: сначала надеть гнезда на штырьки колонок, затем паять сборку — гарантирует точное совпадение. Нумерация колонок поможет при перестановке.
Плата микропроцессора (MPU)
Содержит Pro Mini, RTC, кнопки, конденсаторы, DC-DC, зуммер. Кнопки и SMD-конденсаторы с обратной стороны. FTDI-разъем Pro Mini распаян и припаян прямо к плате (DTR и VCC проводниками). Низкий профиль.
Корпус (3D-печать)
STL-файлы передней и задней частей. Слой 0.2 мм, брим, для передней — поддерживающие структуры только от стола. Колонки с материнской платой вставляются спереди (при слабом сцеплении — прокладка из малярного скотча). MPU-плата клеится термоклеем на заднюю стенку.
Программное обеспечение
Требуется библиотека MD_MAX72XX. Прилагается тестовый скетч Hardware_Test_V1 (зажигает все сегменты для проверки проводки) и основной Clock_V4. В коде: работа с RTC DS1302, TimeLib, EEPROM, кнопки с автоповтором, большие/малые/квадратные цифры на массиве 18×MAX7219 (24 колонки × 6 строк), мелодии будильника, настройка яркости, 12/24-часовой формат.
Файлы кода
Clock_V4.ino— основной скетчDigits.h— таблицы сегментов для больших (6×6), малых (5×3) и квадратных (3×3) цифр, ASCII-таблица, карта разрядовTunes.h— мелодии (скачивается отдельно)Button.h/.cpp— библиотека кнопок с дебаунсом и автоповторомHardware_Test_V1.zip— тестовый скетч
Производственный процесс
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Часы реального времени на Arduino с расчётом времени намаза
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
- Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом
- Компактный радар на Arduino Nano с HC-SR04 и дисплеем 1.8"
- Arduino погодные часы реального времени: OLED-дисплей для времени, даты и температуры
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код