Обложка статьи «Новая жизнь дискет: что такое флопотрон и как его сделать»

Новая жизнь дискет: что такое флопотрон и как его сделать

Многие ли помнят флоппи-диски? История похоронила гибкие носители ещё в 90-х. Единственное, что осталось от них — это дизайн иконки «Сохранить». Дискеты не могли идти в ногу с технологиями — объёмы программ и данных стремительно увеличивались. 2,88 МБ данных, которые помещались на стандартные 3,5-дюймовые дискеты, стало не хватать. Потребители перешли на оптические носители. Спустя десятилетия пользователи забыли о дискетах, а флоппи-дисководы стали чем-то вроде посуды в серванте. Но только не для польского инженера Павла Задрожняка. В далёком 2011 году он собрал устройство, состоящее из двух флоппи-приводов и назвал его соответствующе — «Floppotron». На нём он «сыграл» Имперский Марш. Ролик завирусился и Павел двинулся дальше.

В 2016 году инженер представил миру вторую версию своего музыкального инструмента. Его комплектация стала более внушительной: 64 флоппи-дисковода, 8 жёстких дисков и 2 сканера. На своём YouTube-канале Павел исполнил более сотни популярных песен.

Он вдохновил многих людей. Кто-то собирал несложные флопотроны из нескольких приводов, а кто-то пробовал извлекать звуки из более нестандартных для флопотрона устройств. Например, канал Device Orchestra создаёт мелодии с помощью платёжных терминалов, зубных электрощёток и даже паровых очистителей.

Floppotron v2 — детище польского инженера Павла Задрожняка

Принцип звучания

В флоппи-приводах, сканерах или же платёжных терминалах источник звука один — шаговый двигатель. В случае с флоппи-приводом он перемещает считывающую головку. При работе двигателя издаётся звук. Изменяя скорость шагового двигателя можно изменять частоту извлекаемого звука, т. е. ноты. Как правило, последовательность этих нот достаётся из midi-файла.

Управление флоппи-приводом

У привода два разъёма — один для питания («mini-molex») и второй для управления (FDD). Запитывается дисковод сразу от 5В и 12В. Отличным решением будет использовать компьютерный блок питания. При работе с ним не забудьте замкнуть контакт PS_ON с контактом COM, чтобы включить его. Однако, подойдёт любой другой БП с такими же напряжениями. Главное, чтобы хватало выходного ампеража.

Разъём «mini-molex» имеет два контакта земли посередине и контакты 12В и 5В по бокам. Контакт 12В расположен слева и нередко с его стороны имеется «ключ», не дающий присоединить штекер не той стороной.

Хоть разъем FDD имеет пугающее количество контактов, оттуда понадобится всего два — 18 и 20.

18 контакт называется «Stepper Direction», и по нему устанавливается направление движения пишущей головки. 20 контакт называется «Step Pulse» и он уже непосредственно «толкает» шаговый двигатель.

Помимо этого нужно разрешить работу двигателя. Для этого нужно замкнуть на землю 12 контакт разъёма «Drive Select B». Это можно сделать либо джампером (перемычкой) между этим контактом и нижним (11 — землёй), либо непосредственно присоединить 12 контакт к проводу земли. Варвары же могут попросту загнуть этот контакт вниз, чтобы тот соприкасался с нижним контактом.

Схема подключения к флоппи-приводу

Контроллер

Управлять флопотроном можно со всего, что только можно запрограммировать: Arduino, Raspberry, STM. Подойдут даже обычные микроконтроллеры AVR или PIC. Главное, чтобы контроллер работал на 5-вольтовой логике, иначе нужно будет использовать конвертер логических уровней. В этой статье будет использоваться самая популярная модель платформы Arduino — Uno.

Коммутация

Для простого флопотрона кроме самих флоппи-дисководов и контроллера понадобятся только соединительные провода. Всего к приводу должно идти 5 проводов: 2 управляющих, 12В, 5В и земля.

Подключение проводов к флоппи-приводу

Обратный конец управляющий проводов будет подключаться к Uno. Остальные же провода (т. е. шины питания) нужно будет подключить к блоку питания. Если дисководов не слишком много, отличным решением будет подключить их через клеммный зажим. Провода от дисководов будут вкручиваться с одной стороны, провода от блока питания — с другой. В таком случае всегда можно будет без труда запитать новые дисководы, ничего при этом не распаивая.

Один из способов подключения питания флоппи-приводов

Дополнительными проводами нужно отвести шину питания 5В и землю и подключить их к пинам платы Uno.

Коммутация проводов с платой Uno

Программная часть

Если вы решили использовать Arduino, то в первую очередь нужно установить Arduino IDE. Также стоит помнить, что для работы с клонами Arduino нужно установить соответствующий драйвер CH340G. Обо всём этом можно почитать в нашей статье.

Вначале стоит проверить флоппи-приводы на работоспособность. Для этого можно запрограммировать контроллер на какие-нибудь простые операции. Например такие:

int step = 2, direct = 3; // Управляющие пины

void setup() {
pinMode(step, OUTPUT);
pinMode(direct, OUTPUT);
}

void loop() {
for(int i = 0; i < 80; i++){ //Прогоняем считывающую головку по всей длине
digitalWrite(step, HIGH);
delay(10);
digitalWrite(step, LOW);
}

digitalWrite(direct, !digitalRead(direct)); // Меняем направление движения
}

Этот скетч должен заставить флоппи-привод, подключённый к первому каналу (2 и 3 пин), двигать считывающую головку равномерно по всей рабочей длине. Как только головка подходит к концу, направление движения инвертируется и цикл повторяется.

После того, как вы проверите все приводы, можно приступить к созданию программной части для флопотрона или просто использовать уже готовое решение.

Moppy — продвинутый контроллер для флопотрона. Он состоит из двух частей: прошивки для Arduino, которая непосредственно управляет флоппи-приводами, и компьютерной программы, которая посылает команды на контроллер по USB-кабелю.

Скачиваем последний релиз программы. Первый архив содержит скетч для Arduino, второй — программу для ПК.

Примечание Для работы прошивки нужна библиотека «TimerOne». Её можно найти в Менеджере Библиотек. Для этого откройте Скетч→Подключить Библиотеку→Управлять Библиотеками. Через поисковую строку открывшегося Менеджера Библиотек можно найти необходимую библиотеку «TimerOne».

После установки библиотеки прошивка готова к работе. Осталось выбрать порт, к которому подключена Uno, и прошить её.

Первый привод подключается к 2 и 3 пину платы («Stepper Direction» и «Step Pulse» соответственно). Следующий привод к 4 и 5, потом к 6 и 7 и так далее. К Uno можно подключить до 9 приводов (до пина A5). После подключения всех флоппи-приводов можно включать блок питания.

Воспроизведение

В папке с программой для ПК нужно запустить файл bin/MoppyControlGUI.bat. В открывшемся интерфейсе важны только два окна: окно выбора файла и окно выбора порта.

Остаётся лишь выбрать порт, к которому подключена Uno, загрузить midi-файл и нажать на кнопку воспроизведения. Однако, это не весь функционал Moppy. В этой программе, к примеру, можно воспроизводить звук напрямую от midi-устройств.

Хоть флоппи-приводы и способны извлекать из себя звук, их громкости хватает не всегда. Эту проблему можно решить двумя способами. Первый — дублирование одного midi-канала несколькими приводами. В таком случае флопотрон обретёт тембр для каждого канала. Второй же способ более экономичен — каждый привод можно поставить на какой-нибудь резонатор. Подойдёт обычная картонная коробка. В таком случае громкость даже от одного привода значительно увеличится.

Откуда брать midi-файлы?

Есть несколько источников:

  • Найти готовый midi-файл нужной песни. Однако, шанс того, что файл сразу подойдёт для флопотрона, очень мал. Скорее всего, его нужно будет редактировать.
  • Специальные программы для midi-файлов. Например MidiEditor. В ней вы сможете как создать новый файл, так и отредактировать существующий (поменять местами или объединить дорожки).
  • Нотный редактор. Например Guitar Pro. Для него есть множество готовых композиций, которые с лёгкостью можно экспортировать в midi-файл. Обратите внимание, что каждый канал в midi-файле соответствует отдельному подключённому флоппи-приводу. Обычно к одной нотной дорожке в Guitar Pro подвязываются сразу два канала. Привязку каналов к дорожкам, естественно, можно редактировать.
  • Использовать готовые midi-файлы, созданные специально для флопотрона. Например в этом репозитории, или в документах этой группы.

Не смешно? А здесь смешно: @ithumor