Подключение дисковода к ардуино
Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других — библиотека TVout, которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.
Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.
Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов — 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.
3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным
Для начала, загрузите код VGAx-PC.ino и скопируйте его к себе на компьютер в папку с таким же именем.
Потом — загрузите с GitHub бибилиотеку VGAx. Её нужно поместить в подпапку «libraries» Arduino IDE.
ВАЖНО! Эта бибилиотека работает с Arduno IDE 1.6.4 и может быть не совместима с другими, более новыми версиями.
Теперь загрузите VGAx-PC.ino во второй Arduino (я тестировал на Arduino Nano, но с Arduino Uno тоже не должно быть проблем).
Для этого нужно:
- два Arduino Uno Rev.3, или два Arduino Nano 3.x (на основе ATmega328)
- разъем DSUB15, т.е. гнездо VGA или кабель с таким гнездом, который не жалко отрезать
- резисторы: 2 на 68 Ом и 2 на 470 Ом
- разъем PS2
- провода
- необязательно: макетная плата
Однажды, исследуя просторы интернета наткнулся я на интересную плату с микроконтроллером. Называется эта удивительная вещица 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 в \jre\lib\ext
rxtxSerial.dll в \jre\bin
rxtxParallel.dll в \jre\bin
Открываем проект MoppyDesk в NetBeans и запускаем его, выбираем наш com порт (в диспетчере устройств можно посмотреть на какой порт установился Arduino), нажимаем кнопку Connect, далее необходимо выбрать midi файл, нажимаем Start и начинается дискотека. Так как у меня в серверной очень шумно, и дисководов почти не слышно, то я использовал микрофон, дабы усилить эффект.
Приветствую. Делюсь опытом изготовления эмулятора дисковода для Atari на базе Arduino Nano. Под катом инструкция по сборке, схема, прошивки и демонстрация работы.
В нашем музее (подробности в профиле) есть несколько компьютеров Atari, для которых хотелось сделать что-то, позволяющее быстро загружать программы. Оригинальные 410-е магнитофоны для этого не очень подходят, да и, если бы у нас был оригинальный дисковод, это тоже создало бы трудности. У Atari для загрузки программ в память используется собственный последовательный интерфейс — Atari SIO, разработанный Джо Декуром в 1979 году. Что примечательно, Джо также участвовал в разработке стандартов модемной связи, USB и Bluetooth. И аналоговый магнитофон и цифровой дисковод передавали данные в компьютер Atari по одной и той же последовательной шине, пропускная способность которой могла достигать 120 кбит/с. Так как протокол последовательный, данные можно загружать прямо с компьютера через USB-UART адаптер и программу AspeQt, позволяющую эмулировать периферию Atari. Но хотелось чего-то компактного и автономного. Заказывать и паять плату для SIO2SD — эмулятора с SD картой не хотелось, но в процессе поисков попался проект SIO2Arduino, на базе которого я и собрал свое устройство.
Эмулятор можно собрать в нескольких вариантах, мне хотелось девайс с экраном, на котором можно выбрать образ нужной дискеты.
Первый прототип был собран за пару часов, кабель снял с нерабочего магнитофона Atari XC12, если бы его не было, пришлось бы повозиться с разъемом.
Прототип был проверен на Atari 800XL, заработал сразу, без доработок и настроек.
Можно было переходить ко второй фазе — полноценному прибору.
Вместо большой Arduino UNO решил собрать все на базе Arduino Nano. Все было смонтировано на монтажную плату и распаяно старым добрым МГТФ.
Вид со стороны Arduino
Вид со стороны экрана
По размерам хорошо подошел корпус Kradex Z119 На переднюю панель вывел экран, кнопку переключения образов дисков и светодиод, который висит на ноге TX и показывает процесс загрузки.
Принципиальной схемы на сайте проекта не было, нарисовал сам. Сопротивления, регулирующие контрастность дисплея были подобраны для синего дисплея с белыми буквами. Для других цветов могут быть другими, лучше заранее настроить подстроечным резистором. При неправильных значениях сопротивлений символы на экране не видны, это сбило с толку при первом включении прототипа.
При прошивке готового устройства нужно не забыть поменять в Arduino IDE плату с Uno на Nano, оказывается они немного не совместимы и IDE не видела Nano, пока не изменил настройки. Весь проект для Arduino IDE с настройками под экран и кнопку доступен по ссылке
В собранном виде получился вот такой прибор:
Два CD, DVD-rom Желательно не рабочих, дабы не жалко было их разломать и вытащить из них шаговые двигатели.
И так, по креплению всех элементов на конструкцию, будет показано в видео в конце поста.
Здесь же я постараюсь рассказать про схему подключения всех компонентов именно к Ардуино.
Давайте сначала разберемся как подключить лазер к Ардуино.
Лазер имеет два выхода, +,- и питается он от +5 вольт. Если мы подключим напрямую лазер к ардуино, то ардуино не хватит силы тока чтоб запитать в полную силу данный лазер:
Для решения данной проблемы существует модуль управления лазером:
Из схемы подключения видно, что LD “+” и LD”-” это выход модуля, куда подключается непосредственно сам Лазер. 5V”+” и 5V”-” это подключение питания от стороннего источника напряжения. А TTL “+” это как-раз Пин подключения к Ардуино.
Я буду работать с прошивкой grbl_0.8 В видео ниже расказано как залить данную прошивку в Ардуино. Так вот для прошивки grbl есть схема подключения всех элементов:
В данной схеме видно что, с данной прошивкой пины 2-7 служат для подключения Осей X/Y/Z.
Подключение лазера осуществляется на 12 пин. Лазер так же называется Spindle, так как ЧПУ может работать не только с лазером, но и с фрезой например.
На данной схеме видно как Easy Driver подключается к Arduino:
В моем примере ОСЬ Z не используется, следовательно Драйвер Z Axis подключать не нужно.
А в данной схеме видно как подключаются обмотки шагового двигателя к драйверу и как подключается внешнее питание:
Задавать прожиг я буду с помощью программы Grbl_Controller
Если Вам нужны файлы для пробы в G-коде то вот пара примеров.
На этом пока все, по схеме подключения. Все остальные нюансы рассказаны в Видео:
Когда-то наткнулся на одно видео в просторах интернета. Там из флопиков (дисководов, Floppy Drive’ов) игралась некая музыка, сейчас уже не вспомню, но мне кажется это и был классический star wars – imperial march ну или по русски марш империи из к.ф звездные войны.
Так как я всегда был компьютерщиком любителем, да и работа с этим связана, взял и записал у себя в заметках, что сие чудо надо повторить обязательно.
Шло время и я собирал флопики). И в принципе уже их когда было 3 шт. Все руки никак не доходили их собрать в музыкальный проигрыватель. Но вот сейчас этот момент настал.
Начал искать статьи с реализацией данного примера. Много информации перебрал как русскоязычной так и зарубежной. Много было описано примеры как скачать проект в программе разработки NetBeans и через эту программу запускать проект написанный на java и подкидывая .dll в определенные директории, заставлять все это работать с помощью платы ардуино и компьютера с проектом на java.
Я даже начал пробовать реализовать данный проект, но там нужно было скачать java sdk и netbeans ругался постоянно на разные версии. В итоге я плюнул на этот способ. Полез на github на страницу с проектом “Moppy” и начал читать его и смотреть, что-же коллега сделал в этом проекте.
В итоге как оказалось, все описанные способы запуска проекта Moppy сильно устарели и что проект все также развивается. и уже ненужно пользоваться не NetBeans ни java sdk. Достаточно только установленной Java ( мне кажется она установлена на 90% компьютеров) и все. Скачав проект со страницы github нужно будет запустить только .bat файл который сам проделывает с компьютером все манипуляции нужные и все запускается (по крайней мере на windows 10) без проблем.
Правда все на английском, но я постарался в видео все доступно объяснить.
Ну и собственно потомкам), если вдруг через года проект еще перерастет что-то и вы не будете понимать как это настроить, оставляю ссылки на файлы именно те которые я использовал.
После того как вы загрузили скетч в ардуино и запустили программу, можно приступить к подключению флопиков и атх блока питания.
Давайте сначала разберемся как же запустить БП ATX от компьютера. Он же при подаче питания не запускается.
Вот я привожу распиновку основного блока контактов с БП которые подключаются в материнскую плату.
Согласно данной схеме видно что нам нужно замкнуть зеленый провод с любым черным и вуаля, все запустится.
Теперь что касается питания самого флоппи дисковода. Флоппик питается от 4 контактного разъема. В статье писалось что он питается от вольт. подключив 5 вольт к флопику. Подав 5 вольт с лабораторного БП оказалось что этого мало, точнее я подумал что дисководы не рабочие. Но в итоге все таки оказалось что питания мало. Если посмотреть на разъем питающий сам флоппик
Видно что тут есть и +5 вольт и +12 вольт. В итоге подключив сие чудо от АТХ БП все завелось без проблем причем на всех флопиках.
Теперь что касается подключения Arduino и Floppy Drive.
Схема:
Нам необходимы следующие пины:
11 и 12 контакты дисковода замыкаем между собой с помощью джампера (Jumper).
17 и 19 контакты дисковода подводим к земле Arduino (GND).
18 контакт флоппа соединяем с 3 digital pin Arduino.
20 контакт флоппа соединяем со 2 digital pin Arduino.
Это что касается одного флоппика, с другими остальными если хотите подключить 2 и более, то повторяем процедуру так же. Единственное отличие, то что на 2 дисководе 18 контакт соединяем с 5 цифровым контактом Ардуины, а 20 с 4-м и так далее.
И после того как уже будет занят 13 digital pin Arduino, можно будет использовать аналоговые пины вплоть до A5 analog pin arduino.
Все, на этом подключение закончено. Визуально все показано в видео, плюс демонстрация воспроизведения пары композиций.
1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой
TinyBasic Plus и библиотека VGAx работают с Arduino IDE 1.6.4.
Если у вас уже установлена более новая версия, то лучшее решение — загрузить эту версию с официального сайта в формате .zip, и распаковать в отдельную папку. Здесь можно загрузить эту версию для Windows.
Потом нам понадобится библиотека PS2keyboard, её можно загрузить отсюда. После скачивания просто распакуйте архив, и скопируйте его содержимое в «arduino-1.6.4\libraries».
Дальше, загрузите файл TinyBasicPlus_PS2_VGAx.ino, и прошейте его в основной Arduino.
Это версия обычного TinyBasic Plus, где была добавлена поддержка библиотеки PS/2.
Больше информации о TiniBasic Plus и руководства (на английском языке) можно найти тут.
Если на этом этапе нет проблем (в том числе, проблем с совместимостью), то Tiny Basic будет автоматически запущен при включении Arduino. И его можно будет протестировать с помощью последовательного порта на вашем ПК. Для этих целей я использую PuTTY, но вы можете использовать и другую подобную программу, по вашему вкусу.
В настройках нужно правильно установить COM-порт (тот же, что используется в Arduino), и скорость передачи = 4800.
И тут уже можно протестировать нашу систему, набрав какую-нибудь программу на Basic с клавиатуры вашего ПК (позже мы подключим PS/2 клавиатуру напрямую к Arduino).
Для примера, можно набрать:
Прервать бесконечный цикл этой программы можно с помощью комбинации клавиш Ctrl+C (это не сработает, если мы будем делать это с клавиатуры PS/2).
Теперь подключим PS/2 клавиатуру.
2. Подключаем PS/2 клавиатуру к основному Arduino
Информация и библиотека были взяты из этого материала.
По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.
Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.
Распиновка PS/2 разъема есть на рисунке:
Читайте также: