Stepper Organ
This is a project I am currently working on! I will update this page as I reach important milestones.
Background
Though I've gotten opportunities to work with Arduino and electronics in the past as part of my Biomechanics Research and Junior Design project, I feel I have much to learn in working with motors and other electronics. I believe a really interesting and novel way to further both my understanding of music as well as electronics is to make a stepper organ. The premise is that stepper motors produce a varying pitch depending on the speed of their rotation, allowing music to be made.
A four-motor organ performing the Wellerman sea shanty.
I am basing my efforts on the work of a few others, namely David Scholten and Jonathan Kayne. I hope to stretch my troubleshooting skills and get to apply or grow my circuits knowledge!
Outline
When I worked with Arduino in the past I found it easy to get lost if one does not take small and clear steps, so I'm starting this project by identifying some goals and the steps I plan to take in order to achieve them.
Primary Goal: Get a set of four stepper motors to perform songs recognizably using data from a midi file made beforehand.
Additional Goals (descending in importance):
Allow my MIDI keyboard to connect and play notes corresponding to keyboard inputs with low latency.
Consolidate the motors into a portable and protective case.
Add extra features like an LCD showing information about the song, power button, etc.
Add an additional set of four motors by duplicating the project, then have both boards communicate with each other to increase to eight voices.
Plan:
Create a high-level overview schematic of the system as I understand it
Examine each component and note the purposes at a pin level
Connect a single motor and get it to move
Familiarize myself with the MIDI software and Arduino libraries needed to send note information
Add additional motors, assess whether I need a higher voltage power supply and get one if needed
Test with a simple and short song to the motors (Happy Birthday)
Make adjustments to the pitches as necessary
Test with a longer song (Toejam and Earl theme)
Step 1: Schematic
The hardware I've gathered for the project:
NEMA 17 stepper motors
A4988 motor drivers
DRV8825 motor drivers (backup)
CNC motor shield
Arduino UNO board
Power supply (reclaimed e-waste)
Schematics relating all the hardware:
Step 2: Components and Documentation
Following tutorials posted online focusing on my purchased hardware, I created a reference for my later use. From past experiences working with electronics, I understand how what feels intuitive one day can be obtuse the next. Therefore, I gather information in one place and make a note for each action I take. It takes time, but I consider it an investment that saves me more time when I must inevitably troubleshoot later.
I also gather datasheets for each component I plan to use. Usually this is because I need one value immediately, but they are an excellent resource to have on hand while troubleshooting. Knowing the electrical specifications of my hardware will reduce the likelihood that I damage them.
Datasheet for the NEMA17 stepper motors used in this project. The motor dimensions will be helpful when designing an enclosure, while the wiring diagram helps me with electronic connections and motor control.
Step 3: Get a Motor to Move
In order to supply power to the CNC motor, I needed a female barrel connector with exposed lead wires. My local electronics store didn't carry anything suitable and ordering parts online was pretty expensive for a single unit, so I decided to reclaim the component from a piece of e-waste.
Speaker from which I obtained the female barrel connector.
The connector in question, and specifics about its polarity.
Circuit board with all electronic components.
Removing the connector with careful soldering.
Soldering lead wires to the connector pins.
Lead wires soldered to the connector, insulated with electrical tape.
Simple stepper test in clockwise and counterclockwise directions.
Step 4: Learning the Software (Current Project Status)
Fortunately for me, others have made this project and shared details of their work online. This should make my job easier, provided I can properly interpret their code. Searching online, I've found resources about using an Arduino UNO as a MIDI note player that seem promising. My most recent efforts have been focused on learning how to change the firmware on my UNO, which I have read is necessary to transition between having my computer recognize my board as an UNO or as a MIDI device. I don't know yet whether my MIDI keyboard removes the need to set my UNO as a MIDI device, or guarantees it.