Встречайте Floppotron 3.0

Встречайте Floppotron 3.0

Встречайте Floppotron 3.0

Спустя долгое время пришло время для большого обновления моего компьютерного оборудования. Вот! Чем больше и лучше Floppotron 3.0. 512 дисководов для гибких дисков, 4 сканера и 16 жестких дисков.

Моя шумная штуковина немного выросла с момента последнего обновления. Он имеет собственное «студийное» пространство и стал относительно сложным устройством. Там куча кабелей, куча кастомных электронных схем, но вся сила в прошивке, переписанной с нуля. В этой статье я постараюсь объяснить принцип работы, как она устроена, как работает вся система, чего еще не хватает, предоставлю еще несколько технических подробностей для ботаников и отвечу на наиболее часто задаваемые вопросы.

Так как же все это работает?

Чтобы не отпугнуть нетехнических читателей, я начну с основных принципов работы и объясню, откуда берутся эти звуки. Каждое механическое устройство с электродвигателем или любыми другими движущимися частями создает шум в качестве побочного эффекта. Иногда этот шум можно контролировать. и превратились в музыку, что обычно связано с некоторым уровнем злоупотреблений. Все устройства, присутствующие в «оркестре», содержат либо шаговые двигатели, либо движущиеся головки (в случае жестких дисков), которые управляются специальными электронными схемами — контроллерами. Эти контроллеры подключены к сети и могут управляться с компьютера, чтобы определенное устройство (например, сканер № 2) издавало определенный звук (например, постоянный тон 440 Гц, который соответствует ноте A4 в музыке) в определенный момент времени. Последовательность этих шумов и тонов создает музыку, как и в случае с настоящими инструментами. Звучит просто? В принципе да, но в больших масштабах все усложняется.

Как это сделано?

Машина превратилась в относительно большую систему с несколькими нестандартными печатными платами и деталями, напечатанными на 3D-принтере. При создании нового флоппотрона одним из главных приоритетов (если не главным) было закончить его в разумные сроки. Это по-прежнему хобби-проект, сделанный в нерабочее время, а не что-то коммерческое или серийное, поэтому вы найдете как хорошее решение, так и несколько дрянных, быстрых и грязных - и в этом красота хобби-проектов. Давайте немного более технически. Чтобы объяснить, как работает система, я сначала пройдусь по обзору, а затем подробно расскажу о каждом отдельном блоке. Вот упрощенная схема машины.

Чтобы заставить старое компьютерное оборудование играть, нам нужен набор электронных контроллеров, упомянутых ранее, а также правильная музыка (музыкальная последовательность) для воспроизведения. Мелодия кодируется как последовательность MIDI-событий в том же формате, что и все цифровые синтезаторы. MIDI не несет никаких фактических аудиоданных, а только короткие события, такие как нажатие клавиши пианино или поворот ручки управления — вы можете думать об этом как о цифровой форме нот. Эти события отправляются с компьютера на шлюз с помощью адаптера USB-MIDI. Шлюз представляет собой специальное устройство на базе микроконтроллера nRF52, которое находится между ПК с MIDI-адаптером и сетью «инструментальных» контроллеров. Он получает данные MIDI и преобразует их во внутренний протокол на основе RS-485, который может инкапсулировать MIDI и некоторые дополнительные данные. Шлюз, протокол и обоснование описаны в следующем разделе. Эти сообщения выбираются контроллерами, которые преобразуют цифровую информацию в звук, приводя в действие электродвигатели или перемещая головки жесткого диска. Контроллер состоит из общей платы MCU с чипом Nordic nRF52832 и плат драйверов, специфичных для «инструмента», таких как дисковод для гибких дисков, планшетный сканер или жесткий диск. Если вы гадаете, зачем там чип с поддержкой Bluetooth — я тоже объясню, но сначала поговорим о том, как создается звук.

Стена дисковода гибких дисков

Гибкий диск содержит магнитный диск внутри, который считывается и записывается дисководом (FDD). Данные сохраняются магнитной головкой, перемещаемой по поверхности вращающегося диска, который включает в себя два двигателя. Один в середине привода, который вращает диск, а второй приводит в действие линейный механизм, который перемещает головку по радиусу диска. Это последний, шаговый двигатель, который издает звук поиска FDD. Головка в сборе перемещается вперед и назад небольшими шагами, и каждый из этих шагов издает щелчок. Если частота шагов достаточно высока, то он воспринимается как постоянный тон, высота которого зависит от скорости движения.

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

Управлять одним FDD легко, так как он предоставляет простой цифровой интерфейс для управления положением головки на своем 34-контактном разъеме. Для перемещения головы требуется всего 3 сигнала – EN (включение), DIR (направление) и STEP. Начальный шаг выполняется по заднему фронту сигнала STEP в направлении, выбранном состоянием вывода DIR, при условии, что EN активен (логический «0»), что также зажигает светодиод на передней панели привода. Подключение и управление большим количеством дисков немного усложняет задачу.

Чтобы подключить такое количество дисков, я сделал набор адаптерных плат с последовательным подключением, содержащих буферы и сдвиговые регистры (управляемые с помощью SPI), обеспечивающие больше выходов. Генерировать последовательности сигналов для такого количества приводов сложно, но мне удалось добиться отличной производительности с помощью некоторых программных приемов и использования PPI (специального периферийного устройства, присутствующего в скандинавских чипах), чтобы снять значительную часть генерации сигналов с ЦП. . В текущей конфигурации один контроллер управляет до 192 дисков, поэтому я использую 3 контроллера для управления 512 FDD. Все еще возможно большее количество дисков на контроллер с некоторой дальнейшей оптимизацией (для сохранения удовлетворительного временного разрешения), но на данный момент в этом нет необходимости.

Стена FDD состоит из 8-дисковых блоков, соединенных между собой рельсами, напечатанными на 3D-принтере. Каждый блок имеет один адаптер (собранный на местном производственном предприятии SMT), подключенный к первому приводу. Остальные семь накопителей подключаются к выходам адаптера самодельными кабелями с разъемами Dupont. Прокладка кабеля была самой утомительной частью. Я планировал заказать такие кабели на местном заводе, но из-за того, что срок изготовления превышал пару месяцев, я решил пойти быстрым и грязным путем. Я заказал в хобби-шопе пакет так называемых радужных кабелей, снял ножом пластиковые разъемы 1х1 ((512 – 64) дисков * 4 провода * 2 стороны!) и поставил более крупные 2-рядные разъемы. Я также сначала экспериментировал с несколькими разъемами IDC 2,54 на одном ленточном кабеле (чтобы избежать путаницы с кабелем, как в предыдущем FLoppotron) — все прошло довольно хорошо, но требовалось собрать жестяной адаптер для печатной платы для каждого диска, что также увеличило бы время и затраты. Я выбрал решение, которое, возможно, выглядит не так уж круто, но было быстрее, проще и дешевле. Я не смог найти готовых кабелей для питания FDD, поэтому мне пришлось делать эти кабели и обжимать разъемы вручную. Каждый стек дисков имеет 3D-печатное основание, в котором находятся контроллеры и платы питания со сбрасываемым предохранителем. На каждый блок из 8 дисков приходится один самовосстанавливающийся предохранитель со светодиодным индикатором, поэтому отказ (короткое замыкание) привода приводит к отключению блока до тех пор, пока короткое замыкание не будет устранено. Это защищает кабели и упрощает замену вышедших из строя дисков (до 30 лет), которые, кстати, иногда выходят из строя. Пластиковая основа с тонкими пластиковыми направляющими — не самая прочная конструкция, но пока этого достаточно.

Планшетные сканеры

Флоппи-дисководы хорошо воспроизводят низкие частоты, но плохо справляются с высокими нотами. Это задача для двигателей планшетных сканеров. У них более крупные моторы, и они могут воспроизводить более высокие звуки. Для управления двигателями сканера я создал прототип драйвера, используя одну из моих предыдущих плат вывода прототипа в сочетании с готовыми модулями Н-моста, установленными на раме, напечатанной на 3D-принтере. Есть четыре старых сканера HP, почти идентичные большему из Floppotron 2.0 — мне потребовалось немало времени, чтобы найти их на eBay и на местных польских рекламных сайтах. На данный момент он работает так же, как и в предыдущем Floppotron — контроллер перемещает узел головки сканера с помощью шагового двигателя с различной скоростью и переменным направлением, чтобы избежать столкновения с шасси.

Тем не менее, есть две новые функции. Во-первых, это приятная на вид неоновая кремниевая светодиодная полоса RGB, установленная на каждой головке сканера. Помимо эстетики, это помогает определить, какое устройство на самом деле воспроизводит какой раздел, пульсируя нотами. Полоски запрессованы в напечатанные на 3D-принтере направляющие, заменяющие часть металлического корпуса и узел зеркала сканера. Вторая новая функция поставляется с совершенно новым программным обеспечением и поддержкой MIDI — улучшены эффекты высоты тона и модуляции. Теперь сканеры могут издавать еще более странные звуки.

Жесткие диски

Щелкающий звук жестких дисков создается за счет возбуждения катушки в узле магнитной головки. Эта головка фактически является динамиком, но, в отличие от динамиков, перемещаемый элемент представляет собой рычаг с магнитной головкой чтения/записи вместо конуса динамика. При нормальной работе головка перемещается вперед и назад по дисковым пластинам в пределах безопасной рабочей зоны. Если нажать слишком далеко, он упрется в границу и издаст громкий щелчок — то, чего вы действительно не хотите, чтобы произошло с живым жестким диском, на котором хранятся ваши данные.

Некоторое время назад я купил пару небольших партий старых жестких дисков на случайных сервисах, подобных eBay. Каждая модель привода имеет немного различную механику, имеет разный металлический корпус и, следовательно, издает разные звуки при неправильном использовании. Чтобы набор жестких дисков звучал немного больше как барабанная установка, я протестировал каждый диск и отсортировал их по звуку, который они издают. Некоторые приводы издают басовый «клак», некоторые издают более высокий «бум», а некоторые звучат как колокольчик. Каждый из 16 приводов в текущей настройке был назначен на ближайший звук барабана General MIDI, который он может имитировать, например, бочка, малый барабан или закрытый хай-хэт.

В отличие от контроллера сканера, контроллер жесткого диска более совершенен. Контроллер представляет собой связку плат, связанных проводами и напечатанными на 3D-принтере каркасами прототипов. Существует одна общая плата контроллера со специальным программным обеспечением (как и во всех других контроллерах) и цепочка пользовательских плат H-драйверов в паре с готовой платой регулятора напряжения (с дешевым клоном LM2576/LM2596/и т. д.) – по одной паре на каждую группу из 4 дисков.

Для подключения головок жестких дисков я использовал модульные разъемы 6p6c (RJ12) (которые очень распространены и легко обжимаются) и плоский 6-жильный телефонный кабель, который у меня завалялся. Это не лучший способ передачи энергии из-за его тонких проводов и высокого сопротивления, но он намного тоньше обычного кабеля UTP, и 16 из них на столе выглядят намного чище. Эстетика также важна в такого рода проектах, поэтому, если это работает — это достаточно хорошо. Каждый жесткий диск был оснащен крошечной платой, припаянной вручную, со светодиодом RGB и разъемом для кабеля. Как и в случае со сканерами, мигающие светодиоды помогают определить, какие диски воспроизводятся.

Контроллеры, шлюз и связь

Инструменты отображаются на ПК как MIDI-устройство с помощью USB-MIDI-адаптера, подключенного к шлюзу — еще одному пользовательскому устройству с корпусом, напечатанным на 3D-принтере. Я хотел соединить все контроллеры инструментов звездообразной топологией (вместо гирляндной цепи, как это можно было бы сделать с MIDI), поэтому я построил преобразователь с интерфейсом MIDI на одной стороне и сетью RS485 на другой стороне. С такой архитектурой оркестр можно легко масштабировать.

В качестве разъемов я использовал модульные разъемы RJ45, которые обеспечивают данные и питание +12 В для контроллеров. Линии RS485 являются общими, поэтому контроллеры имеют два разъема RJ45 и могут быть подключены последовательно для сокращения длины кабеля. В то время как пассивный преобразователь MIDI-RS485 технически мог бы работать (поскольку MIDI — это последовательный интерфейс с токовой петлей), я усложнил получение таких функций, как контрольные суммы и т. д. Преобразователь основан на модуле nRF52840 и пользовательской базовой плате с MIDI/RS485 приемопередатчики и разъемы . Программное обеспечение преобразует последовательные данные MIDI во внутренний протокол RS485 с более высокой скоростью передачи (протокол, аналогичный Modbus). Он также имеет некоторые дополнительные функции, такие как сканирование внутренней сети и даже обновление программного обеспечения контроллеров за шлюзом через MIDI. Он также может быть расширен в будущем. NRF52840 имеет оборудование USB-устройства, поэтому USB-MIDI может быть дополнительно реализован непосредственно в шлюзе, чтобы обойти ограничение низкой скорости передачи данных MIDI (31250) в случае добавления в сеть нескольких новых устройств. Освещение DMX через MIDI также возможно.

Контроллеры включают в себя общие платы MCU и схемы драйверов для конкретных приборов. Для быстрой и легкой разработки я выбрал хорошо знакомую платформу, с которой ежедневно работал пару лет — микроконтроллеры nRF52 (Nordic Semiconductor) ARM Cortex-M. Это семейство MCU с поддержкой Bluetooth LE (которое я не использую в этом проекте) с парой других очень полезных функций. Два основных, на которые стоит обратить внимание, — это полностью переназначаемые контакты и периферийное устройство PPI, которое позволяет запускать действия по событиям, генерируемым другими периферийными устройствами, без взаимодействия с ЦП.

Большая мощность приходит с большим счетом за энергию!

С увеличением размера также значительно возросла потребляемая мощность. Два блока питания PC ATX уже не помогут. В то время как сканеры и головки жестких дисков не требуют большой мощности, 512 Floppy disk делают цифры высокими. Один привод при шуме потребляет относительно большую мощность – до 2-2,5Вт (0,4-0,5А при 5В) в зависимости от модели привода и частоты. Один стек из 32 дисков может потреблять до 16 А тока, когда все диски активны. В типичном случае использования средний ток ниже, обычно на 20-30% в зависимости от воспроизводимой музыки. Весь стек (обычно) активен только в течение короткого периода времени, поскольку контроллер изменяет количество воспроизводимых дисков, чтобы вовремя изменять громкость звука. Добавляя цифры — 16 стеков теоретически могут потреблять 1,28 кВт в пике (я измерил максимум около ~ 1,

Для питания дисков я использовал массив из 16 модульных блоков питания 5 В/18 А — 18 А непрерывного тока обеспечивают большой буфер, даже если по какой-то причине я хотел получить 100% мощности. Каждый модуль имеет встроенную защиту от перегрева и короткого замыкания. Меньшие модули имеют некоторые преимущества перед более крупными блоками питания с более высокими характеристиками (> 200 Вт), которые очень хорошо подходят для этого проекта. Они дешевые ($18-$20 за штуку), у них нет вентиляторов, а корпус низкопрофильный, поэтому модули можно разместить на полке стойки 1U. Я рассматривал возможность установки этих модулей за каждым стеком FDD, чтобы избежать толстых кабелей до 16 А, но в итоге решил установить их на перфорированные полки высотой 1U внутри 19-дюймового стоечного шкафа. Это оказалось удачным решением, так как снаружи стойки нет высоковольтных кабелей, т.к. Импульсные блоки питания могут шуметь под нагрузкой (особенно при 16 модулях) и самый большой плюс — корпус собран без особых усилий из готовых деталей. Есть и дополнительные эстетические элементы — передние панели для блоков питания, напечатанные на 3D-принтере. Я разработал панели из трех частей в Fusion 360 и напечатал их на 3D-принтере Prusa MK3s на текстурированной базовой пластине. Если вам интересно узнать об этикетках — я сделал их, напечатав текст на нижнем слое и поменяв местами нити. В общем, 3D-принтер неплохо поработал над этим проектом. Я разработал панели из трех частей в Fusion 360 и напечатал их на 3D-принтере Prusa MK3s на текстурированной базовой пластине. Если вам интересно узнать об этикетках — я сделал их, напечатав текст на нижнем слое и поменяв местами нити. В общем, 3D-принтер неплохо поработал над этим проектом. Я разработал панели из трех частей в Fusion 360 и напечатал их на 3D-принтере Prusa MK3s на текстурированной базовой пластине. Если вам интересно узнать об этикетках — я сделал их, напечатав текст на нижнем слое и поменяв местами нити. В общем, 3D-принтер неплохо поработал над этим проектом.

Одна подозрительная вещь на изображениях выше, которая могла привлечь ваше внимание, — это цвет кабеля. Да, это акустический кабель сечением 4 мм². Я знаю, я знаю, что это точно не соответствует требованиям безопасности из-за тепловых параметров изоляции… но это не промышленное оборудование. … и кабель был довольно дешевым. По крайней мере, это чистый медный кабель, а не алюминиевая хрень с покрытием. Кабели заканчиваются толстыми разъемами 6,35 мм, которые могут выдерживать максимальную нагрузку. Весь шкаф защищен модулем плавного пуска. Это предотвращает срабатывание выключателя массива модулей блока питания с высокой входной емкостью при включении питания.

Как создается музыка?

Устройство совместимо с MIDI, что означает, что я могу использовать любое программное обеспечение для создания музыки, которое может выводить MIDI или сохранять MIDI-файлы. Последовательности нот кодируются как MIDI-события, размещаемые на 16 дорожках. Каждый трек можно отнести к определенному разделу в оркестре, изменив его программный (инструментальный) параметр. Специальные стеки дисководов гибких дисков воспроизводят басовые партии, гитарные или фортепианные партии и некоторые звуки ударных. Жесткие диски закреплены за барабанами, а сканеры воспроизводят лид-треки. Инструменты (или номера программ) можно выбрать из списка в любом программном обеспечении для редактирования MIDI.

Чтобы создать аранжировку, я обычно начинаю с уже существующего MIDI-файла. Если я не могу его найти, я должен сделать его с нуля — на слух или используя ноты, если они есть. Даже если для конкретной песни существует MIDI-файл, его переаранжировка для The Floppotron по-прежнему требует много времени. У каждого «инструмента» в настройке есть свои ограничения, и трек должен соответствовать диапазону нот, который он может воспроизвести. Чтобы трек хорошо звучал в стопках FDD или сканере, обычно требуется много настроек. Я также уделяю некоторое время добавлению мелких деталей, таких как слайды (портаменто) или вибрато, чтобы имитировать причуды вокала или гитары в оригинальных песнях — их нужно воссоздавать на слух. Оформление одной аранжировки для 3.0 обычно занимает у меня 3-4 вечера, что немного дольше, чем для старшего Floppotron 2.0.

Другое программное обеспечение

Наряду с прошивкой контроллера, на стороне ПК также есть некоторое программное обеспечение. Контроллеры настраиваются с помощью специального приложения, написанного на Python. Это позволяет мне устанавливать такие параметры, как тип подключенного инструмента или таблица сопоставления MIDI. Он также может обновлять прошивку в каждом контроллере через MIDI-порт.

Существует также еще одно приложение, используемое только для визуализации — красочный текстовый терминал в стиле ретро, ​​показывающий состояние машины. Это также приложение Python, использующее библиотеку Urwid TUI (работает под Cygwin/XTerm в Windows).

Что дальше?

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

Скоро будет больше музыкальных каверов! [youtube]


Источник:

Популярные Статьи
С чего начать изучения языка Rust
С чего начать изучения языка Rust

26 Ноябрь 2024

10 вещей, которые не любят кошки
10 вещей, которые не любят кошки

27 Октябрь 2024

Образование в Финляндии: Ключ к успеху
Образование в Финляндии: Ключ к успеху

29 Август 2024

Самые посещаемые города Мира
Самые посещаемые города Мира

30 Апрель 2024

Новая эра для Atlas от BostonDynamics
Новая эра для Atlas от BostonDynamics

17 Апрель 2024

Бразилия разблокировала счета Х и Старлинк

Бразилия разблокировала счета Х и Старлинк, после того …

Трудоголики умирают раньше алкоголиков

Люди, которые не уходили в отпуск годами умирали …

Сергей Брин работает над ИИ в Google "каждый день"

Сооснователь Google и бывший президент Alphabet Сергей Брин …

Новый трейлер Minecraft Movie

Вышел новый тизер-трейлер фильма Minecraft Movie

Следующие инвестиции в OpenAI аж 100 миллиардов долларов

После партнерства с производителем ChatGPT на Apple Intelligence, …