Allaire Morgan and Emilia Soto's Bluetooth Drum Kit! The electric drum plays different notes in different volumes depending on where and how you play it. The strength of the hit affects the volume, the region affects the frequency. Play you own songs on this drum made by engineers and for engineers! It will be built starting from a pressure sensitive pad, attached to an Arduino that sends information to Matlab, which converts the input into sounds. We hope to have a lot of fun building this drum! See you on Demo Day!

The Launch Set, a spinoff of the Launchpad, is a portable, wireless drum set that can be programmed to different sounds. You can input MP3 files into a computer program, whether recorded or sampled, and the sounds can be mapped to as many drums as you would like. The drums, a separate entity, are then ready to be played. Tapping on a drum produces the desired sound.

The first iteration of our design included a simple pressure sensor and a buzzer, hooked up via paired bluetooth modules. The pressure sensor, when pressed, sent a signal to the paired bluetooth module and caused the buzzer to produce a tone. The second iteration of our design modified the system from using a buzzer to outputting a character which was fed into a matlab program. The matlab program was then responsible for mapping the appropriate sound with the signal produced from the drum being pressed. As for the physical model of the drum, two circles were laser cut out of ⅛” acrylic, and then a square of neoprene was inserted in between the plates, so the weight is distributed squarely on the sensor. On the bottom acrylic plate, a hole is cut out so the wires from the pressure sensor can be fed through.

Most of the issues for the project stemmed from the bluetooth modules. They were extremely unstable, and we found it difficult to rely on them throughout the duration of our project. We found we had to repair the bluetooth modules each time we used them, and they would not stay paired for a lengthy amount of time. Additionally, we found the matlab program to be difficult to work with. Largely due to our relative inexperience with the program prior to the project, it was time-consuming to connect it to the arduino interface and assign an external MP3 file to each input on the program.

The project taught us a variety of practical skills in using sensors and implementing them into complex systems, as well as how to code in both arduino and matlab. We additionally learned how to use and implement bluetooth modules, although presented with a variety of difficulties related to them. As for the project’s next steps, we would modify the design so the drums can be packaged in a way where they would be able to be used without being directly connected to a power source (ex. 9V battery pack). Additionally, we would introduce command line arguments in the matlab program to give the user more selection in terms of loading sounds onto the drums, and the program could be adapted to create a more appealing interface on the computer.

Please see the above video for a demonstration of the product at work. All relevant code is attached below.

Sender () code:

include

SoftwareSerial BTSerial(2, 3); //TX RX const int plateOne = 5; const int plateTwo = 6;

void setup() { BTSerial.begin(9600); //start serial connection Serial.begin(9600); //configure pin 2 as an input and enable the internal pull-up resistor pinMode(plateOne, INPUT_PULLUP); pinMode(plateTwo, INPUT_PULLUP); //pinMode(13, OUTPUT);

}

void loop() { //read the pushbutton value into a variable int sensorValOne = digitalRead(plateOne); int sensorValTwo = digitalRead(plateTwo);

// Keep in mind the pull-up means the pushbutton's logic is inverted. It goes // HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the // button's pressed, and off when it's not: if (sensorValOne == LOW) { BTSerial.print("N"); Serial.println("N"); } else { BTSerial.print("S"); Serial.println("S"); } if (sensorValTwo == LOW) { BTSerial.print("L"); Serial.println("L"); } else { BTSerial.print("H"); Serial.println("H"); } }

Receiver code:

include

SoftwareSerial BTSerial(2, 3); //TX RX

void setup() { BTSerial.begin(9600); //begin bluetooth communication Serial.begin(9600); //begin serial communication } void loop() { if (BTSerial.available()) { char inChar = (char) BTSerial.read(); //reads single character at a time if(inChar == 'H') { Serial.println("H"); } else if(inChar == 'L') { Serial.println("L"); } if(inChar == 'S') { Serial.println("S"); } else if(inChar == 'N') { Serial.println("N"); } } }

Built With

Share this project:
×

Updates