Getting Started - Sammy1Am/Moppy2 GitHub Wiki
These instructions will continue to be improved as I have time and as people run into (and solve) novel issues. You can also check out the video tutorial, or the MAKE magazine tutorial for slightly more visually appealing options.
Hardware
Requirements:
- Arduino-framework compatible microcontroller board (Arduino Uno or ESP8266 recommended)
- IDE for programming board (the Arduino IDE or PlatformIO recommended)
- Floppy drive(s)
- Power supply (5v, at least ~500mA per floppy drive)
- Wires
Setup
Floppy drive pinout information is available here
- Connect the appropriate even-numbered drive select pin to its corresponding odd-numbered ground pin.
- Connect the
STEP
pin to Arduino pin-2. Connect theDIRECTION
to Arduino pin-3. (For additional drives, theSTEP
pin is connected to even Arduino pins, and theDIRECTION
to odd pins. On the Arduino Uno, you can go all the way up to A5 (essentially pin 19)) - Connect one of the ground data pins (odd numbered pins) from the floppy drive to the Arduino's GND. This is important because if the Arduino and drive disagree about ground-voltage the data signals may not be clear.
- Power your floppy drive by either using an ATX power supply (easiest method), or another 5v power supply (connected to the appropriate power pins (ATX red wire is 5v, black is ground). (PROBABLY) DO NOT power the floppy drive from your Arduino! It might work fine, but it's best not to power motors directly via the Arduino's limited power supply. You can power the Arduino using whatever 5v supply you use to power the floppies though, that's fine.
Programming
Arduino IDE
- Install the latest Arduino IDE, and install the TimerOne library.
- Download the latest release of the Moppy Arduino code, unzip it somewhere convenient, and open Moppy2-Arduino.ino in the Arduino IDE.
- If this is your first time, skip to the next step. Otherwise, change any settings in
MoppyConfig.h
to match your setup. - Upload the sketch to your Arduino. Make sure there aren't any errors in the console at the bottom of the IDE! It's not very good about telling you if the upload was successful or not.
- If your floppy drive is connected and powered on, it should play a startup sound when it resets.
PlatformIO
- Install PlatformIO, the Arduino framework, and whatever board you're using.
- Update
platformio.ini
to match your setup. It should be okay out of the box for the Arduino Uno. - Upload code to your board.
- If your floppy drive is connected and powered on, it should play a startup sound when it resets.
Controller Setup
- Download the latest release of the MoppyControlGUI application, and unzip it somewhere convenient.
- In the bin folder you should find either a
.bat
file for Windows users or a bash executable for everyone else called MoppyControlGUI. Open it! - Use the middle column to select the COM port that your Arduino is connected to. After connecting, you should see its device address appear in the upper right column.
- Load a MIDI file from the included
samplesongs
directory, and hit play! - The bottom half of the window contains snippets of JavaScript that can be used to determine which MIDI channels to play, which device to send note to, and which notes to play. The variables
c
(channel), andn
(note number) are predefined. The scripts can also be used to transform the notes if the MIDI file wasn't designed for floppy drives. Try out some of the defaults to get an idea of what's possible and then try your own (switching the note number to random is pretty hilarious!)