DIY-проект: кассета на Arduino для ZX Spectrum

20-30 лет назад кассеты были самым популярным средством хранения аудиозаписей. Их применяли и для хранения данных, в частности, программ для 8-битных компьютеров. Именно кассеты использовались для загрузки и сохранения программ для ZX Spectrum.

Тем не менее, кассет становится все меньше, несмотря на то, что поклонников ZX Spectrum и других подобных ПК довольно много. Конечно, можно использовать эмулятор ZX Spectrum под Windows или Linux. Но это все же менее лампово, чем реальный компьютер. Есть еще один выход — найти замену кассете.

Пользователь с ником JamHamster решил пойти по этому пути. Его решение — устройство, которое внешне походит на привычную аудиокассету, работает с кассетным магнитофоном, но вместо магнитной ленты в нем используется SD-карта. По замыслу энтузиаста, такая «кассета» должна вставляться в магнитофон для передачи сигналов в ZX Spectrum или подключаться через аудиовыход. Кстати, решения для загрузки программ с кассет есть — например, TZXDuino для работы с ZX Spectrum, ZX81 и Amstrad CPC, но оно показалось разработчику слишком громоздким.

Подготовка к сборке

JamHamster выбрал для сборки плату Arduino Nano (размер платы всего 7 мм), на которой разместил устройство чтения карт памяти, усилитель и небольшой дисплей. В качестве софта для взаимодействия с ZX Spectrum — программное обеспечение, которое ранее разработали Эдрю Бир и Дункан Эдвардс.

Энтузиаст пояснил, что форм-фактор кассеты был выбран для сохранения аутентичности.

«Мне кажется, что загрузочные SD-устройства в виде кассет — правильное решение. Они выглядят прикольно и хранятся в стандартном подкассетнике, дизайн которого мне очень нравится», — рассказал JamHamster.

Проблемой для размещения всех компонентов стали физические размеры корпуса кассеты. Поэтому JamHamster провел ряд модификаций. Например, дисплей и устройство для чтения SD-карт были физически уменьшены. Некоторые модули, в частности, USB-порт, пришлось «повесить» на провода, чтобы уместить конструкцию в корпус. А аудиовыход разработчик сделал самостоятельно.

Дополнительно JamHamster дал несколько советов тем, кто захочет повторить его эксперимент:

  • Не припаивайте компоненты внутри корпуса, так как он хрупкий и быстро повреждается.
  • Проверяйте работоспособность компонентов перед установкой.
  • Паять провода нужно поверх контактных площадок, а не насквозь.
  • Не пересекайте провода, чтобы не увеличивать толщину конструкции.

Собираем кассету на Arduino своими руками

JamHamster подготовил инструкцию для тех, кто захочет повторить его эксперимент. В ней можно найти форму, по которой нужно обрезать печатную плату, чтобы влезли все компоненты. На нее сначала устанавливается регулятор громкости так, чтобы колесико свободно вращалось и торчало из корпуса кассеты.

Для создания аудиовыхода (его придется делать вручную) понадобится стальная пружина диаметром 3,5 мм. Если ее нет, то этот элемент можно без проблем создать, используя сверло соответствующего диаметра. Далее при помощи джека наушников выверяется длина, и все это припаивается к плате. Аудиовыход используется в том случае, если нет кассетного магнитофона. Через него гаджет подключается напрямую к компьютеру и передает сигнал.

Что касается работы «кассеты» с магнитофоном, то для реализации этой возможности в устройство встроена магнитная пишущая головка, сигнал которой считывается уже другой головкой, но в кассетнике. К сожалению, выходной мощности микроконтроллера недостаточно, поэтому разработчик добавил миниатюрный усилитель PAM8403 (2 x 3Вт). Он достаточно портативный, так что общие габариты конструкции увеличились ненамного.

Подвод питания во время работы не требуется, поскольку в «кассете» есть собственный аккумулятор.

Также в корпус устанавливаются пять кнопочных переключателей для управления устройством чтения SD-карт. Кстати, хранение данных реализовано не в виде .exe или .txt файлов. Вместо этого используются аудиодорожки, которые содержат в себе код программ. Именно так хранились данные на аудиокассетах с магнитной пленкой.

Основная сложность — поместить плату в корпус кассеты. Над решением этого вопроса автору пришлось поломать голову, но в итоге он нашел решение. Ниже показано, как нужно правильно обрезать платы дисплея, SD-ридера и перепаять USB-порт для экономии пространства на плате. Для крепления компонентов к плате можно использовать горячий клей.

Экран помещается между колесиками кассеты — так его будет лучше видно. Кстати, в коде ПО придется внести изменение, чтобы перевернуть изображение на мониторе.

Это несложно. Достаточно заменить кусок кода:

#define ROTATE180 1 
//#define UNROTATE 1

на:

//#define ROTATE180 1 
#define UNROTATE 1

Теперь остается установить элемент питания, развести проводку, как указано в оригинальной инструкции, и проверить работу всех компонентов. После чего можно тестировать на ZX Spectrum.

На реализацию проекта разработчик потратил немало времени, но результат стоил того. JamHamster и повторившие его работу энтузиасты остались очень довольны тем, что вышло в итоге.