Просмотр полной версии : ESP32 AY Turbo Sound Multiformat Player
Вот вам новая железка с пылу с жару)
Мультиформартный плеер на двух AY/YM чипах, построенный на микроконтроллере ESP32
Что умеет:
Поддерживаемые форматы:
.ayl - Ay_Emul by Sergey Bulba собственный формат плейлиста
.pt1 - Pro Tracker v1
.pt2 - Pro Tracker v2
.pt3 - Pro Tracker v3 (включая Turbo Sound на двух AY чипах)
.stc - Sound Tracker
.stp - Sound Tracker Pro
.asc - Sound Master
.psc - Pro Sound Creator
.sqt - SQ Tracker
.ay - AY (эмуляция z80 в ESP32 DAC)
.psg - Programmable Sound Generator
.rsf - Registers Stream Flow
.yrg - формат от AVR-AY
UART режим (доступно в меню настроек плеера как Player Source)
Режимы проигрывания:
Проигрывание всех треков (в папке/плейлисте)
Проигрывание случайного трека (в папке/плейлисте)
Проигрывание одного трека по кругу (loop)
Поддержка реалтайм файл браузера
Преключение слоев AY в реалтайм:
ABC
ACB
BAC
BCA
CAB
CBA
Смена тактирования AY в реалтайм:
ZX SPECTRUM - 1773400 Hz
PENTAGON - 1750000 Hz
MSX - 1789772 Hz
CPC - 1000000 Hz
ATARI ST - 2000000 Hz
Встроенный аккумулятор
Встроенная зарядка и индикация светодиодами и на TFT
Встроенный усилитель для наушников управляемый по шине I2C
Управление:
Удержание кнопки энкодера - смена режимов: плеер/файл браузер
Клик по кнопке энкодера - в режиме плеера: play/pause; в режиме браузера: выбор трека/плейлиста/директории; в режиме настроек: выбор.
Двойной клик по кнопке энкодера - в режиме плеера: вход в меню настроек.
Нажатие и поворот вправо энкодером - перемотка вперед (ускорение) (для формата .ay - переключение следующего subsong).
Нажатие и поворот влево энкодером - замедление (для формата .ay - переключение предыдущего subsong).
Клик/удержание левой кнопки - громкость "-" (в режиме плеера); отмена - в меню настроек.
Клик/удержание правой кнопки - громкость "+" (в режиме плеера)
Двойной клик левой кнопки (в режиме плеера) - смена частоты тактирования AY
Двойной клик правой кнопки (в режиме плеера) - смена режима проигрывания: все/случайный/один трек(и)
Демонстрация работы плеера с записью и синхронной оцифровкой звука:
https://youtu.be/-dr-m1xszBs
Все детали проекта в репозитории GitHub (https://github.com/djspawnbrest/ESP32AY)
В репозитории есть все для самостоятельного повторения:
схема
герберы
прошивка (platformio)
stl файлы для печати корпуса
Добавлена функция быстрой прошивки без установки среды разработки прямо с браузера!!!
https://ota.alexspawn.ru
UPD 22.10.2024
Добавлена новая функция: «Режим UART» с плеером AVR-AY через UART.
UPD 09.02.2025
При первом использовании карты или любом первоначальном запуске "неизвестной" SD - теперь плеер ищет любой поддерживаемый файл на всей карте памяти, включая подпапки. Теперь нет необходимости помещать хотя бы один поддерживаемый файл в корень SD карты.
Мне очень нравится, красивое. А планируется коммодоровщина в будущем?
.ay - AY (эмуляция z80 в ESP32 DAC)
ещё-бы бипер добавить
Мне очень нравится, красивое. А планируется коммодоровщина в будущем?
Честно, пока не думал, но ресурсы в мк еще есть)
- - - Добавлено - - -
ещё-бы бипер добавить
Вообще это и есть бипер, формат ау включает в себя биперное звучание, отсюда и эмуляция для этого
Двойной клик левой кнопки (в режиме плеера) - смена частоты тактирования AY
по-уму (для формата AY) плейер должен сам выставлять частоту AY zx/msx/cpc ориентируясь на адрес порта.
ручной выбор тогда будет актуальным только для firm/pentagon
по-уму (для формата AY) плейер должен сам выставлять частоту AY zx/msx/cpc ориентируясь на адрес порта.
ручной выбор тогда будет актуальным только для firm/pentagon
Да сделать не проблема вообще для ау, частота была сделана сменной для остальных форматов больше. Эт кому как нравится слушать)
andykarpov
25.10.2024, 18:41
а можно полное имя модуля ESP32, плз ? а то их разных много этих WROOM'ов :)
и еще вопросик - а какой аккум предполагалось использовать и сколько он держит времени в активном режиме проигрывания?
и еще - на какой высоте от платы и как крепится дисплей?
и еще - энкодеров не бывает таких же, с выгнутыми наизнанку выводами? это просто гнуть, получается? оно выдерживает такие манипуляции?
и еще - какая высота крутилки у энкодера и высота кнопок?
и еще - как зовут ползунковый переключатель? и длина его торчка :)
- - - Добавлено - - -
я форкнул репу и чуток под себя платку переделал: https://github.com/andykarpov/ESP32AY/
изменения минимальные:
- заменен разъем usb на usb-C
- заменены футпринты деталей на 0805
- заменен футпринт TRRS-разъема
- немного подвинуты детальки под дип-микрухами, чтоб панельки не вырезать
- заменены и переставлены кнопочки esp32 (boot, en)
а можно полное имя модуля ESP32, плз ? а то их разных много этих WROOM'ов :)
ESP-WROOM-32 - я брал этот: https://aliexpress.ru/item/33000837172.html?spm=a2g2w.orderdetail.0.0.291d4aa 6ViWThx&sku_id=12000037070185530
и еще вопросик - а какой аккум предполагалось использовать и сколько он держит времени в активном режиме проигрывания?
тонкие мелкие li-po 3,7В, толщиной 5мм, можно два в параллель, есть место снизу платы и ложить можно один на энкодер, второй на esp. У меня стоит 450мА размерами 40х25х5мм - часа 2-3 жжужжит)
и еще - на какой высоте от платы и как крепится дисплей?
дисплей лежит по периметру на двухстороннем пупырчатом скотче в два слоя, каждый слой толщиной примерно в 1мм, а дальше его корпус сверху мягко прижмет чутка. не забываем отрезать торчащие выводы панелек АУ под корень.
и еще - энкодеров не бывает таких же, с выгнутыми наизнанку выводами? это просто гнуть, получается? оно выдерживает такие манипуляции?
Да, именно выгибать), сделано было чтоб габариты плеера сэкономить, и да - выдерживают.
и еще - какая высота крутилки у энкодера и высота кнопок?
высота энкодера ~12мм от верхней части основания самого энеодера. Что-то типа этого: https://aliexpress.ru/item/1005003752895006.html?sku_id=12000027044724296. Высота кнопок - 3мм от верхней пластины корпуса кнопки (т.е. высота самого пенька)
и еще - как зовут ползунковый переключатель? и длина его торчка :)
Как зовут - я точно не помню, можно вытянуть step из проекта KiCad или в самом KiCad посмотреть. Но я подбирал что были в магазине - у меня он размерами 4x4x9мм корпус и ползунок вылазит на 2мм, боковой.
- - - Добавлено - - -
я форкнул репу и чуток под себя платку переделал: https://github.com/andykarpov/ESP32AY/
изменения минимальные:
- заменен разъем usb на usb-C
- заменены футпринты деталей на 0805
- заменен футпринт TRRS-разъема
- немного подвинуты детальки под дип-микрухами, чтоб панельки не вырезать
- заменены и переставлены кнопочки esp32 (boot, en)
Видел!) Круто!) Еще у самого не дошли руки переделать на Type-C, но может и у тебя заберу) Пока еще код допиливаю) есть еще много идей)
Если что ТГ: AlexSpawn
Kalantaj
28.10.2024, 11:13
Последнее сообщение в теме было в июне. Тока я встретил этот плеер (к своему стыду - прошел мимо не заметив темы), заказал платы и рассказал на канале что буду паять мегаплеер. Пришли платки, детали не пришли ещё, а тут уже и Дед подсуетился - смотрю уже паяет (подслушал не иначе ). Так что ты не останавливайся - реализуй идеи софта. А мы его в массы будем продвигать - плеер то отличный, но вот 2-3 часа это несерьёзно. Часов 7-8 бы...
Последнее сообщение в теме было в июне. Тока я встретил этот плеер (к своему стыду - прошел мимо не заметив темы), заказал платы и рассказал на канале что буду паять мегаплеер. Пришли платки, детали не пришли ещё, а тут уже и Дед подсуетился - смотрю уже паяет (подслушал не иначе ). Так что ты не останавливайся - реализуй идеи софта. А мы его в массы будем продвигать - плеер то отличный, но вот 2-3 часа это несерьёзно. Часов 7-8 бы...
Спасибо!) Видел, слежу, в том числе и на твоем канале - приятно) По поводу времени игры, я думаю если туда положить емкость так в 1000мА - там и будет такое время)
Всем привет.
Решил поделиться опытом сборки сего девайса и немного оживить тему.
Столкнулся с тем, что у автора нигде не указано, а какой все же дисплей надо ставить. По схеме еще можно понять, что он должен быть на базе контроллера ST7789, но ни размеров, ни разрешения нигде прямо не указано.
Покопавшись в исходниках и посмотрев герберы, прикинул что это дисплей 2.4" с разрешением 320x240. Начал иcкать такой на алике (с 18 пиновым шлейфом) и к моему удивлению, дисплей на базе ST7789 я не нашел по адекватной цене. Почему-то на них задран ценник за доставку, и если заказывать один дисплей, то выходит больше 10$. Решил на свой страх и риск заказать на другом контроллере, а именно на ILI9341, так как нашел по хорошей цене <3$ (ссылка на продовца https://aliexpress.ru/item/1005007911475769.html)
Так вот, в итоге дисплей заработал, но пришлось совсем чуть-чуть поменять исходники.
82636
Если кто захочет повторить, нужно в файле lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h поменять в "#define ST7789_DRIVER" на ILI9341_DRIVER:
--- a/lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h
+++ b/lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h
@@ -7,7 +7,7 @@
//#define ST7735_DRIVER
//#define ST7735_GREENTAB2
-#define ST7789_DRIVER
+#define ILI9341_DRIVER
//#define ST7789_2_DRIVER
//#define CGRAM_OFFSET // Library will add offsets required
Вот небольшенькая дока на этот дисплей:
82637
Вот бинарник для прошивки с драйвером ILI9341 для ревизии C: 82638
Предложение автору - может стоить добавить поддержку нескольких контроллеров дисплеев?
Всем привет!
Спаял на плате ревизии В, ESP32 компом увиделась - прошил ZxPod Player Release 3.6 ota.alexspawn.ru (https://ota.alexspawn.ru/) - но девайс пока не заработал, стартует просто с белым экраном. AY в панельки пока не вставлял, но думаю это не критично. Посоветуйте пожалуйста, что проверить в первую очередь. Из приборов только мультиметр.)
Еще в логе прошивальщика ota.alexspawn.ru есть сообщение типа этого - No I2C amplifier detected , как будто не находит микруху усилителя TPA6130A2RTJTG4
Итак, рассказываю:
Дисплей стал показывать после модификации платы ревизии В до ревизии С (пару дорожек перерезать и перепаять их на другие ноги STM32. Потом оказалось что нет звука (No I2C amplifier detected), перепаял усилок - звук пошел. Но пошел только с DAC самой STM-ки, с AY звука пока так и нет.
Сейчас в логе вот так:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd _drv:0x00,wp_drv:0x00
mode: DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
Amp found on address: [99(0x63)]
EEPROM not found on I2C
RTC not found on I2C
Запустил плеер!
Не надо было запаивать С29 и С30.
Необходимо было сделать модификацию rev A and B to C https://github.com/djspawnbrest/ESP32AY/blob/main/PCB/UpgradeToRevC/fromAandBtoC.JPG?raw=true
Пару раз пришлось перепаять усилитель, в итоге он сел на плату корректно и заработал.
Из странного:
Некоторые MOD звучат с артефактами. Некоторые MOD ресетят плеер.
Запустил плеер!
Не надо было запаивать С29 и С30.
Необходимо было сделать модификацию rev A and B to C https://github.com/djspawnbrest/ESP32AY/blob/main/PCB/UpgradeToRevC/fromAandBtoC.JPG?raw=true
Пару раз пришлось перепаять усилитель, в итоге он сел на плату корректно и заработал.
Из странного:
Некоторые MOD звучат с артефактами. Некоторые MOD ресетят плеер.
Забросьте ваши моды которые сбрасывают плеер сюда: https://t.me/AlexSpawn я проверю что с ними не так
Выловлю, сообщу. На слух названия не знаю, просто играло, а потом затыкается и черный экран. Не ребут скорее, а зависание получается. Переслушаю папку с музякой - постараюсь названия выловить.
Почему DIN DAC на фото подключен к R33, хотя в описании он должен быть подпаян только к GPIO26?
https://github.com/djspawnbrest/ESP32AY/raw/main/PCB/ExternalDAC/img1.jpg
Впаял внешний DAC, работает зараза! Поет). Спасибо djspawn, подсказал что да как
- - - Добавлено - - -
Если кто делал плейлист .ayl , то скиньте плиз пример содержания его. Я пока не понял, как отредактировать его. Убирал буквы диска, убирал-оставлял слеши, убирал остальную инфу - нифига.
Отвечу сам себе. Генерим плейлист, открываем его в Notepad++, запускаем автозамену.
Сначала удаляем имя диска, те например, делаем автозамену C: на пустое значение.
Далее, удаляем метаданные, опять автозамена, в качестве шаблона используем такую конструкцию - ^(?!\\MOD2\\).*$\R? где \MOD2\ это имя папки с файлами.
Возвращаем в самое начала файла строку - ZX Spectrum Sound Chip Emulator Play List File v1.6
В итоге, содержимое будет выглядеть так:
ZX Spectrum Sound Chip Emulator Play List File v1.6
\MOD1\- (2).mod
\MOD1\- unknown -6.mod
\MOD1\- unknown -7.mod
\MOD1\! (2).mod
\MOD1\!!!!!!dealwithdope.mod
\MOD1\!!!!parametric.mod
\MOD1\!!!alchemist2.mod
\MOD1\!!!badboys remix.mod
\MOD1\!.czas.to.pieniadz.mod
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot