Многофункциональные LCD-часы-будильник с настраиваемыми циферблатами
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino UNO (или ATmega328P на отдельной плате) | 1 | Для PCB-версии: ATmega328P DIP, кварц 16 МГц, 2×22 пФ, 7805, конденсаторы |
| LCD 16×2 (синие символы на белом/синем) | 1 | HD44780 совместимый |
| RTC DS1302 | 1 | С кварцем 32.768 кГц и батареей CR2032 (в держателе) |
| Датчик температуры/влажности DHT21 (AM2301) | 1 | Опционально, для циферблата «Погода» |
| Пьезо-зуммер (пассивный) | 1 | Через конденсатор 10 мкФ |
| Ртутный выключатель (наклонный) | 1 | Выключение будильника наклоном |
| Тактильные кнопки 6×6 мм (длинные ножки 13 мм) | 3 | SETUP, INCREMENT, DECREMENT |
| Подстроечный резистор 10 кОм | 1 | Контраст LCD |
| Резисторы: 10 кОм ×4, 470 Ом ×1 | — | Подтяжка кнопок, подсветка |
| Конденсаторы: 100 мкФ 16В, 3×0.1 мкФ, 1 мкФ | — | Для стабилизатора 7805 и развязки |
| Печатная плата (Eagle-файлы) или макетная плата | 1 | |
| 3D-печатный корпус (2 части, STL) | 1 | Слой 0.2 мм, без поддержек |
Инструменты
- 3D-принтер (для корпуса)
- Паяльник, припой
- Дрель 2.5 мм и нарез M3 (крепление платы в корпусе)
Программное обеспечение
- Arduino IDE
- Библиотеки:
DS1302RTC,TimeLib,LiquidCrystal,EEPROM,dht
Возможности часов
- 8 стилей отображения времени: Стандартный, Dual Thick, Dual Bevel, Dual Trek, Dual Thin, Word (текстовый), Биоритмы, Термометр/Влажность.
- Настройка времени, даты, даты рождения, будильника через 3 кнопки.
- Ртутный выключатель — наклон корпуса выключает звонок будильника (любая кнопка тоже).
- Управление подсветкой: авто-выключение через 10 сек неактивности, включение любой кнопкой.
- Биоритмы — расчёт физического (23 дн.), эмоционального (28 дн.) и интеллектуального (33 дн.) циклов от даты рождения. Отображаются полосками на LCD.
- Сохранение настроек в EEPROM — время будильника, вкл/выкл, стиль дисплея, дата рождения.
- DHT21 — показ температуры и влажности на отдельном экране (обновление каждые 6 сек).
Управление
| Кнопка / Датчик | Действие (в обычном режиме) | Действие (в меню SETUP) |
|---|---|---|
| SETUP | Вход в меню настроек | Переключение полей: Часы → Минуты → День → Месяц → Год → День рожд. → Месяц рожд. → Год рожд. → Будильник часы → Будильник минуты → Выход |
| INCREMENT | Смена стиля циферблата (циклически) | Увеличение значения текущего поля |
| DECREMENT | Вкл/выкл будильника | Уменьшение значения текущего поля |
| Наклон (TILT) | — | Выключение звука будильника при срабатывании |
Сборка (PCB-версия)
- Изготовьте плату по Eagle-файлам (метод ЛУТ или заказ). Двухслойная с металлизацией отверстий упрощает пайку LCD под углом.
- Установите компоненты: ATmega328P, кварц 16 МГц + 2×22 пФ, 7805 + 100 мкФ + 0.1 мкФ, DS1302 + кварц 32.768 кГц + батарея CR1220 (на плате) или CR2032 (на проводах), зуммер через 10 мкФ, кнопки, подстроечный резистор, разъём для DHT21 (3 пина).
- LCD 1602 подключается через правый угловой pin header (входит в комплект платы).
- Корпус: распечатайте 2 половинки STL. Выверните отверстия под M3 (2.5 мм буром, нарез M3). Закрепите плату 4 винтами M3×6 мм. Отверстия платы расширьте до 4 мм для регулировки.
- Кнопки монтируются на задней стороне платы, выходят через прорези в корпусе.
Программный код (основные моменты)
Полный скетч DigitalClockAlarmV7.ino во вложениях. Ключевые части:
- Инициализация: проверка RTC, установка дефолтного времени при первом запуске. Чтение EEPROM (будильник, дата рождения, стиль). Настройка пользовательских символов LCD для каждого стиля.
- Стили отображения — каждый стиль имеет свои функции
lcdXXXSetup()(создание кастомных символов) иlcdXXXLayout()(отображение времени/даты/будильника). Используются PROGMEM-массивы для больших цифр (2 строки × 3-4 колонки на цифру). - Word clock — перевод чисел в слова (ONE, TWO, TWENTY, THIRTY…), песочные часы анимированы через 8 кадров.
- Биоритмы — вычисление фаз синусоид для трёх циклов, отрисовка полосками (верхняя — позитивная фаза, нижняя — негативная).
- Будильник: проверка каждую секунду. При срабатывании — мелодия на зуммере, мигание индикатора. Выключение наклоном или любой кнопкой.
- DHT21: опрос каждые 6 сек, показ на экране THERMO.
- Curie PME не используется — это чисто алгоритмические часы.
Обновления версий
- 29/06/20: исправлены опечатки в Word clock, добавлены #define для подсветки, таймаут увеличен до 10 сек.
- 23/11/20: добавлена настройка даты рождения и EEPROM, циферблат Биоритмов, очистка кода SETUP.
- 06/12/20: поддержка DHT21, циферблат Термометр/Влажность, обновлён PCB (разъём DHT21).
Файлы проекта
- Код:
DigitalClockAlarmV7.ino - STL корпуса:
stl_files_ZuDXHCHZCl.zip - Схемы и PCB (Eagle):
eagle_files_ZN59zdeNf5.zip - Схемы (изображения): 3 файла во вложениях.
Кредиты (авторы используемых шрифтов/идей)
- Стандартный экран — Michalis Vasilakis
- Dual Thick / Dual Thin — Arduino World
- Dual Bevel — Arduino Forum
- Dual Trek — Carrie Sundra
- Word clock концепция — LAGSILVA
- Биоритмы — John Bradnam
- Weather Clock — ARDUinoautoMOTIVE
Производственный процесс
- Создание headless сигнализации утечки воды на Raspberry Pi 2 с Adafruit T‑Cobbler Plus
- Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
- Умные будильники с датчиком движения: гарантированное пробуждение
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Часы реального времени на Arduino с расчётом времени намаза
- Точные словесные часы: отображение времени в словах с точностью до минуты
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Цифровые часы на TM1637 с настройкой времени и будильником — прототип на Arduino Nano
- Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код