The Kinetic Facade

Nariddh Khean
code3100
Published in
11 min readApr 3, 2017

--

A Hyper-Sensitive Solution

FEEDBACK

Provided by the coaches after the week 5 presentation, here is a list of points given as feedback, that I’ve attempted to rectify over the course of the week:
_ LEDs have been done… Why? What makes it unique?
_ Look into how the material drives the idea…
_ Produce more. Everything is still ideas. Settle!
_ Be more than just a screen!
_ Be more creative, don’t focus too hard on specifics.
_ Let the audience I M A G I N E ! ! ! (this final one resonated in me the most)

THE PREMISE

This past week, the IoT and Smart Buildings Group has been exploring the idea of a hyper-sensitive kinetic facade that responds to faint, environmental stimulus.

When talking about the pavilion itself, our facade would most likely occupy a portion of the ceiling left exposed to the sky. Our vision involves a ribbed, grid-like structure, supporting a fabric that “sags” through the crevices of the ribs. This fabric will be tightened and loosened, creating a vertically oscillating motion, through forces induced by continuous servos. Because we intend to program the servos using the Arduino toolkit, this allows for the connection to a multitude of Arduino sensors, consequently allowing the facade to respond to its surroundings, to “sense”.

From an aesthetics standpoint, our goal is to imitate specific anatomical features that pulsate, such as the heart, or the lungs. This steady rhythm has the potential to represent a state a clam and relaxation, as well as stress and anxiety. These two ends of the spectrum are what we intend to convey within this kinetic facade.

There are two parts that need to be explored to test the viability of this concept. The first is the possible sensors that we could utilise, and the extents at which they collect data. From there, a weighting system needs to be developed to determine which sensors affects the motors at what extent. The second section is the collaboration between the motors and the fabric, on a structure that allows for such movement. This second stage, was my goal for the previous week.

TUESDAY

[mon. 2300] _ Sketching up a plan:

Below, you can step into the mind of a sleep-deprived uni student, on the train home with a singular vision, and a vehement drive to make that vision come alive. What could arguably be perceived as nonsensical scribbles, this illustration allowed me to visualise the potential for this concept and empowered me to think up the following...

_ Imagine a horizontal, grid-like frame, held up by an unimportant structure…
_ Imagine a light fabric, draped over. At the corners of this fabric, are holes, not unlike the holes you would find on a button-up shirt…
_ Imagine a pulley system, powered by a motor, wired along the frame of the structure, and clinging onto the button holes with carabiners…
_ And finally, imagine weights, placed onto the fabric as a counterbalance, and the motor osculating between pulling and releasing the tension in the wires…

The first sketches of the idea, developed on Monday night on the train home

[1400] _ Scrounging for scrap materials

[1500] _ @Bunnings _ Purchased the rest of the materials

[1800] _ Measuring, marking, cutting, and sanding the pieces, ready for construction:

With a basic idea of what I wanted to constructed, I listed the items that were needed to create the structure; legs, a top and bottom frame, and some ribs for a “cross”. Because of the reliance on scrap material, and things lying around the shed, the specific sizing was driven by the thought: “the pavilion is definitely going to be bigger than whatever you build, so make the largest structure you can, with what material you have, to provide the closest representation of the final product…”

Construction progress of the structural model

WEDNESDAY

[1400] _ @Surrey Hills _ Picked up the motor shield and the 3kg-cm continuous servo from Justin:

Conversations with the just-coined “Arduino Wiz” himself, Justin, lead to the conclusion that a continuous servo was the ideal programmable motor for this specific situation. Luckily enough, Justin had one lying around, that he was kind enough to let me borrow.

A Continuous Servo (3kg-cm), Adafruit’s Motor Shield (v2.3) and the Duemilanove Arduino Board

[1700] _ Research into the specific hardware and coding required for Arduino:

When I got home that afternoon, I did some research into the hardware I was provided. That night, I got it to work… barely. Here are the hurdles that I had to overcome to reach this point:

_ Make sure the Arduino was connected through the port “COM3”
_ Connect the servo to the correct pins on the Adafruit Motor Shield
_ Update the board manager from the “Arduino Uno” to the “Arduino Duemilanove or Diecimila”
_ Download and “#include” the appropriate libraries for the Shield and the Servo

From there, I ran an example script included in the libraries, and produced a simple sweeping motion.

This first time the continuous servo moved!

THURSDAY

[0900] _ Arduino coding, playing with the variables and simple wave inputs (constant conversations with Justin):

Because I simply used an example script, I didn’t understand what the code meant, and by extension, I couldn’t control it. The next morning, I set about to do just that, understand it. I poked and prodded at the code, changing individual variables and trying to comprehend their effects on the servo. Here are the items of discovery:

_ The “delay” value produces a pause in the loop, in milliseconds
_ When writing onto the servo, only values between 0 and 180 are accepted
_ A “servo” and a “continuous servo” have different write methods. Both need values between the aforementioned range, however, a servo understands that value as orientation in degrees, and a continuous servo understands the value as speed and direction
_ For the continuous servo, a value of 90 translates to no movement. As the value moves either way towards 0 and 180, you receive an increased speed for the servo rotation, in either directions (180 being clockwise and vice versa)

Several hours later, I was able to map a basic sine wave onto the continuous servo, with the intention of mimicking “breathing”.

sine = speedRange*sin(i/timeLoop*PI*2)+90;
servo1.write(sine);

Serial plotter of the sine wave
Basic sine wave in motion

[1400] _ Arduino coding, further experimentation, complex waves, “easing in and out” functions (conversations continue):

Being able to control the type of data the continuous servo receives was a big step in this whole exploration. This means, that as long as I can receive data from external sources (sensors), I have the ability to remap those values to define it’s motion. Throughout this whole process, a constant flow of conversation between Justin and myself opened my eyes to a deeper understanding of the Arduino and the continuous servo:

_ Initially running in 9600 bauds (the speed at which data is transferred), my debugging statements had the potential to throw off the timing due to this relatively slow rate. Justin suggested to bring that up to 115200 bauds, and to remove the debugging statement. No noticeable difference in performance…
_ I observed an alignment issue. The servo would complete a “pulse”, but not return to it’s initial position. In practice, over long periods of time, and with the pulley system wired up, this would be detrimental for the structure. Justin suggested three things: use a microswitch, use a stepper motor, look into “easing in and out” functions. Not wanting to hunt down further hardware, I explored that last suggestion.
_ When the sin wave crosses over the 90 value (changing directions), the gradient is rather steep. This may be the reason I’ve been noticing alignment issues, the servo cannot keep up. I rebuilt the curve to reduce the gradient as it approached 90. This did not fix the alignment issues.

Still experiencing alignment issues, I added a delay after a “pulse”, attempting to provide more time for the servo to react to the commands, but also providing another variable to control. This brings the variable list to: pulse length, pause length, and maximum rotational speed. The alignment issue persists, and can be seen through the observation of the toothpick in the video below.

if (i >= 0 && i < 0.25 * timeLoop) {
cosine = speedRange*(0.5*cos((i/timeLoop)*4*PI)+0.5)+90;
} else if (i > 0.25*timeLoop && i < 0.75*timeLoop) {
cosine = speedRange*(-0.5*cos((i/timeLoop)*4*PI)-0.5)+90;
} else if (i >= 0.75*timeLoop && i < timeLoop) {
cosine = speedRange*(0.5*cos((i/timeLoop)*4*PI)+0.5)+90;
}
servo1.write(cosine);

Serial plotter of the modified cosine wave w/ delay (the delay isn’t shown)
Modified cosine wave in motion w/ delay

[1800] _ Putting together the structure:

With every component ready to go, I started to put the structure together. Just some observations during the process:

_ I’m a horrible carpenter…

Completion of the structural model

FRIDAY

[0900] _ @Bunnings _ Purchased eight screw-hooks, and some more sandpaper

[1100] _ @Jaycar _ Purchased a 13kg-cm servo, servo attachments, and two spools

[1300] _ @Dollar Store _ Purchased four mini carabiners and cotton string

A spool, cotton string, and four small carabiners

[1600] _ @Fabric Shop _ Purchased three types of fabric (1.5m sq):

Going into the fabric store, I had no idea what I was looking for. The lovely lady who helped me out, still confused to this day about what I intend to do with the fabric, suggested three types of polyester, all with different characteristics:

_ Stretchy: Known as “Jersey Polyester”, this material has the ability to stretch in both directions.
_ Thin: Known as “Chiffon Polyester”, this material is incredibly light and thin, is also see-through, but cannot be stretched.
_ Tough: Unknown name, this material is similar to the Chiffon polyester, in the sense that you cannot stretch it, but it’s considerably thicker, heavier, and not see-through.

That night, with the help of a former seamstress I call “mum”, we cut the “tough” fabric into size, hemmed the edges to prevent fraying, and created button-like holes for the carabiners to clip onto. We only got through one of the fabric types, due to a combination of the time it took to just do one sheet, and her busy days. No matter what, I was grateful that she took time out of her schedule to help.

[2200] _ Moment of truth, putting all the pieces together…

For the first tests, we connected everything together besides the motor, just to see if the mechanisms of the model would work if I pulled the strings instead. After placing the fabric on top of the frame, measuring weights to sit on top, clipping the carabiners on, tying the strings onto the carabiners, cutting the strings with enough length to work with, feeding the strings through the screw-hooks, and tying the ends of the strings together, I pulled on the string…

The moment of truth…

failure…

The fabric didn’t move. No matter how hard I pulled on the strings, the fabric would barely move. I changed the weights on top, I changed the length of the string, I changed the method of pulling, but to no avail. Disheartened, I called it a night.

SATURDAY

[0900] _ Moping… :-(

[1000] _ Reflection, figuring out why it didn’t work:

With a rested mind, I spent some time trying to determine where the model failed. I believe the main problem here is two issues conspiring against me. Firstly, the weights needed to hold down fabric, providing the counterbalance for the entire system, was too heavy. The fabric didn’t naturally pull down into the crevices, hence the facilitation through external forces. But if you combine this with the effects of the materials used; wood, polyesters, and cotton string, I speculate that there is a large coefficient of friction between those materials. These combined issues increases the amount of force required to create the intended motion…

Another thought that came to mind was the positioning of the screw-hooks and the type of string used. The angle at which the string had to move around was rather acute. This is pure speculation, but if the the hooks were positioned in a way that allowed the strings to move around a more obtuse angle, this may have reduced the amount of force required. Furthermore, the string itself is made of cotton. This wasn’t a premeditated decision, it was more the availability of the item. The string allowed for a certain degree of stretch, meaning that you needed to pull more of the string to get the same effect as a material that didn’t stretch…

[1100] _ More sanding

Sanding the locations in which the fabric comes in contact with the wood to a chamfer

[1300] _ Test…

In an attempt to reduce the friction between the materials, I sanded the living daylights out of the contact surfaces. Additionally, I chamfered the right angles under the same intent. Another test, another…

failure…

[1400] _ Hook repositioning, test…

I repositioned the hooks so that the minimum angle the strings would experience was roughly 90°. Another test, another…

The repositioning of the hooks so that the string has less of an acute angle to overcome

failure…

[1500] _ Down-scaling, a last ditch attempt…

As one last roll of the dice, I thought it might be worth it to try a downs-scaled version of the model. The reasoning behind this was to reduce the surface area in which the fabric and the wood, touch. Rounding up whatever scrap material i could, I started to construct another frame.

Last ditch attempt to down scale the frame

About half way through, the material split as I was nailing the pieces together. At this point, I physically couldn’t finish this model because of the poor material quality. This where I gave up…

material failure…

SUNDAY

[0900] _ Documentation:

During the course of the past week, I took detailed notes on what happened at what time. I spent the entirety of Sunday pulling all of the events together into one cohesive, and somewhat presentable timeline.

REFLECTION

Disappointed, but not dissuaded…
I still believe the idea is solid. The methods of experimentation were just that, experimentation. This did not prove, nor disprove, the viability of the concept. It is an ongoing process that I intend to explore further.
On Monday, I will bring in this model, and share both the thought process and issues with the class, in the hope of finding a potential solution. Or at least where to go from here…

--

--