Pressure Puncher Final Project
For the class's final project, the students were given the task to create an interactive object of their choice that involves the system to listen, think, and speak from both parties from what the professor covered over the course of the semester. Overall, there must be a clear demonstration and engaging physical interaction towards users.
- interface is understandable to all users with minimal instructions
- automatically starts and stops from human data or input, then resets without human intervention
- the user is able to interact with object iteratively
- electronics are housed and secured within a well-designed, professional enclosure
Pressure Puncher Description
Pressure Puncher was created with the intention to help users—with the focus of students—deal with or relieve their stress, similar to squeezing a small stress ball or fiddling with an object. With the Pressure Puncher, it is a ball that is punched to help people release the anger built up inside them but can also be seen as a playful toy to entertain people. As a result, the punching ball will give users a response through an output of light and sound.
The Pressure Puncher is configured in one mode, the Arduino program will display an array of colors from the LED strip and play a collection of sounds. After every hit, the LEDs will light up in rainbow colored order. Additionally, after the user hits the punching ball, an array of different sounds (ie.a spitting sound as if in a boxing rink or a hurt sound from the game “Minecraft”, a military voice, a random sound or an encouraging applause) will be played from uploading wave files onto an SD card depending on the angle at which the punching ball bends, different wave file will be played.
The difference in angle is detected through the microcontroller used in this project. With the Arduino Nano 33 IoT, the microcontroller has a built in gyroscope and accelerometer where it automatically detects the tilt from a horizontally level position. The angle at which the microcontroller can be observed through the serial monitor on the Arduino IDE.
The main components of the foundational structure of “Pressure Puncher” is a punching ball purchased from Amazon, a customized white cover, sewn together from a silk pillowcase, to contain the LED strip on the exterior of the punching ball, and synthetic filling so that there is protection from punching the LED strips and secure LED strips from falling off the punching ball. Furthermore, the Pressure Puncher has a customized 3D printed part that holds the physical punching ball on top of the spring component in the assembly and also houses the electronics in one region of the project. With respect to the physical construction of the Pressure Puncher, the materials used to build the electrical aspect of the project are an Arduino Nano 33 IoT, a microSD card and reader, a Neopixel LED strip, and a speaker. All the electronics are all soldered to a small rectangular breakout board. The microcontroller is soldered to the top side with connections made to power, the LED strip, the micro SD card reader and speaker—attached on the back side of the breakout board. The LED strip sticks to the outside of the punching ball with an adhesive and the speaker kept on the outside of the punching ball connected to the spring with a built-in magnet to the speaker. With respect to the computational construction of the program, the lights are displayed through arrays based on the number of LEDs on the Neopixel and based on the angle/rotation of the microcontroller. Sounds are displayed through arrays, wav files being read through different functions opening and closing the SD files, and a boolean function to tell if the punching ball was hit.
Supplies
- breakout board
- Neopixel LED strip
- speaker
- MicroSD card and reader
- punching ball
- pillowcase
Preview
Final Presentations & Demos at the ATLAS Building, CU Boulder
User: Chris Hill
Ideation
The group finalized their idea to an interactive punching ball that has one mode playing a combination of sounds, initially having two different modes: playful mode and angry mode. The thought behind this product was that throughout the semester, students get stressed because of their classes or go through many hardships in their personal lives, so the students wanted to design a solution to help alleviate their stress. On the other hand, if they were just people passing by and was interested in a punching ball, they also had the option of just playing with the punching ball.
Originally, the students had the idea to incorporate two buttons to determine what mode the user wanted to be in: playful or angry. Once the user selects a mode, there would be sound presets that'll play according to the mode chosen. For example, playful mode: "ow", angry mode: *large grunt*. Additionally, the students ideated to have LEDs that lit up based on the angle at which the punching ball is hit and according to the mode that was chosen. Another idea the students brainstormed on was using the punching ball to play a game to take out the enemy as long as the user could.
Breadboard Circuit
Since the students were using a few parts that they had never used before, they did some research on how to incorporate both the Micro SD card reader as well as the speaker and the sound amplifier in order to use correctly.
The amplifier was fairly straightforward to wire: connect the A+ pin (positive) to a DAC pin on your microcontroller, make sure that both A- and Ground can go to the negative or ground, and power is to power. We ran 5V for this entire project.
The SD reader is a bit more complicated. There are 6 things that need to be wired. Starting simply, the VCC (power) MUST Take 5V for the part we used. Ground connects to ground; SCK, the serial clock, connects to digital pin 13 (D13); and MOSI (Master Out, Slave In) goes to D11, while MISO goes to D12 CS was connected to D10, but this pin is the most flexible and could be connected virtually anywhere, since it is the Chip Select.
(The above schematic drawing is not an accurate representation of the parts used in the project since the microSD card adapter and the amplifier fritizing parts could not be obtained from the Adafruit Fritzing Library)
----------------------------------------------------------------------------------------------------------------------------------
After figuring out the more difficult parts, the rest was simple. The LED strip just goes into a digital pin. We then tested the circuit on a breadboard. After everything worked, the students soldered the components onto a protoboard.
Downloads
Arduino Programming
All of the code is pre sliced into various functions for ease of reading. There are also many configuration variables that can be changed for easy customizability or tweaking.
The main functions used to display the different sounds and lights utilize the following headers:
< Arduino_LSM6DS3.h >
< Adafruit_NeoPixel.h >
< SD.h >
< SPI.h >
< AudioZero. h >
< map >
< MadgwickAHRS.h >
To use the SD reader, there are also a few mandatory lines of code and libraries.
The developers must include the SPI and SD libraries:
#include < SPI.h >
#include < SD.h >
Since we're using an SD card to play sounds, we need to also define a file.
File myFile;
myFile = SD.open("fileName", OPERATION);
First, the different sound files are played by opening the SD file, continuously playing music in the idle stage, and closing the SD file to not lose any data from the wav file. Secondly, the foundational structure of displaying the LEDs is by setting up the IMU, creating a void function to read the angle of the microscope to be used as a gyroscope, printing the rotation of the angle to the serial monitor, a boolean function detecting when the punching ball has been hit, then displaying a range of LED lights.
----------------------------------------------------------------------------------------------------------------------------------
Downloads
Playtesting
User: Michal Bodzianowski
At the playtesting checkpoint, the group developed the foundational structure of the object and a digital game that was from a previous lab assignment. One of the feedbacks given was the students could expand on the idea of a game because it gave the users interacting with the punching ball an objective to wanting to hit the punching ball more and beat the game.
Coming into the playtesting checkpoint, the students believed to have more than 50% of the project complete. But, as the students continued to look more meticulously and technically, the students need to consider a more sophisticated way to house their electronics with no wires showing, how the LED strip was going to be attached to the punching ball, how the users weren't going to damage the LEDs but also not get hurt by the LEDs, a more robust and interactive program to move forward with our initial idea.
Final Presentation
Users: students at CU Boulder
As the final presentation, many students found this project to be a unique and interactive project compared to other students project. Most students enjoyed the punching aspect with a funny sound that played after hitting the punching ball. Some feedback that the students noted and received that could be improved were the sounds played after the punching ball detected a hit weren't very loud (potentially from not using enough power through the microcontroller), ideate a more unique and novel LED display rather than just a strip around the circumference, and revise another iteration of the enclosure to the breakout board where it wasn't so bulky and could potentially be housed inside the punching ball instead, in which the students could improve with more time allotted.
Conclusion
As the final product, the students were able to add multiple sounds to when the user hits the Pressure Puncher.
Some of the issues that the students ran into were not being able to upload wav files to their first SD card and could only be read but not written, the sounds played from the amplifier were broken and unrecognizable after the files were uploaded, there was an overload in the code making--memory corruption---the sound lag and the LEDs flutter, animations in the LED also caused the sounds played to slow down, the students didn't take into account how large the protoboard was going to be when placed in the enclosure, and the pillowcase slowly started coming out from the 3D printed enclosure since it wasn't secure enough.
The modifications that the students made were to add a starting noise while in the idle, simplified the code to combined the sounds and the same colored LEDs in two separate arrays to be played one after the other, taped the LED strip for extra padding, and taped down the pillowcase so that it didn't show the red punching ball underneath.
Overall, this project was a great way for the students to incorporate everything that they learned over the course of the semester, approach problems from all aspects of manufacturing a problem, and be able to develop an interactive object for people to use or play with.
Project by: Michal Bodzianowski, Ethan Wang, and Torshawna Chew