Get Back! Brooch

composite

1. Team Ahaar – The Get Back! Brooch
Oomung, Phuong Anh, Tzu-Ching and André

2. Ideal Product:

Get Back! is a brooch/pendant that visually and audibly shows the comfortable amount of personal space by the user. It uses a built-in infrared sensor to judge distance, and a Neopixel to show different colors. With these pieces, the product would judge the distance between the user and another person, and glow green to indicate acceptable, yellow to indicate discomfort, red to indicate anxiety, and pulsing red to indicate panic depending on distance. Ideally, it can also:

  • Produce sounds when others are getting too close to the wearer
  • Have an on/off switch
  • Allow the wearer to set his/her own comfortable distance

Ideal User Scenario:

We envision this product as a discreet, daily wearable for those with crowd anxiety disorders, personal space issues, or women subject to subtle harassment by unknowingly aggressive people. This product would be switched on continually throughout the day, and act as a social advocate of sorts, alerting others to their behavior in a subtle way without pressuring the user to do so themselves.

A user scenario could be a young man with anxiety who wears the product as a lapel pin on his suit jacket. During a normal day at the office, whenever a colleague got uncomfortably close, the product would flash and alert them to slightly back away, at once restoring personal space for our young man and avoiding embarrassment for his colleague.

Where the Product Would Be Sold:

This product would be marketed as a “smart” fashion accessory, and could be sold at premium menswear clothiers, women’s fashion boutiques, and department stores.

3. The technical steps to our prototype:

  1. Design the look
    IMG_6179.JPG
    IMG_6177 copy.jpg
  2. Design the circuit diagram
  3. Code it
  4. Get the materials: Sharp IR Distance Sensor, Neopixel ring (12 x WS2812 5050 RGB LED Ring), plastic case for the dome, 3D model design and some wires
  5. Construct the device
    • Solder wires
    • 3D model and printed case
    • Attach everything together

process-01.png

We had some run-ins with the sensor not working properly as it was placed behind the transparent dome. Thus, we decided to sawed the front off. And it worked!!

process-02.png

IMG_6208.JPG
Our circuit

4. If given more time on this project, we would:

Work out a way to hide all of the wires and it would have a small battery pack encased with the Neopixel.

5. By building this project, we learned:

How to design a form with the intention of a circuit board inside. We also learned to troubleshoot and try to fix the problems that came up along the way (both in coding and the process of making the casing and attaching all the parts together.

Oomung’s experience: Every time the code was iterated upon to solve old problems, new ones arose. This experience reaffirmed the difficulty and importance of coding and bug-testing. The key element for me was understanding the use of arrays to generate an average ‘smooth’ input from the raw and glitchy analog input. Also, understanding the circuit board and electronic components helped in form development, wherein our design fit together all the pieces while maintaining our core sense of aesthetics.

6. Other potential applications

  • Mounted on a wall next to paintings in a gallery, to let people know if they’re being too close
  • Late night protection wear on the back: warning people with bad intention that the wearer is aware they are there.
  •  Don’t touch my hairpin

7. Our code

/this code requires the Sharp.IR code libary and a sharp ir sensor, the VFL has them to lend out
#include
//this specifies what model and pin the sensor is on, i called it sensor
SharpIR sensor(GP2YA41SK0F, A2);

#include
#ifdef __AVR__
#include <avr/power.h>
#endif

#define NUM_LEDS 12

#define BRIGHTNESS 5

const int numReadings = 50;

int readings[numReadings]; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average

//you all know what this is

#define PIN 6

//specify the which type of neopixel strip this is, RGBW
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
Serial.begin(9600);
strip.begin();
strip.show(); // starts with all the pixels off
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } } void loop() { // subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = sensor.getDistance(); // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1; // if we're at the end of the array... if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}

// calculate the average:
average = total / numReadings;
// send it to the computer as ASCII digits

Serial.println(average);
delay(1); // delay in between reads for stability

//an if+else reacting to 3cm-10cm distance with a specific color for every individual pixel

//first led
if (average >22) {
strip.setPixelColor(0,strip.Color(0, 217, 0));
strip.show();
} else {
strip.setPixelColor(0, 0);
strip.show();

//second led
}if (average == 22) {
strip.setPixelColor(1,strip.Color(10, 217, 0));
strip.show();
} else {
strip.setPixelColor(1, 0);
strip.show();

//third led
}if (average == 21) {
strip.setPixelColor(2,strip.Color(30, 190, 0));
strip.show();
} else {
strip.setPixelColor(2, 0);
strip.show();

//fourth led
}if (average == 20) {
strip.setPixelColor(3,strip.Color(60, 150, 0));
strip.show();
} else {
strip.setPixelColor(3, 0);
strip.show();

//fifth led
}if (average == 19) {
strip.setPixelColor(4,strip.Color(150, 120, 0));
strip.show();
} else {
strip.setPixelColor(4, 0);
strip.show();

//sixth led
}if (average == 18) {
strip.setPixelColor(5,strip.Color(150, 100, 0));
strip.show();
} else {
strip.setPixelColor(5, 0);
strip.show();

//seventh led
}if (average == 17) {
strip.setPixelColor(6,strip.Color(150, 70, 0));
strip.show();
} else {
strip.setPixelColor(6, 0);
strip.show();

//eighth led
}if (average == 16) {
strip.setPixelColor(7,strip.Color(150, 60, 0));
strip.show();
} else {
strip.setPixelColor(7, 0);
strip.show();

//ninth led
}if (average == 15) {
strip.setPixelColor(8,strip.Color(150, 40, 0));
strip.show();
} else {
strip.setPixelColor(8, 0);
strip.show();

//tenth led
}if (average == 14) {
strip.setPixelColor(9,strip.Color(180, 20, 0));
strip.show();
} else {
strip.setPixelColor(9, 0);
strip.show();

//eleventh led
}if (average == 13) {
strip.setPixelColor(10,strip.Color(217, 0, 0));
strip.show();
} else {
strip.setPixelColor(10, 0);
strip.show();

//twelvth led
}if (average <=12) {
strip.setPixelColor(11,strip.Color(0, 217, 0));
strip.show();
} else {
strip.setPixelColor(11, 0);
strip.show();
}

}
/

	

Shhhhhhhhhh! ambient sound sensor

Team: Xuan, Rhea, Hannah, Micah

Update

The code is working and the lights are reactive to sound. Unfortunately, the fill lights in the background are not working, there may be a wiring issue. It will have to be looked into later.

Previous

It doesn’t quite work, but it will soon! We were pretty ambitious with the design of this project and perhaps aimed a bit too high for the “rough prototype” level. But it’s just so pretty and we’re pretty proud. Below are the pictures of the prototype of the model:

box_nolight.jpg

Continue reading “Shhhhhhhhhh! ambient sound sensor”

Bubble Experience Fail? 😰

Team 👻 Group Member Names: John Boran, Evie Cheung, Eugenia Ramos, Yangying Ye

dog-bubbles.jpg

In an Ideal World: An Uplifting, Immersive Bubble Experience

If our project had worked as planned, this motion-sensor bubble machine would be great in multiple settings. It could be used for the following:

+ To bring delight to children at a hospital and be an uplifting reminder against the typical, drab hospital environment Continue reading “Bubble Experience Fail? 😰”

North Studio Temperature Reader

Hello fellow makers!

Two weeks ago, the CANduit group proposed three concepts for sensing an undesired behavior or environment. Our four group members all belong to the North Classroom at SVA Products of Design, which is notoriously known for being the coldest of studios, and although cannot solve this temperature problem, we are choosing to bring attention to the drastic range of temperatures one experiences in the studio.

To do this, we created a hanging lighting device that emits sound when the room’s temperature exceeds and dips below a particular degree. The device consists of a red and blue light, of which represent “warm” and “cold”. Warm temperatures trigger the red light to shine while Johnny Cash’s “Ring of Fire” plays for 10 seconds. Similarly, cold temperatures trigger the blue light to shine while “Cold Cold Cold” by Cage The Elephant plays for 10 seconds.

To start our process, we explored how our temperature sensor worked when exposed to heat and ice.

IMG-2630.JPG
An ice cube being applied to the temperature sensor
IMG_20171031_125813.jpg
Our LED and Temperature Sensor set-up

To add sound, we purchased a soundboard (Adafruit Audio FX Mini Sound Board – WAV/OGG Trigger – 2MB Flash) and amplifier (Adafruit Mono 2.5W Class D Audio Amplifier) This particular soundboard does not have any code, and works like a standard USB drive – you can drag and drop your files onto the soundboard.

IMG_4826.JPG
Soundboard, speaker, and LED setup. The LEDs were quite dim when we tried to light 6, so we decided to use only one red and one blue LED.

IMG_4828.JPG

In order to hang our device with little mess, we used a tubed-netting fabric to keep our wires together. These wires will be soldered to each of our LEDs and to the speaker. Our Arduino board and other bulky parts will be mounted on a sheet of plexiglass, as to be concealed. LEDs will inhabit a small plastic sphere that will hang from the ceiling.

The hanging cord will run from the LEDs, through the plexiglass mount, and along the wall until it reaches an outlet/power source.

Screen Shot 2017-11-06 at 1.01.57 PM.png

Currently, we are having a hard time completing our code in the way that we would like our system to work. Adjusting the temperature does trigger our songs to play, but in a loop. We would only like for our song to play only once, not continuously until the temperature is triggered in the opposite direction (hot –> cold).

Because our DigitalWrite statements, the ones that trigger music to play, exist within our loop, once the trigger has started, the music is repeated. Despite telling our code to stop playing after one time, our trouble still lies in figuring out how to stop the music from playing after the audio clip has finished.

Team Sense – Sound Snitch

Team Sense:
Gustav, Zihan, Sophie and Antya
What the ideal finished version of this product would be like/who’s it for:
Our ideal version of the product would have a different microphone; it would need to be more powerful to be able to catch when you are loud more precisely. Our light output could also be more potent so you could be able to see it from across the room or have the materials expand the light. It would also be important for the user to have access to change the threshold range so that they could select what they considered as unacceptable noise.
Regarding the materials, it would need to be made out of some plastic, maybe ABS or a similar one and it should have an opaque part and a transparent one so that the light can shine through. Ideally, it would be integrated with the speakers or even to your phone.
It would be focus towards young people who live in apartments or live in proximity to their neighbors, or teenagers even as they tend to be the loudest.

The technical steps you took to achieve your prototype:

We first came up with the idea to make a product which helped let someone know when they are playing music too loud.

The first step was to figure out the coding and try to understand the mic and coding for the mic. Once we got the mic to work with coding found from Becky’s recommendation, we decided to use a pixel stick as it would be bright enough to send off a visual sort of alarm to the person playing music too loud.

We played around with the coding for many hours and finally were able to figure out the right “if statements” and the right threshold for the volume of sound we wanted the sensor to react to.

We decided we wanted the design of the product to look somewhat like a fire alarm, where it would be white and mounted on the wall. We built our prototype for this out of wood and painted it white and made it so that the breadboard and circuit could fit nicely inside of the box with a transparent plastic on top for the light to shine through. Below are some of our process photos:

SoundSnitch2 from Antya Waegemann on Vimeo.

 

What did you learn from building this project?

Even though the whole mechanism is quite simple, there are still details needed to be work on very well in order for it to work properly. For example, we needed to transfer the measurement volume of the sound from the numbers in the Arduino code to the decibel in real life. This was something what we did not fully expect. How we completed that was to using a sound measuring app to measure the volume of some music we thought to be on a level exceeded which would be annoying. So even to make a very simple ideas into application, many unexpected details will need to taken care off.

What you would do next/differently if given more time on this project:

If we had had more time, then we would have incorporated an app remote into our project.

This would have allowed for the user to adjust the threshold. Thereby, the user would be able to customize the product to their need and linking.

Furthermore, it would be interesting to explore the input sensor our product and utilizing the output possibilities build within the smartphone.

Maybe, we could make the phone vibrate, when the threshold was reached?

Code:

 // NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include 
#ifdef __AVR__
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define LED_PIN1            (5,6)
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      16
// Defining the mic
#define SAMPLE_WINDOW 33 // Sample window width in mS (33 mS = ~30 Hz)
#define MIC_PIN       A1 // ANALOG pin # where microphone "OUT" is connected
#define THRESHOLD     625

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, LED_PIN1, NEO_GRBW + NEO_KHZ800);

  int delayval = 200; // delay 


  void setup() {
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
  #if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
  #endif
  // End of trinket special code
  // Start mic setup
  pinMode(LED_PIN1, OUTPUT);
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(MIC_PIN, INPUT);

  pixels.begin(); // This initializes the NeoPixel library.
}

  void loop() {
int inputaudio = analogRead(MIC_PIN);
Serial.println(inputaudio);
  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
if (inputaudio > THRESHOLD){
  Serial.println("Threshold has been exceeded");
  for(int i=0;i<pixels.numPixels();i++){

  // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(255,0,0)); // Moderately bright green color.

  //pixels.show(); // This sends the updated pixel color to the hardware.
  
  //delay(delayval); // Delay for a period of time (in milliseconds).
  //   
  //pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
  //pixels.setPixelColor(i, pixels.Color(0,0,0)); // Moderately bright green color.
  
  //pixels.show(); // This sends the updated pixel color to the hardware.

  //delay(delayval); // Delay for a period of time (in milliseconds).

  }
  pixels.show(); // This sends the updated pixe
  delay(delayval); // Delay for a period of time (in milliseconds).
  for(int i=0;i<pixels.numPixels();i++){

   // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
   pixels.setPixelColor(i, pixels.Color(0,0,0)); // Moderately bright green color.
    
}
  pixels.show(); // This sends the updated pixe
  delay(delayval); // Delay 
}

//  // Listen to mic for short interval, recording min & max signal
//  unsigned int signalMin = 1023, signalMax = 0;
//  unsigned long startTime = millis();
//  while((millis() - startTime) < SAMPLE_WINDOW) {
//    int sample = analogRead(MIC_PIN);
//    if(sample < signalMin) signalMin = sample; //    if(sample > signalMax) signalMax = sample; 
//    { 
//    int peakToPeak = signalMax - signalMin; // Max - min = peak-peak amplitude
//  int n = (peakToPeak -1) / 4;          // Remove low-level noise, lower gain
//  if(n > 50)    n = 50;                 // Limit to valid PWM range
//  else if(n < 0) n = 0;
//  analogWrite(LED_PIN1, n);   // And send to LEDs as PWM level
//  // read the input pin:
//  int buttonState = digitalRead(MIC_PIN);
//  // print out the state of the button:
//  Serial.println(buttonState);
//  delay(1);        // delay in between reads for stability 
//  }
//  }
  }

Homework – Innovative Switch Final

Create a blog post for your final switch prototype including description, final photos and process photos to the course blog by 8pm this Wednesday.

The final Arduino prototype does not need to: fit inside your model, be soldered or be miniaturised.

The critique this Thursday will focus on the interaction between you and your switch. So focus your efforts on refining this!

 

 

Nuzzle – Karen Vellensky

 

 

 

 

 

<p><a href=”https://vimeo.com/144718415″>Cutie hats – Proof of Concept</a> from <a href=”https://vimeo.com/user12975396″>karen vee</a> on <a href=”https://vimeo.com”>Vimeo</a&gt;.</p>

For my innovative switch project I knitted a pair of hats with conductive yarn. When the patches of conductive yarn in both hats touch, the arduino board sends a signal to the led to light up in a pattern of random colors. The blinking led signifies the wearers excitement about being nuzzled by their companion in the second hat.

I was pleasantly surprised by how well the yarn worked despite how thin it is compared to the yarn weight I used. Were I to do the project from the beginning, I would have knitted both patches of the conductive yarn into the brim. As it is now, one patch of conductive yarn is in the brim while the second is on the crown of the head. This make contact between the four patches a bit unreliable. I’d also like to see how it looks with 2 – 4 more leds.

I really enjoyed making this project, a big thank you to Jenna for helping me figure out the coding and circuit! (code source: http://ardx.org/src/circ/CIRC12-code-SPAR.txt)

 

DSC_1488IMG_0091 IMG_0092 IMG_0113 IMG_0123 IMG_0127