![]() |
![]() |
|||||||||||||||
Чиптюновый плеер-синтезатор на двух чипах AY-3-8910/YM2149F "ChipTune_Player 2.22"
Автор: Вадиматоричик, deryabkinda@mail.ru ОГЛАВЛЕНИЕ
БЛАГОДАРНОСТИ ВВЕДЕНИЕ В далеком 2009 году, когда я только перешел в старшую школу, я узнал о существовании когда-то популярного домашнего компьютера zx-specturm. К сожалению, в наличии такого компьютера у меня не было, однако был выход в интернет. Так что я начал искать видео с этим компьютером. Первым же найденным роликом было воспроизведение музыки с трекерного редактора protracker. Звук меня очень впечатлил. Сумев найти плеер под windows xp (ayemul от Сергея Бульбы), я начал искать по сети различные треки, написанные под этот компьютер. Со временем их стало за сотню и я захотел попробовать прослушать их на настоящем железе. Немного поискав на аукционах города, я нашел один из клонов этого компьютера, в котором был установлен звуковой чип Yamaha YM2149F (являющийся аналогом AY-3-8910 с определенными оговорками). Так же в компьютере присутствовал floppy дисковод. Далее пришлось изучить достаточно много для пятиклассника литературы (в основном, форумы. Много форумов), чтобы записать на дискету (которая уже на тот момент в продаже была редкостью) простенький плеер и несколько треков, понравившихся при прослушивании в эмуляторе. Звук хоть и не сильно, но все же отличался от того, что я слышал в эмуляторе даже при указании всех параметров эмуляции как в имеющимся компьютере. "Железная" версия меня впечатлила сильнее, чем программная. Вследствие чего мне захотелось слушать именно на настоящем чипе. Но постоянно записывать дискеты - то еще удовольствие, которое быстро надоедает. Так что я твердо решил - я сделаю плеер, который мог бы воспроизводить звук с флешки! ИСТОРИЯ РАЗВИТИЯ ПРОЕКТА Те, кому интересен только конечный результат, могут пропустить этот раздел. ИЗУЧЕНИЕ СУЩЕСТВУЮЩИХ РЕШЕНИЙ Я начал поиски аналогов, но смог найти только версию, которая тянула львиную долю самого zx-specturm. Как следствие имеющую огромное потребление. Вероятность успешной сборки такого устройства школьником со слабом владением паяльником мне показалось очень низкой и я с грустью отбросил эту идею (хоть и очень не сразу). Продолжив поиски смог найти еще только зародившуюся тему на zx-pk. На тот момент там ничего вменяемого не было. Полностью отчаявшись я забыл про эту идею... Но годы шли и примерно раз в год, как весеннее обострение, мне хотелось создать это устройство. С каждым годом мой опыт рос и в какой-то момент мне пришло осознание, что я смогу если не создать с нуля, то хотя бы собрать существующую "тяжелую версию". Но перед этим я решил проверить, на сколько продвинулась за несколько лет разработка, которую я увидел на zx-pk. Я был приятно удивлен! Т.к. нашелся человек, который довел идею до рабочей практической реализации. Сразу же попробовал собрать данное устройство на макетной плате.
Изготовил на тот момент популярным ЛУТ-ом. Однако устройство без корпуса - никуда не годится. Тем более носимое. Я вспомнил, что мой друг как раз собирается поступать на архитектора (дело уже было в конце 10-го, начале 11-го класса). И тут меня озарило, что надо дать ему "вступительный тест". Он, особо не сопротивляясь, согласился создать модель корпуса. Ввиду большого потребления плеера - требовался весьма емкий источник питания. Так что примерно половину пространства занимали аккумуляторы. Однако, это уже было похоже на носимое устройство. Хоть и довольно тяжелое. Помимо разработки модели нужно было придумать, как его изготовить. В то время уже во всю везде говорили о 3D-принтерах и у многих предприятий они были. Но денег у меня тогда особо не было (экономил на еде и транспорте в пользу компонентов для плеера). Немного поискав, я узнал, что есть место, где школьникам и студентам дают оборудование для реализации своих идей взамен на то, что по окончании создания устройство организация приписывает себя как один из помощников и выкладывает на свой сайт в качестве рекламы фото. В моем городе была такая организация. Там мне с радостью предоставили оборудование. После печати вышло следующее. Далее нужно было немного привести корпус в порядок (сгладить неровности печати) и покрасить. Оставалось лишь собрать. Так устройство обрело конечный вид.
Однако через некоторое время я понял, что меня многое не устраивает в текущем устройстве. Ограниченный функционал, отсутствие кнопки "удалить" (автор был категорически против добавления записи не флешку) и многое другое. Так что в конечном счете я решил, что создам свое устройство. ИТЕРАЦИЯ ПЕРВАЯ На момент, когда я строго решил начать делать свое устройство, я заканчивал первый семестр университета и работал в компании по производству беспилотных летательных аппаратов начинающим программистом. Так что было с кем проконсультироваться по схемотехническим вопросам. Я не упустил этой возможности и тщательно изучал, как у нас на предприятии разводятся платы, пишется код под различные устройства и многое другое. На тот момент я активно увлекался российскими микроконтроллерами и подумал, что было бы неплохо сделать устройство на одном из них. А конкретно - К1986ВЕ92QI, так как он мне больше всего понравился из всех, с которыми я на тот момент работал. Так же решил разместить клавиши на одной плате с экраном от nokia 1100. В качестве звукового генератора выбрал AY-3-8912 (28-миножечное исполнение AY-3-8910 почти с теми же параметрами). Плату полностью переделывал порядка 5 раз, пока коллега с работы не одобрил получившийся результат. За что ему спасибо. Читая параллельно <<умные книжки>> по схемотехнике и радиоэлектронной аппаратуре, учился "понимать электричество", составлять продуманные схемы и профессионально разводить печатные платы. В конце концов - смог составить схему и развести по ней плату, которая прошла <<контроль>>. Размер платы был чуть меньше кредитной карты. Выглядела она так. А в изготовленном виде должна была выглядеть так. Изготовленная в Резоните плата выглядела так. Однако послушать звук с этой платы в итоге не удалось. Микроконтроллер в упор не хотел подключаться по SWD интерфейсу ни к J-Link-у, ни к st-link-у, ни к MT-Link-у (аналог J-Link-а от Миландра). Хотя разводка полностью совпадала с той, что была у нашего серийного устройства на этом же чипе и точно работала. Отсюда даже шутка пошла: "Чтобы устройство на российском микроконтроллере работало, нужно личное одобрение ФСБ!". Однако данная плата помогла тем, что после попытки собрать ее стало понятно, как следует размещать компоненты, чтобы было удобно собирать и отлаживать устройство. ИТЕРАЦИЯ ВТОРАЯ Изучив предыдущий неудачный опыт и поняв, что текущая реализация не устранит всех моих «хочу», я решил кардинально переработать устройство. Сделать его на 2 звуковых чипа, работающим на базе STM32 с возможностью работать не только плеером, но и аналоговым синтезатором (по MIDI, UART, или USB). При этом хотелось оставить примерный размер предыдущего неудачного образца. Для реализации платы в пределах задуманных габаритов было решено подключать экран и клавиатуру с помощью кабелей, а не размещать их на плате. В качестве экрана был выбран шилд с экранам на контроллере ST7565R (питающимся от 3.3 вольт). Плату клавиатуры решил развести сам. Так как не смог найти в продаже подходящего модуля. В дополнение заложил в устройство два разъема под micro-sd карты. Один для пользователя, другой для системных нужд. Спустя год, тщательно проработав схему и вложив в нее все, что мне хотелось, вышел следующий результат:
В этот раз устройство заработало и я смог протестировать на нем многие функции. Однако тут возникла проблема с программным обеспечением. Я писал его основываясь на корпоративном API, а его открытое распространение запрещено. Поскольку мне хотелось, чтобы проект был открытым, пришлось потратить время, тщательно изучить выбранный контроллер «изнутри» и написать свое собственное открытое API, которое не используют ничего (включая файлы от ST), кроме библиотек, идущих в составе с тулчейном (полностью бесплатные и открытые) и библиотек распространяемых под полностью свободной лицензией. Несмотря на то, что плата выполняла свои функции и прекрасно сгодилась в качестве тестового образца, в ней было множество мелких ошибок (провода на задней части платы это подтверждают). К тому же, в погоне за размером конечного устройства я применял smd компоненты размера 0402, что уже значительно усложняло монтаж. А размещение под DIP панелями вообще лишало всякой возможности что-то легко починить (особенно микросхемы цифровых потенциометров). Да и монтаж существенно усложнился (при том, что 60% площади пустовало). К тому же в виду недостатка опыта и знаний не смог верно развести развязку звуковой части. ИТЕРАЦИЯ ТРЕТЬЯ Чисто для себя - мне бы хватило на некоторое время и имеющегося результата. Но тут я узнал о том, что скоро на любимом РадиоКоте конкурс, который я все время по той или иной причине пропускал. Я решил, что это отличный шанс распространить информацию о том, что мой проект уже можно более-менее использовать. Но просить делать перемычки навесным монтажом в конечном конкурсном устройстве - не комильфо. По-этому, взяв отпуск на все 36 дней, я решил всерьез засесть за проект. Исправить мелкие недоработки, привести в порядок программное обеспечение и прочее. Так за месяц бессонных ночей как перед сессией, я смог довести до ума базовый функционал плеера (синтезатор в данный момент в процессе в тестовых ветках программного обеспечения). Большую часть компонентов сделал 0805 и выше. Добавил больше свободного пространства для более удобного монтажа. Сделал отверстия под стандартный шаг (в предыдущей версии использовал 1.27 мм). Применил контроллер с большим количеством Flash (взял про запас 1 МБайт. Хоть на данный момент прошивка и занимает всего 260 кб). Помимо этого пере развел аудио-часть и добавил блоки для экономии энергии (возможность отключать чипы когда они не работают). Вышел следующий результат.
Но, опять же, снова встал вопрос о корпусе. Тут мне снова помог коллега с работы, которому понравилась задумка. За пару дней мы обсудили детали и он показал итоговый результат. Корпус помогли изготовить из алюминия ребята из цеха на работе средствами ЧПУ станка. Далее отправил корпус на анодировку. Оставалось только произвести гравировку. Не и собрать) ОБЗОР УСТРОЙСТВА АППАРАТНЫЕ ХАРАКТЕРИСТИКИ Звук
Логическая часть
Питание:
ПРОГРАММНЫЕ ХАРАКТЕРИСТИКИ Так как с аппаратной частью было закончено буквально вчера, то с программными характеристиками все не так радужно.
ПОВТОРЕНИЕ УСТРОЙСТВА Проект активно развивается и все изменения можно наблюдать на github-е. Основной проект, называемый chiptune_player_2.22, содержит в себе множество субмодулей. Среди которых хотелось бы выделить исходный код самого устройства и проект со всей аппаратной частью (исходники печатных плат, gerber файлы изготовления, схемы в pdf, сборочные чертежи), называемый ayplayer_board. Для сборки программного обеспечения проекта необходим тулчейн arm-none-eabi не старее версии 6-2017-q2-update. Сборку выполнять из под Linux машины (в будущем доработаю makefile, чтобы можно было собирать и из windows). Так же в скором времени в основном репозитории появится папка doc, в которой будут более подробные инструкции по изготовлению, прошивке, пусконаладке, тестированию, сборке, использованию. Вот и все. Следите за обновлениями. Удачи!
БЛАГОДАРНОСТИ Спасибо:
Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |