As we were starting our project, we decided to focus on the most risky aspects of our braille machine, which was the punching mechanism for the mechanical subteam, and converting MDI files to a readable format for the software subteam. We also had to discuss our learning goals and expectations for meetings. We decided on having two meetings outside of class for two hours, so that we could have set time to work together for integration.
For our Minimum Viable Product (MVP), we decided to have the software read notes from a song that has already been digitized, and have a mechanical system that could print one line of braille music. In order to do this, we outlined our goals for the end of sprint one, which were:
On the mechanical side, we started to tackle the punching mechanism. We had a lot of options for the mechanism we used to accomplish the punching. We decided to start testing with a solenoid, since a solenoid uses linear motion. The solenoids we started with did not have enough power to punch through paper, so we decided to test a DC motor with a rack and pinion. We 3D printed the rack and pinion, and the DC motor had enough power to move the attached needle through the paper. We planned on using two punching mechanisms to be able to punch out the braille cell (which is a 3x2 grid). We then designed a box to hold the DC motors and rack and pinions that could be mounted on our gantry for the next sprint. However, once we had the box assembled, we found that there was too much friction, and the motors were not able to move the needles well.
For the software, we started by examining different python libraries for Midi files, and tried to implement two options. We want to be able to identify the rhythm of the note given a Midi file. We were able to get the resolution of the song which is the number of ticks per quaternote. This helps us to parse the other rhythms by correctly categorize each note to the correct rhythm given the number of ticks the note is on. Once we had the rhythm, we are able to map that to braille We were also able to set up Python to Arduino Communication for sending the rhythm in braille and integrate the parser with an LED circuit.
Prototype of the rack and pinion paper punching mechanism
Demonstration of the logic for extracting the rhythm from a MIDI file and turning it into braille. Since the bottom two dots of a cell are the rhythm, two punches will translate properly. Each motor spin here represents a punch. Motors were used because we did not have a functioning punching mechanism during this testing.