Qi‘s Final Project

Introduction

Do you listen to music with Bluetooth earphones—on the road, on the subway, in the classroom…? When you’re listening to music, do you ever find it difficult to hear the sounds around you? When others try to talk to you, they may not realize you’re using Bluetooth earphones, and you can’t hear them. This can lead to awkward situations and misunderstandings.

My product is a stylish headset-style ear accessories with a fashionable design and blinking lights. When you’re listening to music, simply wear them to signal to others—”I’m using Bluetooth earphones and can’t hear you. If you want to get my attention, please tap my shoulder.”

Process and light

The main body of the product is made using 3D printing, and after printing, it is processed with colored cellophane. Then, I attach the main body to the ear hook, which supports the weight of the product.

Regarding the lighting, I have set up three lighting modes, which can be switched using a touch sensor. People can choose different lighting modes according to their preferences, and this is the customizable feature of the product.

Blue and Green Flashing with Meteor effects
White Flashing Light
Dark and light pink Flashing with water effect

Instructables

https://www.instructables.com/FlashTone-lighting-Airpods-Earring

Story for project

Development

There are several aspects to explore for the future development of the project.

First, improving the user experience. Currently, my ear accessories are quite heavy due to the many components inside. In the future, I hope it can become lighter and more comfortable to encourage people to wear it.

Second, the product could have more diverse shapes. Right now, it is a functional product, but I believe it can integrate with fashion and styling, becoming a part of people’s accessories.

Third, the current lighting requires users to switch modes using the touch sensor. I hope that in the future, the lighting can change color and rhythm based on different songs, making the product more intelligent.

Conclusion

In conclusion, this is a great and innovative start. It encourages us to incorporate lighting elements into everyday wearable accessories, creating more possibilities for wearable designs. Throughout this project, I learned a lot about soldering, sewing, and Arduino programming, which will be very helpful for my future product designs. Although I faced many challenges this semester, my classmates and teachers supported me, and I learned a lot from them.

Qi’s “lighting airpots earring” Process

My idea is to decorate a luminous Bluetooth airpods earring. This decoration not only lets people know you are using Bluetooth headsets but also displays the style of music you are listening to through flashing lights. It’s a great way to convey information to the outside world.

The element I will use for this project is a metallic butterfly. I will use 3D printing technology to create the main part of the decoration, while the hollow areas will be covered with Cellophane wrap. This material is transparent and allows light to pass through.

One aspect I’m still considering is whether to design a decoration specifically for headphones or Bluetooth headsets. For Bluetooth headsets, the design might be too heavy for the device to support. As a result, I may need to add an ear hook to provide extra support.

Element:

Shopping list:

Cellophane wrap paper, Silver PLA filament, earring hooks

Lighting:

I’m looking for a small light that would be suitable for mounting on a headset decoration. Since my work is small, I need a light that matches the size of my product.

I will design three lighting effects for my work:
-When you are listening to dynamic music, the light will have a rhythmic flashing red or orange light
-When you are listening to soothing music, the light will have a rhythmic blue and green light
-When you are listening to white noise, the light will have a rhythmic white and yellow light

https://docs.google.com/document/d/15EKuqGIgPJD0VBByyr-HptrdHW-1oUpSVMw5ygBmVaY/edit?usp=sharing

Qi‘s Final Project Proposal

Sensor light slippers

Slippers that help people walk in the dark. No need to turn on the lights when walking at night, slippers can help you see the road clearly.

Place colorful disc-shaped lights in Chinese-style windows. It looks like you are looking at the sun outside through the window.

Screenshot

Sometimes, when we’re wearing earphones, we can’t hear others speaking. However, we may not realize that others might think we’re being rude. Ignoring exaggerated earphone decorate can help signal to people that you’re wearing headphones and may not hear them.

Qi’s Halloween Costume

This is my final Halloween creation: a sophisticated wizard hat with exquisite detailing.The hat is adorned with intricate spider webs made from shimmering diamonds, complemented by a large red bow at the front. Soft red tulle, embellished with sequins, gently flows around the brim, while black lace adds an elegant finish.

The hat features a wide brim that offers both style and balance, with tassels hanging down to add a touch of mystery. It’s an ideal choice for anyone looking to elevate their Halloween look with a touch of magic and refinement.

For the design, I chose a combination of three colors—orange, purple, and red—and set them to alternate in a flashing pattern. I believe these colors complement my work perfectly, creating a dynamic and visually appealing effect.

Process and Materials List:

Black lace, red and black felt, red shimmery gauze, crystal tassel.

Lighting Effects:

#include <Adafruit_NeoPixel.h>

#define PIN 1

#define NUM_LEDS 8

#define BRIGHTNESS 50

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream, correct if colors are swapped upon testing
//   NEO_RGBW    Pixels are wired for RGBW bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

void setup() {

  strip.setBrightness(BRIGHTNESS);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // Alternate fading between blue and purple
  fadeColor(strip.Color(255, 0, 0));   // Red
  fadeColor(strip.Color(128, 0, 128)); // Purple
  fadeColor(strip.Color(255, 165, 0)); // Orange
}

// Function to fade in and out a specified color
void fadeColor(uint32_t color) {
  // Gradually increase brightness
  for (int brightness = 0; brightness <= 255; brightness += 5) {
    setStripColor(color, brightness);
    delay(30); // Adjust delay for slower or faster fade
  }
  
  // Gradually decrease brightness
  for (int brightness = 255; brightness >= 0; brightness -= 5) {
    setStripColor(color, brightness);
    delay(30); // Adjust delay for slower or faster fade
  }
}

// Function to set all LEDs to a specific color with specified brightness
void setStripColor(uint32_t color, int brightness) {
  uint8_t r = (color >> 16) & 0xFF;
  uint8_t g = (color >>  8) & 0xFF;
  uint8_t b =  color        & 0xFF;

  // Apply brightness scaling
  r = (r * brightness) / 255;
  g = (g * brightness) / 255;
  b = (b * brightness) / 255;

  // Set color for all LEDs
  for (int i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, strip.Color(r, g, b));
  }
  strip.show();
}

}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

void pulseWhite(uint8_t wait) {
  for(int j = 0; j < 256 ; j++){
      for(uint16_t i=0; i<strip.numPixels(); i++) {
          strip.setPixelColor(i, strip.Color(0,0,0, j ) );
        }
        delay(wait);
        strip.show();
      }

  for(int j = 255; j >= 0 ; j--){
      for(uint16_t i=0; i<strip.numPixels(); i++) {
          strip.setPixelColor(i, strip.Color(0,0,0, j ) );
        }
        delay(wait);
        strip.show();
      }
}


void rainbowFade2White(uint8_t wait, int rainbowLoops, int whiteLoops) {
  float fadeMax = 100.0;
  int fadeVal = 0;
  uint32_t wheelVal;
  int redVal, greenVal, blueVal;

  for(int k = 0 ; k < rainbowLoops ; k ++){
    
    for(int j=0; j<256; j++) { // 5 cycles of all colors on wheel

      for(int i=0; i< strip.numPixels(); i++) {

        wheelVal = Wheel(((i * 256 / strip.numPixels()) + j) & 255);

        redVal = red(wheelVal) * float(fadeVal/fadeMax);
        greenVal = green(wheelVal) * float(fadeVal/fadeMax);
        blueVal = blue(wheelVal) * float(fadeVal/fadeMax);

        strip.setPixelColor( i, strip.Color( redVal, greenVal, blueVal ) );

      }

      //First loop, fade in!
      if(k == 0 && fadeVal < fadeMax-1) {
          fadeVal++;
      }

      //Last loop, fade out!
      else if(k == rainbowLoops - 1 && j > 255 - fadeMax ){
          fadeVal--;
      }

        strip.show();
        delay(wait);
    }
  
  }



  delay(500);


  for(int k = 0 ; k < whiteLoops ; k ++){

    for(int j = 0; j < 256 ; j++){

        for(uint16_t i=0; i < strip.numPixels(); i++) {
            strip.setPixelColor(i, strip.Color(0,0,0, j ) );
          }
          strip.show();
        }

        delay(2000);
    for(int j = 255; j >= 0 ; j--){

        for(uint16_t i=0; i < strip.numPixels(); i++) {
            strip.setPixelColor(i, strip.Color(0,0,0, j ) );
          }
          strip.show();
        }
  }

  delay(500);


}

void whiteOverRainbow(uint8_t wait, uint8_t whiteSpeed, uint8_t whiteLength ) {
  
  if(whiteLength >= strip.numPixels()) whiteLength = strip.numPixels() - 1;

  int head = whiteLength - 1;
  int tail = 0;

  int loops = 3;
  int loopNum = 0;

  static unsigned long lastTime = 0;


  while(true){
    for(int j=0; j<256; j++) {
      for(uint16_t i=0; i<strip.numPixels(); i++) {
        if((i >= tail && i <= head) || (tail > head && i >= tail) || (tail > head && i <= head) ){
          strip.setPixelColor(i, strip.Color(0,0,0, 255 ) );
        }
        else{
          strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
        }
        
      }

      if(millis() - lastTime > whiteSpeed) {
        head++;
        tail++;
        if(head == strip.numPixels()){
          loopNum++;
        }
        lastTime = millis();
      }

      if(loopNum == loops) return;
    
      head%=strip.numPixels();
      tail%=strip.numPixels();
        strip.show();
        delay(wait);
    }
  }
  
}
void fullWhite() {
  
    for(uint16_t i=0; i<strip.numPixels(); i++) {
        strip.setPixelColor(i, strip.Color(0,0,0, 255 ) );
    }
      strip.show();
}


// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256 * 5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0);
}

uint8_t red(uint32_t c) {
  return (c >> 8);
}
uint8_t green(uint32_t c) {
  return (c >> 16);
}
uint8_t blue(uint32_t c) {
  return (c);
}

Qi‘s Halloween Costumes Process

I’ve decided to go ahead with my wizard hat idea! I’ll be sewing on roses, spiders, spider webs, and a large black tulle bow adorned with twinkling lights. The roses will be crafted from black fabric and red tulle, while I hope to find sequined black tulle for the bow to add a touch of sparkle.

For lighting, I’ll use small red, purple, and orange lights to create a twinkling effect on the hat, and I’ve found some great references for that.

To complete the look, I’ll pair the wizard hat with a plain black velvet long skirt. I’m keeping the skirt unadorned to let the hat take center stage; I want its details to really stand out!

Shopping List:

Process:

I had already bought black fabric and red tulle and started experimenting with making the roses and bow for the wizard’s hat.

(I am making a rose flower. Each semicircle is a rose petal. I will sew them together.)

To do list:

-Make a fabric rose

-Make a fabric bow

-Try putting lights in spider doll

-Solder together the lights I need

-Write some code. Sew everything onto a wizard hat.

QI’s Plush Night Light

Yolk is a plush night light in the shape of an fried egg that I made for this project. It is designed for children aged 6-12. For children, fried eggs often appear in pans or on the dining table. They‘ll unfamiliar with fried eggs appearing on the bed. This is my purpose. I hope this toy can inspire children’s creativity and imagination. At the same time, this brave fried egg will protect children in the dark so that they will no longer fear the dark. This egg night light plush toy combines comfort, functionality and creativity, and is a good companion for children.

Materials:

I used white fabric as the egg white and yellow fabric as the yolk. I also used pink and red felt fabric as the tie bow of the fried eggs to make it look more lovely.

Circuits:

Two yellow light bulbs were placed in my circuit. I thought yellow could better represent the color of the yolk than the white light bulb. I placed one light bulb in the tie bow, another light bulb in the ping-pong ball in the yolk to make the light of the yolk look softer, and placed the switch in the egg white.

Process:

The fried egg is made up of two pieces of fabric, front and back. I cut a hole in the front piece of fabric to sew the yolk and egg white together. This way there is a clear line between the yolk and egg white, which looks more realistic.

Here is what my pulsh night light looks like:

Challenges and Improvements:


-When I put the cotton into the fried egg, I couldn’t control the shape of the cotton, which made the fried eggs look not round. I used a small ruler to adjust the position of the cotton so that the cotton was as evenly distributed as possible in the fried egg.
-When placing the light bulb, I initially placed too much cotton above the light bulb, which make light can’t passing through the cotton. Later, I move the cotton that I use, so the light could pass through the cotton and fabric.

If I have time and I am more familiar with sewing and making circuits, I would like to:

-Installing a speaker to play some lullabies or white noise can further enhance the bedtime experience. These gentle melodies can help lull children to sleep and create a peaceful environment.
-Add a timer function to automatically turn off lights and sounds after a set period of time. This ensures that toys are not left on all night, thereby improving energy efficiency.

Qi’s plush night light proposal

In Class Prototype:

My prototype for the class was a piece of toast, so I placed it in the pan for the photo. I didn’t fill it with cotton, which kept it soft. I like it, it feels a bit like jellycat.

For Ideations:

Screenshot

My idea was to make a fried egg where the yolk can be separated from the egg white, and the light will be placed in the yolk. I love fried egg, and I thought it was an interesting idea to put food plush toys on the bed. I thought it would be a great experience to let my favorite food on the side of me to sleep in bed. The challenging part was that I didn’t know how to make a hollow plush toy, which was the part I needed to figure out.

Materials:

Use yellow cloth for the yolk part and white cloth for the egg white part. Put the yellow light bulb into the egg yolk.

Samsung Laptop Teardown

For this teardown project, I used a 2012 Samsung laptop. This is exciting because to me, a 12 year old laptop feels quite retro. Since computers have been around for almost 50 years, this device represents an important part of that history. Let’s take a deeper look at what’s inside this decade-old laptop.

Here is what the laptop looks like after teardown:

Here is the tool I used for disassembly:

Phillips screwdriver to remove nails.

Scissors to remove connecting wires.

A flat-blade screwdriver to pry open the device casing.

Now, let’s take a look at my disassembly process:

First: Open the bottom case of the laptop.

Second: Remove the battery and motherboard, speaker.

Third: Remove the black tape which covering on the keyboard base.

Fourth: Disassemble the keyboard, control panel, computer case and base.

Fifth: Remove the display from the computer case.

Commonents and Function, Manufacturing Process:

Laptop Cover: Plastic, The cover protects the laptop’s screen from physical damage, dust, and spills when the laptop is closed. It also shields the internal components from external elements.

For Manufacturing, for plastic covers, raw plastic pellets are heated and injected into the mold under high pressure. The plastic cools and solidifies into the shape of the cover.

Speaker: Plastic, The primary function of laptop speakers is to provide audio output. They allow users to hear sounds from various applications, directly from the laptop without needing external speakers or headphones.

For Manufacturing, Cutting, shaping, and preparing the diaphragm, voice coil, magnet, and surround for assembly. Wire is wound around the bobbin to form the voice coil, which interacts with the magnet to produce sound. The diaphragm, voice coil, and magnets are assembled into the driver unit.

Battery: Sodium-ion battery materials, to provide power when the laptop is not connected to an external power source.

Motherboard: A hard sheet of nonconductive material, usually plastic,It connects and integrates all major components, including the CPU, RAM, storage, GPU, and peripheral ports, enabling communication between them.

During the manufacturing process, a sheet of fibreglass fabric is coated with epoxy resin and heated until the resin is partially cured. This sheet is called prepreg. Multiple sheets of prepreg are stacked to the required thickness to create a laminated sheet. Sheets of copper foil are applied to both sides, before being placed in a heated press to complete the curing of the resin and allow the different layers to bond together. The end result is a sheet of copper-clad laminate.

Keyboard: Plastic, It allows users to input text, commands, and data into the computer through keystrokes, making it a primary tool for typing and data entry.

Control panel: Aluminum,To control the movement of the mouse, allowing users to access any program on the computer.

Keyboard base: Plastic, To support the keyboard keys.

USB Port: Steel with paint, A USB flash drive or external hard drive can be used to store and transfer digital art files, including paintings and graphics.

Display Form: Liquid crystal, To provide visual output for the user. It shows the operating system’s interface, applications, media, and other content. LCD Screen form.

Interesting Design Choice:

1. When I disassembled the computer, I removed a lot of black tape from the computer. The purpose of these tapes is to prevent dust and static electricity from affecting the computer components.

2.When I disassemble a computer, all the screws in the computer can be removed with the same Phillips screwdriver. This saves me the time of looking for a screwdriver.