By: Zarmond, G, and Luke
For this final project, as a group we had assembled a box, a special box. This final box serves a purpose that our clients, carpenters, need help with. As per being contracted in working with carpenters Matt and Tim we followed them on a days work to understand to difficulties and troubles they came across. What we found is almost everything they could need they had; however, something that is overlooked is their health and well being. In consideration of our client's loud working environment, we came to the conclusion that hearing damage is overlooked.
G: Cigarette Box, Wave Drawer, Square Drawer, Double Transducer
Zarmond: Double Transducer, DuckDuino, Digital Body Guard, Bike Turn Signal
Well, I am glad you theoretically asked what our box is. As previously mentioned, hearing loss is a serious issue for our clients, the carpenters Matt and Tim. These issues are overlooked often and can lead to Matt and Tim having a harder time at life. As such our proposed solution was to create a box that would open upon being activated. This opening would then contain ear muffs or some similar object(s) that would help reduce the harmful effects of prolonged loud sounds. A key goal was to ensure the box does not open up on the first instance of a loud sound, but rather focuses on a longer, prolonged noise. This is something we considered due to the use of hammers and other occasional loud sounds being common and not significantly deafening. As such, as part of the consideration that went into building the code was to ensure that the box only updates the visuals and opens the box after a long prolonged loud sounds, and of course ensuring the users can open the box whenever they need to. The box was also designed to include a battery pack for their charging purposes. The box is spring-loaded with a power switch and set of LEDs to demonstrate the volume level every few seconds.
Overall shot of the box
Box opened
Slight overhead shot
Close up on the side panel containing the button, power switch, and the battery pack.
A Close up of the inside of the box and its hinges.
Demo video of the box being used
Please be advised all that is mentioned is completely imagined: Imagine Matt and Tim go their respective homes. There they sit in their car for 30-40 mins everyday in the car preparing to head home. Upon entering they can no longer hear their wife, their kids, and most importantly the TV. Imagine Matt asks Tim for a beer but Tim cannot hear Matt and Matt cannot hear the raging fire from the Kitchen. All of these activities would lead Matt and Tim to have an incredibly difficult life. As such, as the merciful and benevolent group we are we wanted to ensure that Matt and Tim can prevent their hearing from getting any amount worse.
On creating our Ear Muff Box we developed an early prototype that had flaws described below that were later adjusted and developed further.
First we started with the interaction. We wanted to provide space for Tim and Matt to have some disposable earbuds or earmuffs available for whenever the local decibel level reached dangerous highs. We concluded that we would make a box with an attached sound-sensitive opening mechanism.
To prototype our boxes, we used: https://boxes.hackerspace-bamberg.de/ to generate svgs to laser-cut. We customized smaller details with Adobe Illustrator
Our first box prioritized included cutouts for internal wiring, LED decibel indicators, and a microphone to pick up the sound. From this, we got a sense of how much space we needed for our components, but more importantly, a starting point on how to incorporate the spring-loaded mechanism
Our initial laser cut box proportions
First working prototype of the electrical hardware on a solderless breadboard.
Once prototyped and working, we moved it onto a soldered board.
After showing Tim and Matt our 1st box and its proportions, they recommended adding a few things:
1. An on and off switch, in case they really did not need the box to keep springing open anytime a loud sound set it off.
2. A manual opening switch- to help open up the box to have hearing protection available whenever
3. A larger wider box, so that they could store other things in the box, possibly things to help positively reinforce protecting their hearing
Internal components for 2nd box iteration
Our 2nd box, now outfitted with a red manual opening button, on off switch, wider profile and nicer LED frame
To iterate on our first box, we changed the proportions of the box so that it could house more things besides just disposable earbuds. In addition to the on-off switch and manual opening button, we narrowed the lighting slit so it could neatly frame the LEDS.
We also changed the components' housing side to be a sliding box, so our mentors could access a battery pack that powered our box. We also finalized our opening and closing mechanism, using an electromagnetic cabinet solenoid to open and close the box. The box's hinges were spring-loaded with torsion springs connecting the hinge axis.
We were'nt able secure the two boxes to each other before the showcase of our project, but planned on securing them together before we gave Tim and Matt their special box.
After showing Tim and Matt our 2nd box and its proportions, they recommended a few last details.
1. A Dewalt battery pack converter so that they wouldn't need to reach into the box to replace batteries.
2. A humorous message to remind them why they should protect their hearing
To finish off our box design, we want to bring it to a nice polish. We revamped the entire box design one more time for more internal box space, a joined bottom to keep the components all together, and a Dewalt battery converter mounted to the side.
We attempted to incorporate more robust hinges, using metal ones instead of wood ones. However, the main issue was that the way the metal ones were manufactured made it incompatible with the springs we had available at IDEATE, as well as our solenoid opening mechanism.
Our makeshift metal hinge mechanism. Scrapped because it wouldn't work with our opening mechanism.
Luke assembling the final box
The final box, mounted with a Dewalt battery pack and inscribed with a loving message from team elderberries.
From the initial parley machine that was intended to be created instead to the ear muff box that was build the process had taught us much. From our initial discussion with Matt and Time, the carpenters, we had learned that there was not much we could build -- or anything -- that would prove useful for direct assistance in carpentry. However, we instead focused our attention on supporting their hearing eventually a trait that was overlooked in many cases. Upon bringing this idea to Matt and Tim and our rough early prototype the largest concern for them was incentive, or more specifically reason to care about the contraption. Some suggestions they had wished for were personalized voices from us telling them to put on hearing protection; however, this seemed counterintuitive as they would be in a loud environment and would not be able to hear the message. So as a compromised we knew we had to inscribe a personalized message that they had wanted, "Don't be a Burden". We also had smaller requests like making the box sturdier and the surface flatter, issues we addressed by combining the boxes into one box.
After creating our final box there is much more we wish we could improve on. An issue we had wanted to address but could not due to build limitations was being unable to wrap the exterior of the box in LEDs with the intent that they blink for a period of time or until they were turned off. This blinking set of LEDS would be the best indicator for a loud environment that could of been ascertained for this project. Upon further refinement the build of the box needs much improvement. The notable ares of improvement needed, are the solidness/sturdiness of the box being weak as there are unnecessary finger-lock joins connecting the main box and electronics box. The other issue are the hinges being delicate from being made with the laser cutter instead of metal hinges. Other issues include the "springs" used have the issue of being messed with by items placed in the box causing the spring to be under/over powered making the box more difficult to open. These are all issues that ideally in a future iteration could be dealt with by taking more time and building a CAD model of the box and using a better set of springs. The other notable issue was the microphone not being sensitive at distances. This issue comes down to quite a few problems. The most glaring was we had not realized that the Arduino pro micro that we had been using for prototyping was faulty, causing issues in reading and output signals. This means we had switched to the LM393 microphone which has an envelope pin intended to remove static and make the read values more accurate. The issue with this becomes it reduces the values read and potentially the microphone cannot read/hear sounds from a distance well. The hearing range was much lower than what would be needed for this box to successfully open on its own. This issue could potentially be remedied by reading the original input instead or by using a microphone of a higher quality.
/**
The following code is intended to work an Arduino Pro Micro board. This code uses a button and microphone as input then is
able to output the results with a solenoid movement and 8 pixel Neo-Pixel display as a diagram of its visuals.
*/
/**
* Arduino Pin Mapping (Pro Micro)
* Device | Pin(s) | Input/Output
* Mic max4466 | A0
* NeoPixel Display (8 LEDs) | D16
* Solenoid | D9
* Button | D3
*/
#include <Adafruit_NeoPixel.h>
// Solenoid
const static uint8_t SOLENOID_PIN = 9;
// NEO Pixels' setup
const static uint8_t NEO_PIN = 7;
const static uint8_t NUM_NEO_PIXELS = 8;
Adafruit_NeoPixel pixels(NUM_NEO_PIXELS, NEO_PIN, NEO_GRB);
// Microphone pins to be measured
const static uint8_t MIC_PIN = A0;
// Open Box Button
const static uint8_t BUTTON_PIN = 3;
// Weak Function Declarations
void openBox (void);
uint32_t getPixelColor (uint8_t pixelIndex);
uint16_t soundMeasure (struct pt *pt);
bool readSound(uint32_t *soundLevel);
void setup(void) {
pinMode (BUTTON_PIN, INPUT_PULLUP);
pinMode(MIC_PIN, INPUT);
pinMode (SOLENOID_PIN, OUTPUT);
pixels.begin();
}
void loop(void) {
static uint32_t measuredSound = 0;
bool isMeasured = readSound(&measuredSound);
// Change to time base for full
if (!digitalRead (BUTTON_PIN) || (isMeasured && measuredSound > 200)){
openBox();
}
else
closeBox();
// Update pixels
if (isMeasured){
pixels.clear();
for (uint8_t i = 0; i < NUM_NEO_PIXELS; i++){
if (measuredSound >= i * 20)
pixels.setPixelColor (i, getPixelColor(i));
}
pixels.show();
measuredSound = 0;
delay (500);
}
}
/**
* @brief Measures the sound from the microphone and stores the average value after 5s of measuring
* @param soundLevel Used to store intermediate value average in the varaible position and the final average value
* once the function has completed.
* @return The boolean return value is true iff the value in soundLevel is the final average value false otherwise;
*/
bool readSound(uint32_t *soundLevel){
// Used to ensure 5s pass before accepting the sound level.
static uint32_t timeSinceCall = 0;
const uint32_t MIN_TIME_SND = 3 * 1000;
static uint16_t numberOfMeasurements = 0;
uint16_t micRead = analogRead (MIC_PIN);
numberOfMeasurements++;
*soundLevel += micRead;
if (timeSinceCall + MIN_TIME_SND < millis()){
*soundLevel /= numberOfMeasurements > 0 ? numberOfMeasurements : 1;
numberOfMeasurements = 0;
timeSinceCall = millis();
Serial.println (*soundLevel);
return true;
}
else
return false;
}
uint32_t getPixelColor (uint8_t pixelIndex){
if (pixelIndex < 2)
return pixels.Color (0, 255, 0);
else if (pixelIndex < 4)
return pixels.Color (175, 200,0);
else if (pixelIndex == 4)
return pixels.Color (200, 150,0);
else if (pixelIndex >= 5)
return pixels.Color (255, 0, 0);
return 0;
}
void openBox(void) {
digitalWrite (SOLENOID_PIN, HIGH);
}
void closeBox(void){
digitalWrite (SOLENOID_PIN, LOW);
}