posted an update

Our project is a digital piano. We made a box that mimics an octave in piano keyboards and used light sensors to tell whether the key is “pressed” or not. We also connected two buttons to adjust to different octaves. The piano transmits signals to another Arduino through Bluetooth. This Arduino is connected to a computer that runs a Matlab script capable of playing unique piano tones.

Initially, we wanted to make a piano glove, which enables the user to play tones on any ordinary surface. However, we couldn’t find the right sensors to detect the movement of the fingers and the design of the glove would be very cumbersome. We placed more value on playing realistic sounding piano tones so decided to focus on developing a Matlab script that could play different audio files. By creating a simpler physical piano, we were able to accomplish our goal with the matlab script.

For the first demo, we prepared a simplified version of the piano on a breadboard. We used buttons as keys, and LEDs as indications of whether the key is pressed. A buzzer is connected to the circuit and plays sound at different frequencies. For the final demo, we changed the buttons to light sensors so it’s easier to play and could be integrated into the keyboard along with additional buttons to control the octave of the keyboard. We used a Bluetooth module that can send 36 different signals across the Arduinos and wrote code in Matlab to play higher quality sound files. We laser-cut the physical keyboard and soldered the connections within it.

Subsystems: Keyboard Hardware The mechanical component of the keyboard was just a MDF laser-cut frame that was press fit together and contained a compartment for the breadboard. The light sensors and buttons were integrated into the top of the frame to allow for a clean and simple design. Additionally, etched lines on the playing surface inform the user of the different keys.

Keyboard Circuit The light sensors and buttons are powered by a 5V rail and read in mostly as digital inputs to the Arduino. Since there aren’t enough digital pins to process all the signals, analog pins were used as well then converted to digital in software. The buttons were also powered by a 5V rail and arranged in series with resistors to ground.

On-Board Software The software integration was the most complicated part of the project. The on-board software in the keyboard read in all the signals, converted some of them from analog to digital, then transmitted this data via Bluetooth to another Arduino.

Off-Board Software The Arduino that received this data, would print this data stream to a Matlab script which would identify which key was pressed and play the correct note. This script had pre-loaded audio files to select from.

The potential use for this keyboard currently is as a children’s toy but this could easily be improved to fit different applications.

We could improve the piano by adding buttons for different instruments, such as violin, guitar, drum etc. We could also try to figure out how to send multiple bits through Bluetooth so we could press several keys at the same time. Moreover, right now, the sound is lagging a little bit which could be fixed. We think it can potentially become a digital band if we add sounds from different instruments and add record/play features.

Log in or sign up for Devpost to join the conversation.