|

Спасская башня с курантами и боем на Arduino — новогодний проект на ардуино, tft дисплей, esp32

Всем привет!

До Нового года осталось:

Загрузка, времени, до Нового, Года

И я как раз, за 2 недели до НГ 2026 я закончил разработку довольно сложного новогоднего проекта с двумя платами (конечно можно и с одной, но у меня не получилось). Почему не получилось, читайте чуть ниже! А в конце статьи я дам все нужные скетчи.

Кратко о проекте

2 файла:
— 1. файл со скетчем для ESP32 — 658 строк, 20 функций
— 2. файл со скетчем для Arduino Uno/Nano — 34 строки
— 3. файл с bitmap массивами — 9620 строк, 2 массива по 72600 пунктов данных

Компоненты:
— ESP32 Dev Module
— Arduino Uno/Nano
— TFT LCD 2.8″ ILI9341
— Mini MP3 player
— MicroSD до 32 GB
— Макетная плата 800 точек
— 20 проводов папа-папа

История проекта

Битмап (англ. bitmap) — это массив из числовых обозначений цвета для каждого пикселя.

В октябре 2025 я прогулялся по центру Москвы, два раза был у Спасской башни. Выглядело очень прикольно — здоровенная такая штуковина из кирпича, а сверху огромные часы, красивые, и колокола звонят.
И недели 3 назад я подумал что надо что-то новогоднее сделать. Придумал сделать вот такие же часы, только на дисплее и с ардуино.

Попробовал сделать на Arduino Uno, но оказалось что памяти не хватит, так как битмапы весят 1-2 МБ

Рис. 1 — картинка Спасская башня, общий вид
Рис. 2 — картинка часы на башне, увеличенный вид

Если захотите повторить проект, но подкорректировать картинки, то они представлены выше. Они имеют размеры 240*320 пикселей, по размеру дисплея ILI9341 2.8″. Можно заметить, что цифры отличаются по стилю от остального — я их перерисовал в пиксельный вид максимально контрастный, а то на оригинале размыты цифры были. Стрелок нет, их отрисует ESP32.

Превратить фото в битмап можно вот на этом сайте — https://javl.github.io/image2cpp/ Схема довольно простая — загружаете свои картинки, можно сразу несколько, выставляете настройки, смотрите на предпросмотре, хорошо ли выглядит картинка, затем жмёте Generate code и получаете готовый массив и 76000 элементов.

А вообще возьмите готовые битмапы из этой статьи =)

Сначала я пытался вывести картинку на дисплей, двумя способами. Первый это с карты памяти картинку выводить. Второй это сделать битмап и его записать в скетче и выводить. Можно конечно объединить и брать битмап с карты памяти, чтобы его можно было на SDшке менять, а не скетч перезаливать, но вряд ли так заработает, оперативки не хватит у ESP.
В общем, с карты памяти загрузить картинку у меня не получилось, не знаю почему, примеры пробовал, нейронки напрягал, чет не получалось. Карточка рабочая, древняя правда, но ладно.

Выбрал вариант с битмапом, увидел их размеры, перешел на ESP32. Сначала вывел на экран одну картинку, потом добавил кнопку, добавил вторую картинку. Добавил снег с регулировкой, потом стрелки. И самое прикольное — звук.

Но звук сразу приделаться не захотел. Я тестировал звук на Arduino Uno, подключил модуль точно по схеме, подключил карту памяти с мелодиями, использовал библиотеку DFRobotDFPlayerMini.h (скачать), но первый файл (с прозвоном колоколов) он воспроизводить не хотел. И не просто вообще не воспроизводил, а первый раз воспроизводить, и даже после другой мелодии не хотел. Другую мелодию первой воспроизводил, а потом тишина вместо прозвона…

Взял другую библиотеку — DFPlayer_Mini_Mp3.h (скачать). Она уже сразу воспроизводит файлы, но через 1 секунду, ну и ладно. Подключается модуль по UART к ардуино, используем SoftwareSerial. Но с ESP32 эта библиотека не работает. В конце концов подключил к Arduino Uno по UART плату ESP32, ардуина будет звук воспроизводить. Вот вы и узнали, почему две платы используются. Если знаете, как можно сделать точно правильно на одной, то напишите пожалуйста в мой чат — https://t.me/arduino_uno_ws_chat

Схема подключения

На картинке ниже представлена схема подключения всех компонентов проекта:

Вот тут в виде таблицы:

ESP32Arduino UnoTFTMP3ДинамикПотенциометрКнопка
3V3VCC, LEDPIN 3
GNDGNDGNDGNDPIN 1IN
D2D/C (A0)
D4RESET
D12OUT
D15CS
D17D0 RX
D16D1 TX
D34PIN 2
D18SCK
D23MOSI
D10TX
D11RX (через резистор 1 кОм)
5VVCC
SPK+плюс
SPK —минус

СКЕТЧИ И БИТМАПЫ

Для вашего удобства я собрал все файлы для прошивки я собрал в ZIP-архиве, который можно скачать по этой ссылке. Распакуйте папки из архива на рабочий стол или в любое другое место. Откройте файлы .ino в разных окнах Arduino IDE.

В архиве находятся две папки проектов — для Arduino и для ESP32. Порядок сборки и прошивки:

  1. Подключите Arduino Uno/Nano к компьютеру.
  2. Откройте Arduino IDE и откройте проект для ардуино.
  3. Если знаете что делать дальше, делайте. Если не знаете, прочитайте здесь.
  4. После загрузки скетча в Arduino, отложите плату и возьмите ESP32.
  5. Подключите к компьютеру, затем нажмите и держите кнопку BOOT, кратковременно нажмите EN, затем отпустите BOOT. Этим мы включили режим прошивки ESP32.
  6. Выберите плату ESP32 Dev Module в Arduino IDE. Если нет этой платы, прочитайте здесь.
  7. Нажмите «Загрузка» и дождитесь окончания компиляции и загрузки скетча. При загрузке скетча плата может перезагрузиться и выйти из режима прошивки, поэтому, когда в консоли вывода появится надпись «Connecting», нажмите и держите кнопку BOOT до тех пор, пока не пойдёт загрузка. Тогда можно отпустить. Из режима плата сама выйдет.

Надеюсь, вам эта статья понравилась) Спасибо за внимание и с наступающим)

5/5 - (8 голосов)


Поделись!
×

Пожалуйста, отключите блокировщик рекламы!
Реклама помогает автору создавать новые статьи!
Спасибо ❤️


Как отключить блокировщик?
Для этого нажмите на значок расширения блокировщика и нажмите "Выключить на этом сайте", затем обновите страницу. Спасибо!
×

Пожалуйста, отключите блокировщик рекламы!
Реклама помогает автору создавать новые статьи!
Спасибо ❤️