Подключение дисковода к ардуино

Обновлено: 02.07.2024

Дорабатываем и подключаем к Amiga 1200 привод FDD от PC. Тестируем запись дискет на PC двумя способами. Первый способ записи от параллельного порта компьютера с помощью утилиты ADTWin. Второй способ с помощью платы Arduino Pro Mini и утилиты Arduino Amiga FDD Reader/Writer.

Запись дискет на PC через параллельный порт

Ни каких оригинальных дискет от «Амиги» в наличии не имелось. Чтобы проверить работоспособность доработанного FDD и что-нибудь загрузить, предстояло их подготовить на ПК. Для Windows имеется утилита ADTWin, которая позволяет управлять стандартным 3.5" дисководом через параллельный порт и записывать образы «амижных» дискет ADF в родном формате для Amiga. Она работает только на запись.

Для проверки способа потребовалось собрать старую машину с материнской платой, где есть в наличии параллельный порт. Установка ОС с флешки через USB не поддерживается. Сборка потянула за собой поиски CD или DVD привода и дисков с какой-нибудь подходящей операционной системой. Старое барахло не только греет душу, но и бывает полезным. Нашлись все компоненты, FDD дисковод попался от какого-то сервера. Инсталляция Windows XP прошла успешно.

Кабель FDD с разъёмом на параллельный порт, он же LPT, паялся по схеме с страницы ADTWin, там всё довольно подробно описано. Дело это муторное, жилы тонкие, иногда обрывались. Собственно, кроме старого железа, стандартного «писишного» FDD и спаянного кабеля ничего не требуется.

Я попробовал записать при Generic настройках в программе ADTWin пару новых дискет с оболочкой Workbench AmigaOS. Забегая вперёд, дискеты в модифицированном приводе на «Амиге» читались уверено. Конечно, многое ещё зависит от состояния носителей информации и оборудования. После пары перезагрузок на старом ПК посыпался старый HDD Maxtor. WinXP запустить больше не получилось, компьютер уходил в перезапуск. Замены жёсткого диска под рукой не оказалось и на этом опыты с данным способом записи завершились.

Запись дискет на PC с помощью Arduino Pro Mini

Следующий способ от разработчика Роберта Смита (Robert Smith) построен на плате Arduino Pro Mini с микроконтроллером ATmega 328. Все схемы и исходники имеются на сайте Arduino Amiga Floppy Disk Reader/Writer, а также доступны в репозитории на Github с открытым исходным кодом.

Сначала я прошил Arduino Pro Mini с помощью Arduino IDE через адаптер USB -» UART. Потом собрал схему на проводниках. Интерфейсный шлейф к дисководу должен использоваться с прямым подключением без перекруток (как и на «Амиге»). Аккуратно разобрал один IDC разъём, обрезал использованные жилы с перекруткой и заново обжал IDC в тисках.

Стандартный PC FDD дополнительно запитал от БП зарядки телефона через изготовленный кабель с micro USB. Силы тока для питания привода только от компьютерного USB разъёма в 500 mA недостаточно. После подключения схемы можно пробовать запись через спец софт Arduino Amiga Floppy Disk Reader and Writer.

Адаптер USB -» UART у меня висел на 3 COM порту, выбираем его. Прежде чем писать ADF образы, надо провести диагностику (Run Diagnostics). Для калибровки требуется дискета в формате «Амиги». Тут пригодилась дискета с Workbench, записанная первым способом через параллельный порт. Так как Amiga работает с дискетами только двойной плотности DD, я заклеил одно из сквозных окон на дискете HD (не путать с окном с защёлкой защиты от записи) изолентой на всякий случай. Так мы дадим понять FDD приводу, что используется дискета DD.

В итоге, помимо Workbench, я записал ещё несколько дискет с демо версией игры Flashback и работой от демосценеров Andromeda - Nexus 7. Этот способ показался несколько капризным. Хорошо работал только на новых (не использованных) дискетах. Запись через параллельный порт, на мой взгляд, стабильнее.

Доработка привода FDD

Большинство «Амиг» были оснащены 3.5" дисководом для дискет двойной плотности DD (double density) максимальной ёмкостью в 880 KB при использовании стандартной файловой системы FFS. Аналогично, на своём промежутке времени, на PC могли использоваться дискеты DD максимальной ёмкостью в 720 KB со своей файловой системой. В пике развития этих носителей информации большее распространение получили дискеты высокой плотности HD (high density) ёмкостью 1.44 MB, которые будут применяться в данном случае.

В запасах нашёл привод FDD ALPS DF354H(121G), для корректной работы с «Амигой» он требует небольшой переделки. Демонтируем нижнюю крышку, видим плату контроллера, которую и будем модифицировать. Процесс оказался не слишком сложным, главное проявить аккуратность. Схемы доработки разных дисководов есть на ещё живой странице на немецком языке.

Первым делом нужно переключить режим определения привода с диска B на A в PC терминологии. У «Амиги» основной привод должен определяться как DF0. На плате я зачистил паяльником пятак DS1 и запаял DS0. Далее я соединил контакт 34 разъёма IDC дисковода и площадку RD на плате (чёрный провод) для подачи сигнала готовности READY.

Затем перерезал дорожку от 2 контакта IDC разъёма. Аккуратно с прогревом отпаял и отогнул контакт (5 нога получается от метки на фото) у контроллера SD705A, подложил изоляцию и запаял перемычку между этими контактами (синий провод) для подачи сигнала наличия дискеты DISKCHANGE. В итоге плату прозвонил, места пайки промыл спиртом. На этом доработка завершилась.

Тестирование FDD на Amiga 1200

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


Однажды, исследуя просторы интернета наткнулся я на интересную плату с микроконтроллером. Называется эта удивительная вещица Arduino. Меня очень заинтересовала эта схемка. С ее помощью можно сделать самому робота, метеостанцию, сигнализацию и даже что-то посерьезней, например — «Умный Дом».

Прикупив сей девайс, начал изучать. Наигравшись со светодиодами, датчиком температуры и LCD дисплеем, решил сделать что-то такое эдакое. Увидел на YouTube ролик про музыкальный дисковод, заинтересовался. Благо у меня этого добра (Floppy Drive`ов) полно на работе. Полазив по рунету и не обнаружив подробных мануалов как это можно реализовать, полез на буржуйские сайты и к своему счастью там и нашел подробное описание. И так начнем.

Необходимые ингредиенты:


Дисковод 3,5'' гибких дисков, у меня их 6 штук


Arduino Uno


BreadBoard, можно и без него, но с ним все же удобней


Блок питания от компьютера, подойдет любой


Мы сразу замыкаем 2 контакта зеленый и черный чтобы включить блок питания

Подключение флоппи к Arduino:

Полную распиновку флоппика давать не буду, ибо все есть в инете. Нам необходимы следующие пины:
11 и 12 контакты дисковода замыкаем между собой с помощью джампера (Jumper).
17 и 19 контакты дисковода подводим к земле Arduino (GND).
18 контакт флоппа соединяем с 3 digital pin Arduino.
20 контакт флоппа соединяем со 2 digital pin Arduino.
Это что касается одного флоппика, с другими остальными 5-ю, как в моем случае, то повторяем процедуру так же. Единственное отличие, то что на 2 дисководе 18 контакт соединяем с 5 цифровым контактом Ардуины, а 20 с 4-м и так далее.
Ну и соответственно питаем 5В и GND сами дисководы.


Установка софта:

Качаем IDE для Ардуины, подключаем к компу, ставим драйвера.
На данном этапе, перед заливкой скетча в Ардуину, необходимо скачать к себе библиотеку
TimerOne в то место где находится папка с ардуино, например: %arduino%\libraries\
Далее нам необходимо залить скетч в Arduino.
Далее после заливки кода в микроконтроллер и после того как все железо подключено, необходимо установить Java JDK и интегрированную среду разработки NetBeans.

После качаем java проект MoppyDesk — по сути эта прога и есть тот самый мозг, который заставляет через микроконтроллер производить звуки на флоппи дисководах.
Затем скачиваем драйвера для программы MoppyDesk. Так как у меня Windows 7, то я копировал файлы:
RXTXcomm.jar в <JAVA_HOME>\jre\lib\ext
rxtxSerial.dll в <JAVA_HOME>\jre\bin
rxtxParallel.dll в <JAVA_HOME>\jre\bin

Открываем проект MoppyDesk в NetBeans и запускаем его, выбираем наш com порт (в диспетчере устройств можно посмотреть на какой порт установился Arduino), нажимаем кнопку Connect, далее необходимо выбрать midi файл, нажимаем Start и начинается дискотека. Так как у меня в серверной очень шумно, и дисководов почти не слышно, то я использовал микрофон, дабы усилить эффект.

Многие ли помнят флоппи-диски? История похоронила гибкие носители ещё в 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. Обо всём этом можно почитать в нашей статье.

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

Этот скетч должен заставить флоппи-привод, подключённый к первому каналу (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-файлы, созданные специально для флопотрона. Например в этом репозитории, или в документах этой группы.

Насмотревшись видео с воспроизведением midi музыки через флоппи дисководы решил и сам попробовать нечто подобное.

Использовал эти материалы

В итоге без особых проблем собрал из 4-х флопиков и Arduino uno.

Появился вопрос на который нигде не могу найти.

Как на один канал подключить 2 флоппи дисковода?

Моих познаний хватило только на то чтобы понять что используемые 18 и 20 ноги флопика управляют направлением и шагом мотора, а вот дальше я не понимаю. Они управляют за счет обычного появления и пропадания напряжения на пине, или за счет ШИМ модуляции?


Arduino & Pi

1.1K поста 18.1K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Рассуждать на темы политики

А смысл 2 флоппи на одном канале? Они будут в одной тональности играть. Чтобы использовать ШИМ, посмотрите какие порты на ардуино его поддерживают, соответственно код надо переписать, а сейчас получается, если я правильно понимаю, у Вас схема, которая подаёт и отключает ток на портах. Вы грузите мелодии через java и netbeans?

Параллель просто, все должно работать. Сигнал подается PWM


ХедХантер и кладмены

На днях листал ХХ.
Штук 5 вакансий курьера. От найка и адидас до ксиаоми и секс-шопа . Вакансии в самом верху в топе, смотрело со мной около 150 человек. Оклад 15к в неделю и 350 за точку. Нормально так для курьера?
В итоге все эти вакансии - кладмена. Работодатель зовёт в телегу.
Мне просто интересно , ХХ настолько похуй, что у него там творится? Очевидно вакансия левая, ибо заработок нереальный для курьера. Где пожаловаться не нашёл, выливаю свой гнев сюда. Вообще подозреваю, что все все знают.

Мотивации пост

Мотивации пост Twitter, Мотивация, Скриншот

. а в пустыне она вообще бесценна.

Оборот денег в семье.

Старший сын подарил младшей сестре 5000 руб на днюху(13 лет разница).
Сегодня она подходит ко мне:
- Пап, вот 5000 рублей. И вот мои заказы на али. Это подарки тебе, маме, брату, его жене и их мелкому. Успеют же приехать? Можешь оплатить по карте?
- Конечно, доча.
Оплатил. Деньги взял. Ибо это её решение. Добавлю их в её подарок. Но об этом ей, конечно, не скажу.

Новый Год на носу. Подарки. Берегла эти деньги с апреля. Вот так решила их потратить.

У меня хорошие дети.


Не рой яму другому.

Не рой яму другому. Секс, Облом, Юмор, Издевка, Провокация, Twitter, Скриншот

Прошу юридической помощи, напали чеченцы в метро

Здравствуйте, я очень сомневался писать пост или нет, но сил уже нет бороться в одиночку с нашей правоохранительной системой. 30 августа я ехал на работу к 14:00, на выходе из метро Юго-Восточная на меня напали 2 чеченца ( https://www.m24.ru/shows1/14/308198 сюжет на Москва 24, правда они вырезали специально тот кусок, когда я отмахивался, разрывая дистанцию, уже после нескольких минут избиения в голову и назвали это "дракой", хотя ни одного удара я не нанес), я подбежал к службе безопасности метрополитена, одна из сотрудниц сразу убежала, вторая стояла и смотрела как меня избивают, ничего не делая. В итоге мне сломали нос и нанесли множественные повреждения в области головы. Когда они меня били они орали, что они из Чечни и всех русских вы**ут и ничего им не сделают, явный состав 282 статьи УК РФ, однако в итоге им инкриминировали лишь 115. После их задержания, когда я ждал скорую, полицейская сказала, что у них был нож и они орали, что воевали против русских в чеченскую войну, а также что они находятся под действием наркотиков (в таганском отделении опер потом также сказал). После меня отвезли в ГКБ им. Пирогова, в приемное отделение к нейрохирургу, где я пробыл более 6 часов, как в последствии выяснилось, принял со скорой меня санитар, а заключение выдал медбрат. В итоге в заключении прописаны препараты, которые мне якобы ввели, но их не вводили + заключение противоречит в некоторых моментах самому себе. Госпитализировать меня отказались, хотя по словам врачей скорой должны были госпитализировать на 10-14 дней. На следующий день я пошел в травмпункт рядом с домом, чтобы снять всё-таки побои, но травматолог сказал, что поставил бы ушиб мягких тканей только в случае наличия разрыва кожи (хотя это уже должно быть рваной раной, в моём понимании).

На данном этапе мне не дали ознакомиться с материалами уголовного дела, нож по словам дознавательницы в деле не фигурирует, я просил ознакомить меня с записями с камер видеонаблюдения, мне было отказано, а также с дозоров полицейских, тоже было отказано. Дознавательница не присылает никаких повесток по следственным действиям, я посмотрел, её действия нарушают 164, 188 и 192 статьи УПК РФ, когда на очередной встрече я хотел написать заявление на отвод дознавателя. Я думаю, что дознавательница ангажирована к этим чеченцам и/или диаспоре. При первой встрече, назначенной на 10:00, она отказалась меня принять к оговоренному по телефону (повестки не было) времени, а когда из кабинета выходил другой сотрудник, я слышал, как она говорит кому-то из своих "мариную **анного терпилу".

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

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

Читайте также: