Найти тему
Электроника, ESP32, Arduino

Настольные часы-календарь на DS3231MZ+ и Arduino с 2 дисплеями.

Часы-календарь своими руками на Arduino (Iskra Nano Pro)
Часы-календарь своими руками на Arduino (Iskra Nano Pro)

Часы питаются от зарядки для телефона. Для того чтобы время и дата сохранялись в случае отключения питания в них необходимо установить 3V батарейку. Время и дата устанавливаются с помощью кнопок. После выполнения установки время отображается на OLED дисплее с разрешением 128х64 точки. Режимы отображения времени можно менять с помощью 5-й кнопки. Также на OLED дисплей выводится температура с датчика, который встроен в микросхему часов DS3231MZ+. Календарь выводится на дисплей e-Paper с разрешением 400х300 точек и двумя оттенками серого. Другое название таких дисплеев электронная бумага – последнее, выведенное на него изображение, сохраняется даже при отключении питания. Недостаток работы таких дисплеев в большом времени обновления картинки, конкретно для этого дисплея она составляет 4 секунды, главный плюс – после обновления картинки питание для дисплея не требуется. Но календарь необходимо обновлять 1 раз в сутки и для этой задачи такой дисплей подходит идеально. Я обновляю его один раз в час, так как планирую в дальнейшем прикрутить барометр и строить график изменения атмосферного давления – для возможности предсказания погоды.

Часы собраны на макетной плате под пайку. Для соединения компонентов используется провод МГТФ. В качестве мозгов используется плата Iskra Nano Pro от компании Амперка на микроконтроллере ATMega328PB. Как и оригинальная плата Arduino Nano программирование производится в среде Arduino IDE. Для буферизации картинки электронной бумаги используются дополнительная внешняя память объемом 64кб. Готовых библиотек для вывода изображения в оттенках серого я не нашел – поэтому в этом проекте графическое ядро для работы с дисплеями написано на языке «С++» с нуля.

Принципиальная электрическая схема часов на Arduino
Принципиальная электрическая схема часов на Arduino

Дисплеи подключены на 1-й аппаратный SPI. Микросхема дополнительной памяти объемом 64kB на 2-й. Кнопки подключены к аналоговому входу A0. В качестве часов используется микросхема DS3231 - точность хода 1 сек в сутки. Для обвеса требуется только батарейка и 2 резистора 4.7kom Точность хода часов обеспечивает встроенный датчик температуры - значение которого также выводится на OLED дисплей.

Дополнительные материалы:
Код
Подключение внешней памяти
Подключение и работа с e-paper
Подключение нескольких кнопок на аналоговый вход и антидребезг
Алгоритм реализации вечного календаря
Пара фотографий готового изделия:

Задняя сторона платы
Задняя сторона платы
В интерьере
В интерьере