Week x: Final Project Documentation

PART I | Brainstorm

  1. inspiration

    This is part of my undergrad thesis, exploring the boundary between human body and arhcitectural space.

  2. initial idea

    Inspired by my thesis, I want to create a shared clothing that documents the movements of bodies.

    Here is a 2D sketch of my idea.

    The input would be sensors attached on the garment detecting the coordinates of different body parts.

    As bodies move, the sensors would collect a series of coordinates, which will then be send to an output device that plot these coordinates onto a graph/map.

  3. modified idea

    Now it is week8, and I realized creating this garment thing is probably too much work.

    Instead, to make it simple, I decided to make a pair of motion tracking socks.

    The output is still going to be graphing a set of coordinates into a movement map.

    However, the input will be minimize to just two sensors, one for each foot.

    A pair of coordinates will be recorded everytime the sock detected pressure.

    Ideally the output can graph more than one pair of socks, and assign different style/color to each individual's motion.

    Here is a sketch of the 'tracking socks' idea.

  4. new yet final idea

    So I talked to a bunch of TAs, and they all suggested me to do something I understand/capable of more.

    Then, I looked through my past weeks and decided to combine RGB LED and button into a simple but still interesting project.

    Using RGB LED as an output device allows me to change color as well as intensity, which can easily create an ambient environment for the user.

    On the other hand, a button is the most basic yet intuitive way of interating.

    For its use, I have always wanted a timer that is not so aggresive but still generate a certain degree of stress.

    After all these evaluation of my capability as well as interest, I landed on the 'hourglass light' idea.

PART II | Step by step

  1. electronic design

    I started with just replicating the RGB LED board that Neil provided.

    I wanted to make sure I understand every detail about RGB LED.

    Here is what I did using RGB LED duringWeek 9
    .

    Then, I also successfully adjusted the codes to make the light transition between green and red at different rate.

    The speed of transition is controlled by editing the PWM delay time.

    What the LED is really doing is basically changing the speed of blinking.

    I did a bunch of trials, and all C files are here

    However, later I realize if I want to add a button to the board with RGB LED, I would have to change to attiny44. which has more pins.

    I tried this during the interface week Week 12
    .

    Something was wrong with the board, a short somewhere that I could not find.

    When I was about to redo the routing, I find out a better RGB LED product from adafruit.

    This kind of RGB LED requires only one pin connection, while allowing me to connect them in series to control more than one light.

    One of my classmates (Eyal) is also using this kind of LED, he has a really nice documented page about using these LEDs adafruit RGB LED button lights

    So I redeigned my board incorporating these new LEDs.

    I provided a 2*2 pinhead to connect to a chaine of 8 LEDs.

    Also, there is a button controlling the on/off of these LEDs.

  2. embedded programing

    Since Eyal is doing something similar and an expert at programming, I go ask for help from him.

    Apparently, the LED buttons we bought are really easy to program with arduino.

    But both Eyal and me are trying to keep codes simple in c.

    So we find on github a library for these LEDs named ws2812_AVR, which makes it very easy to code in c.

    See example fileshere

    I first tried to program with sample files. Here are some images.

    Then I made modification to the sample RGB flashing code, so that my lights all shines white light while dimming over a period of time (30s).

    After this was achieved, I incoporated Neil's button code, so that this dimming process can only be triggered once button is pressed.

    I named this RGB_timer.

    See my timer fileshere

    To program the board, the file structure need to be kept like how I attached in the zip file, and there are three commands that need to be followed strictly.

    1. mkdir Objects

    2. make

    3. make program-avrisp2 (or any programmer that you use)

    Now my electronic parts are done!

    My original plan is to have each LED button dim one by one until the last one is gone.

    However, with my limited programing skill and time left, I decided to keep it simple so that all 8 LED buttons dim simultaneously.

  3. product design

    Since I want this to be a timer, I decided it should be the shape of hourglass (cliche metaphor).

    Rather than sand falling through, my hourglass will have a strip of LEDs cast into it, so light is falling through as time pass. (now it is only dimming rather than falling due to limited coding skill and time as mentioned above)

    Here is a 2D sketch of the casting method, I am plan to used the first one (2 parts cast).

    See my stl and v3d files here and here

    I used the shopbot and blue wax mill the mold for casting.

    Then I cast my actual mold with woomoo in the blue wax mold.

    This is suppose to be a two-part mold that give me the result of a thin shell hourglass.

    However, I am running out of time, so I changed the design to a solid hourglass with only a slot in the center for LED strip.

    To look better, I mixed in pigments (neon yellow & black) and poured them seperately from different ends.

    Then something unexpected happened, the wood stick I put in the resin to cast a trench got stuck in the resin.

    When I checked on my resin after 12 hours, it is already almost impossible to take it out, though I did put release agent on the wood stick.

    I finally release it using a heat gun to soften the resin.

    However, the resin was left with some cracks and marks on it, which is really sad.

    I also created a acrylic glass base for this hourglass light to store all the electronic parts, so that it looks furnished and ready to go.

    There will also be a dowel connecting the button on PCB board, so that the dowel pops out from the glass box, inviting user to interact.

    Later on, I modeified the design again to use only half of the hourglass so that it canbe placed against wall or any vertical surface.

    See my dxf file for the glass base here

  4. assembling

    Now time to assemble everything!

    One thing happened during assembling is realizing I run out of time getting acrylic glue, which I replaced with double-sided tape and hot glue (very last-minute and terrible choice).

    I forgot to take photos of the process of assembling, but here is the final thing!

PART III | Summary

  1. questions to answer

    What does it do?

    A:It is an ambient timer. (Dimming lights over a course of 30s)

    Who's done what beforehand?

    A: I was looking for previous projects that did similar things, and I found this slow glass

    What did you design?

    A: I designed the board using eagle, referencing Neil's RGB LED board and button board. I also designed the hourglass fixture using Rhino (parametrically). Then, I create the toolpath for my mold using 3Dparts, and I milled it on Shopbot using blue machinable wax. Eventually, I also designed the glass base using Rhino and laser cut it, in order to hold all the hardwares.

    What materials and components were used?

    A: PCB board, electronic parts(attiny44, button, adafruit LED buttons, resistors, resonator, capacitor, isp, ftdi), 1/8" acrylic board, resin (for casting of hourglass), woomoo (for casting the mold), blue wax (for casting the mold for woomoo mold).

    Where did they come from?

    A: Everything is from CBA/ACT shop except adafruit LED buttons, which were purchased from Amazon.com

    How much did they cost?

    A: the LED buttons cost $7 for 50, so 8 of these cost $1.12

    What parts and systems were made?

    A: The board is milled, the electronic parts were soldered onto the board, and all these hardwares were then programed through embedded programming. On the other hand, a mold for mold was made through milling blue wax, then a mold was made casting woomoo into the blue wax, and eventually a resin hourglass fixure was cast using the woomoo mold. Also, an accessory acrylic base was made to fit under the resin hourglass, which altogether formed the user interface/experience module.

    What processes were used?

    A: Subtractive fabrication for PCB board, Embedded programming, Subtractive fabrication for milling molds, then casting for physical product.Finally, system integration at the end to assemble and put together everything.

    What questions were answered?

    A: How to controll output device using input device? How to make LEDs change intensity? How to change delay time for LEDs to dim over a period of time? How to cast thin shell structure? How to make two/three-parts mold? How to cast resin? How to dye resin? How to ask for help (online/offline)?

    How was it evaluated?

    A: My skills in hardwares and softwares are terrible, especially for embedded programming. During the process of making my final project, I got very good at soldering small parts. I am still not very good at routing in Eagle, need to learn more about this. The design of the board can definitely improve alot. I also learned a lot about c code and command-line, but still too much more to learn along this route. Overall, I am happy with the result and wish I made more effort early on in the semester to learn embedded programing. The key criteria for evaluation is whether the whole system function integrtedly. I want to make a lighting timer, and it happened! What a miracle!

    What are the implications?

    A: During the entire process, I changed my concept dramatically as I realized what is possible vs impossible based on my skill sets and the learning curve of certain skills. It is interetsing how complex a project can begin with, and how simple a project can end with. The more intereaction with human (body/brain), the harder it gets. This is why I ended up using only a button to interact. Simply doing something with the machines aremuch earier compared to leaving flexibility to user to adjust and input parameters and commands. In fact, even just with a simple button and LED, there's a ton of cool concepts that can be realized, especially in combination with unique product/interface design. I really enjoyed a lot, learning everything from scratch, and be surrounded by so many brilliant and helpful people. Special thanks to Graham, Tom, Eyal and Pohao for helping me along the way. Nothing can be accomplished if I did not reach out to them asking for help. Thank you, everyone!