Friday, December 18, 2009

Methodical Madness Caps the Semester

Well, this sucks. It's 1:20AM, December 19, and I am leaving for home in... 9 hours, driving 10 hours. I will be awake, in a car, driving, longer than I will sleep tonight. It's going to be terrible. As such, I can't write nearly as much as I would like to write for this final post.

I will say that this semester, this class, has been the most valuable class that I have taken at Michigan. The principles I learned, the people I met, the discussions I had... it was life-changing. Max, John, and Karl were right, not surprisingly. They are truly brilliant, in their own ways.

I came into this class resigned to the idea that I was going to be stuck a metallurgist as an engineer. I knew this wasn't actually the case, but it was difficult not to think so.

I will miss this class. I will hopefully keep in contact with as many of the people as possible. I know it won't happen with most, but the people I met were all rather great in their own ways. Even those I did not get along with quite well, I had great respect for.

For those considering taking this course next year, and thinking it may be too much work - do it. It may be a lot of work, but it is worth it. Trust me.


Now, for a shameless plug!

I am continuing with another blog: Concrete Theory
Hopefully at some point it will be worth the read.

Saturday, December 12, 2009

The Final Product: The iWall

Well, it's over, and it's been fun, so I guess it is time to do a quick rundown of what our SmartSurface was. The nice part is, I produced the blurb for our group, so I can kick off with that!
The iWall Modular Light-Filtration System

The wall you see here is a modular, scalable, self-adjusting multi-aperture window, designed to optimize light flow into a room by manipulating the position of rotating wood panels. You could call it an 'automatic venetian blind', as that is the gist of the purpose. The system consists of 30 individual modules, with one panel per module, which allow a variable amount of light to pass through. The structural elements are built modularly, but circuitry elements - such as wiring - are set up in a non-modular fashion. Individual module apertures open and close in reaction to the intensity of the light that passes through the wall as detected by light-dependent resistors (LDRs), seen on the projection side, holding a relatively constant light level on the ‘interior’ of the wall at all times - this gives 'heliotropic' and 'smart' characteristics to the wall - 'surface', fitting it into the premise of the SmartSurfaces course. The actual actuation is by a grid of servos powered externally and controlled through inputs from an Arduino Mega and the LDRs. The materials used in the assembly of the individual modules were 3/16" cast acrylic cut by laser and 3/16" 6061 aluminum sheet cut by water jet.
The design for the iWall was described in a previous post, so here I will mostly detail the construction. Fortunately, Pete was kind enough to provide us with a large number of photos taken while we were assembling the system in order to do just that!

I will not cover the electronics, as you can likely check out Neil's blog for the information on those. Suffice it to say, they worked, if not necessarily perfectly - no fault of Neil's, it was just 'quantum weirdness', as John put it.

First, our final product:


A Module Rendered:

Module rendering, with panel rotation shown.

Exploded to Show Pieces:

Fairly simple, each module only has 13 pieces:
8 Acrylic Rectangles
4 Aluminum triangles
1 Servo for operation

Step 1: Produce Module Pieces

All acrylic is laser cut.

All aluminum is cut with the water jet.

Step 2: Lineup

All of the pieces lined up pre-assembly.

Step 3: Assembly

Connect aluminum to acrylic cross-bars. Tight fit!

Put sides on triangles and glue sides together.
Took a little brute force, the fit wasn't exact.

Place in rack, attach third side to each half.

After this step, panel is placed in center and two halves are glued together, producing a full module. The glue had to set for several hours before it was structurally ready.

Step 4: Build a Wall

The modules simply bolt together, and wiring is laced down the sides. The setup process for the wall built from individual modules was a couple of hours, which was impressive but not altogether surprising. We did expect something to go wrong, but nothing really did until everything was built and wired - there was a circuitry issue (see Quantum Weirdness in introduction).

Step 5: Complete!

The reason the iWall worked so well was the attention to detail put into perfecting the design of each of the individual pieces, and into optimizing the production process of the modules. From final design to gallery piece was about three weeks, which shows how quickly our group could work once we had a concrete idea to unite around. Everyone put in a ton of hours over the last couple of weeks of the project in order to ensure that we got results, and our wall was a resounding success! It can be seen in the Architecture Gallery in the Taubman School of Art and Architecture for the next few days, and then will be moving somewhere in the Duderstadt Library after that point.

Friday, December 4, 2009

Methodical Madness Makes an Update

Our group is humming along, and with Thanksgiving over we have been back in the saddle, moving towards completion of the final project at a brisk pace.

Currently, we are divided into three task groups, with each team having their respective tasks.

Build Team: Brieana, Josiah, Pete, Taylor
Coding & Circuitry: Neil
Documentation & Logistics: Me

I feel that this division plays well to the strengths of each of the teammates, and when I am not writing I help the build team as an extra pair of hands.

Module Design

As described previously, we are making a modular light-adjustment system. The modules are structural, and made of 8 pieces of acrylic with 4 triangular pieces of aluminum for bracing and aesthetics. I have included an image of the module in an assembled state.


Gallery Design

Our gallery piece will eventually look like this:


With light in front and LDRs behind the wall.


Project Status

Currently, we are producing the individual pieces of the module, and assembly will progress for the next few days. I will make a rather large informative update with step-by-step photography at some point in the near future.

Sunday, November 22, 2009

Concrete Theory Has Found a New Home

My post line titled Concrete Theory has moved on to Here. I feel that it will evolve far beyond this course, and leaving it constricted to a course blog is just wrong. Also, I like the WordPress format. I haven't taken a whole lot of time to customize it, but perhaps Thanksgiving Break will allow me to start.

Saturday, November 21, 2009

Methodical Madness is On Track

So, our final project is humming along at this point. We had a productive session on Friday, and plan to have quite a bit done by the time break hits Wednesday night. We constructed and tested three modules with LDR light detection behind them to determine variance of values. We also built some simple code that can get the job done, which will get more complex as time goes on.

Unfortunately, I'm not really able to directly contribute to much this week. I'm flying out tomorrow evening for an interview, and won't be back until Monday evening. This leaves Tuesday as my only available day. As such, I have moved back to coding from working with our build team, since I don't have to be as present and can get more done in less time. I just don't have the hands-on skills with the mediums we are working with in order to contribute significantly. It happens.

It appears everyone's blogging has fallen off at this point. I really don't feel so bad that I haven't done as much on my blog in recent weeks, after looking around at other peoples' blogs.

Saturday, November 14, 2009

Methodical Madness Makes Progress

Our project still has issues, there is still a lack of excitement, but we have gotten to the point where we have a direction and we are just saying 'go'. It is more important at this point to have a finished product than it is to have a better idea.

Our plan is to produce a wall with multiple apertures that allow light to pass through in varying amounts in order to optimize the amount of light on one side of the wall. In theory, the wall would be external, probably south-facing. For the purposes of the gallery piece, we have to rely on a large lamp to produce the necessary light. The wall will adjust to light fluctuations externally over time, as well as to internal commands to increase and decrease light.

The apertures open and close by an array of servos commanded at their core by an Arduino Mega. The servos will require significantly more power than can be provided by one Mega, so there will be an external power source as well. It would be possible to power the entire thing with an array of solar panels in an outdoor environment, but in the gallery we will have to use grid-based power. Light detection will be handled by a color detector and an array of LDRs.

Overall, I feel that the project fits the requirements well for being a heliotropic smart surface.

Friday, November 6, 2009

Methodical Madness Returns

So, I just had a week-long hiatus of pure frustration with this class and school in general. The constant modification of the final project has taken its toll on me, as well as several extracurricular influences, and my motivation for the class that has been there all semester is basically gone. There is hope, however, in the latest iteration of our final project idea.

The current direction we are taking for the final project, which is likely the final direction, is having a variable shading system, which will allow a constant amount of light in from the sun. The design will operate by guessing positions based on intensity readings until it is correct, and then possibly (ideally) recording the proper positions for future use. The algorithm for this is extremely complex, and inspired by the concept of the SMS adaptive learning in the Hot Strip Mill at ArcelorMittal Riverdale, where I interned for the past two summers.

I feel that this plays into my interests well, and will make for a great design project. More detail will be given at some point as things actually start moving along.

Thursday, October 29, 2009

Methodical Madness Shades People

So, we've finalized that we are going to build a modular Solar Umbrella, as explained here, but with a few different properties.

Instead of being used for personal shading, the umbrellas will lattice to form a shaded walkway by day, and lit walkways at night without shading. Multiple umbrellas would be linked to each other by some sort of radio/bluetooth. The links would be utilized to light up specific paths at night with different lights in large parks, where someone can be at a stand, interact with a screen to define where she wants to go, and then follow the lit path to get there. This would not only create a safe environment, but be useful to people who do not have maps at night. It could also be migrated to a more suburban environment and sidewalk routes. This interaction creates the 'surface', as multiple umbrellas would interact to form a map.

Construction of the umbrellas would be modular, so that there could be in-between umbrellas without the more expensive touch-screen interface, that would still be of the same construction. There are other interesting ramifications to the modular assembly we are developing, but that will not be discussed until later on.

We will try to produce concept art with our white paper tonight.

In other news, Neil is back, no longer quarantined with the sickness.

Sunday, October 25, 2009

Calculated Spontaneity is 80% Efficient

Found a pretty astonishing article out of Idaho National Laboratories. Apparently, sometime last year, they developed an inexpensive solar 'panel' - really a sheet - that is around 80% efficient. The technology relies on collecting IR waves. Unfortunately, more work has to be done to convert the energy that they have collected into usable power, but this is still a massive leap forward in solar technology... kind of surprised it wasn't mentioned in class.

Methodical Madness Considers New Constraints

So, Karl put out an e-mail this morning re-defining the constraints for the final project, less than a day after I feel that I constrained the final project quite well. We are now building a robust solar tracker, contrary to the crappy less-than-robust solar trackers we built previously. However, I do still feel that there are two options for a basis for the final project. This is expanding an opinion from my previous post.

Option A: The Solar Tracker
Something that moves or grows to follow the intensity/path of the sun. Essentially, something that maximizes its own efficiency. I feel that the organic growth is intriguing, but difficult, considering the time constraint.

Option B: The Solar Binary
Something that activates or deactivates in the presence of sunlight. Is not overtly affected by intensity of sunlight, only by the fact that there is sunlight.

This does take the majority of the robotic mobility options off the table, at least in theory. I feel like the new constraint will probably bring the project down to earth pretty quickly. Should not be much trouble generating a project at my group's meeting today. I already have a pretty neat idea that meets all of my requirements:

Solar Umbrella
Not an umbrella in the sense that it protects from rain, but instead in the sense that it protects from sunlight - pillars that could be located in a park, the tops of which would expand out into a solar array that would both generate energy for surrounding park lights and create a sort of mechanical tree which people could sit under for shade. Would close up when there is a lack of sunlight, and the very top of the pillar would be a protective cover that would protect the panels from harm due to inclement weather. The pillar itself would house a collection of batteries to store energy, which would be drawn from by nearby lights at night, and also would have power plugs if people wanted to sit under them with laptops, charge their cell phones, etc. It's kind of been done on a smaller scale, but not in a heliotropic and smart way, just in that it is a solar surface.

Saturday, October 24, 2009

Methodical Madness Goes Back to the Drawing Board

So, as far as I was concerned, our team had developed an excellent project Wednesday night, which covered all of the bases for the project requirements very well, which involved everyone equally, and which was very multi-disciplinary. As of our meeting Thursday night, we are somehow back at square one, with no ideas. Don't ask me how the whole thing derailed, it wasn't me. I still like the stadium project, though that may change in my quest for a design.

Here follows my consideration of what I want out of the final project.

I discussed in an earlier post the definition of a Heliotropic Smart Surface, and in another the definition of Sustainability. Each treatise was originally a part of this post, but I cut them out due to them being topics of their own, and this post was about to be ridiculously long and almost unreadable. So, just read those first. They give a good basis for what I am about to say.

There are two avenues we could go down. We can develop a surface, or we can develop a network of points that become a surface when you map them in relation to each other. Essentially, they are the same idea, only differentiated by scale. In the point-networking, we do have to worry about communicating with a centralized dispatch of sorts, or with each other. Otherwise, it is not a surface, it is just a collection of mutually exclusive points.

I'm just going to outline a couple of fairly neat ideas that I have. For the record, the stadium idea no longer qualifies - it is not heliotropic by definition. However, if it utilized shade to activate a mechanism, that would qualify as heliotropic, so possibly...

Heated Stadium Bleachers
Solar powered stadium seating - bleachers with some sort of solar panel inside of them, that also have a heating element. When shadowed at low temperatures (below 32F), bleachers will heat up to a temperature above freezing, in order to melt any snow off of them. Would also have touch sensors set to activate at a different temperature (say, 45F), so that when they feel a large amount of pressure, they heat up further to warm anyone sitting on them. Meets the requirements of being heliotropic, smart, and a surface. May or may not be sustainable, depending on what is done with the energy otherwise.

Self-Cleaning Skyscraper Windows
Windows that utilize a light-intensity detector on the outside and inside to determine a light gradient. They would know when the blinds are closed so that they don't activate unnecessarily, but when the blinds are open and the gradient is too large, they would tag the window for cleaning. Triple sensor could be used to determine whether or not the inside or outside of the window needs to be cleaned. A cleaning crew or solar-powered gecko-foot robot could then utilize this data to go up the side of the building to clean the window. Meets the requirements of being heliotropic, smart, and a surface, while also being sustainable. Bonus that this meets the surface and network of points requirements.

Solar Cockroach
Essentially, small robots that are good at staying out of sight. Will wander areas that are dark, but retreat at the first signs of light. An army of them could be utilized to monitor situations in an urban environment and report back data, such as staying out of sight and detecting people carrying weapons or something of the sort. Could possibly be used as street-cleaning robots, mapping out how much litter they pick up in an area and trending it to determine what areas need additional public trash cans, recycling bins, etc. Would only activate at night, and would avoid headlights. Heliotropic, smart, the group mind would be a surface, and it would be sustainable.

Concrete Theory is Sustainable

To me, sustainability is key. I don't want to design something that won't last, and not just in the sense of physical robustness. I attended the annual SME international conference in Denver, CO earlier this year, and listened to the collection of talks on sustainability, the principles of which apply here. This entire argument is basically pulled from a presentation given by Rod Eggert, head of Mineral Economics at the Colorado School of Mines, though it is modified to fit the context.

Sustainability is one-dimensional. It is either environmental/physical, economic, or social and cultural. Sustainable development, also seen as sustainable design, is multidimensional, and must address all of these sustainabilities in tandem.

In terms of environmental/physical sustainability, the object must last. It can't be a design that will be useless in a short period of time, or that it will break down quickly. It also must be environmentally friendly, but that is a given because of the theme of the course. The environmental sustainability also means that it must be easily recycled, and therefore the design should be modular and easily disassembled for disposal, if applicable.

In terms of economic sustainability, the object must be economically viable. It can't be a design that is so far out there that nobody would invest in it. As an engineer, this is especially important, because my job will in all likelihood be to solve complex problems in economically viable ways.

Social and cultural sustainability is where things get tricky. It depends on context. What is 'sustainable' to a small community or area may not be sustainable when you scale it up to a global level. Community-to-community sustainability may differ, as well. If I design something extremely expensive and awesome that would be sustainable to put in Ann Arbor, I wouldn't necessarily want to put it downtown in Detroit, because the chances of it being vandalized or stolen are much, much higher. If I design something that would be culturally sustainable in the United States, I couldn't just take the exact same idea and put it in Sub-Saharan Africa, as they do not have the same culture or capability to utilize such a design. I'd have to take into consideration that change. I don't want to design something based on a 'what if' world, because I am fundamentally opposed to thinking in terms of the 'what if'. Society is the way it is, and we must design around that. Design should not be an inconvenience, but instead should make the inconvenient convenient or in some way more pleasant than the currently convenient.

Let me create an example. Say I am a CEO of a company, and I have this great idea to pay my employees a wage for the time it takes to walk or bike to work, or give them a stipend and a bonus to use public transportation, and then I want to charge a bunch of money for parking. Environmentally, this is a great idea. More people would leave their cars home, especially if they are getting paid to do so. This means less parking spaces required as well, so more land can be used for green space. Socially, this is inconvenient, and the cost/benefit would have to be weighed. Economically, this is a tossup. The less parking could also mean that there is no need for all of that extra land, and it could be sold off, reducing overall costs. It also could be painful in the sense that I would be paying more money for less work. The stipends would have to be adjusted to make the idea viable economically to the company as well as to the employee. Some employees would still drive, as well, because of the distance of their commute.

Concrete Theory Consults a Dictionary

I think one of the biggest issues with the final project is the lack of a definition for 'heliotropic smart surface'. I'm actually going to tackle the words in reverse order in order to build a definition that is hopefully useful..

People appear to be running around willy-nilly with the idea that "you can call anything that is on this planet a surface", as is reflected by the ideas of some of the other groups. I'm pretty sure that the word surface has an actual definition, but I...

Main Entry: 1sur·face
Pronunciation: \ˈsər-fəs\
Function: noun
Etymology: French, from Middle French, from sur- + face face, from Old French — more at face
Date: circa 1600
1 : the exterior or upper boundary of an object or body
2 : a plane or curved two-dimensional locus of points (as the boundary of a three-dimensional region)
3 a : the external or superficial aspect of something b : an external part or layer
— on the surface : to all outward appearances

Oh, there it is. Now, the key here is definition # 2, the locus of points argument. Anything can really be made into a locus of points, as long as there are at least 3 of them. My uncle is a programmer, and one of the things that he has worked on is a set of geographical overlays - taking bulk data and mapping it onto an actual geographical map. The map could then be deemed a surface. There's the argument for a coordinated set of individual objects being a 'surface'. Well played, other groups, well played. Just remember, each object is only a data point on the surface.

The big issue with this is that the surface can't just be a surface, it also has to be 'smart'. This means that there has to be some change to the individual point data based on an outside stimulus, and the whole map has to update to reflect that change. The update has to be automatic, and done entirely by the system itself, or else it isn't really the surface being 'smart', it is a person being smart. We're already pretty smart, so that's not very revolutionary.

The final hurdle is the heliotropism. This one's tricky. Webster, can you help me out again?

Main Entry: he·li·ot·ro·pism
Pronunciation: \ˌhē-lē-ˈä-trə-ˌpi-zəm\
Function: noun
Date: circa 1854
: phototropism in which sunlight is the orienting stimulus
— he·lio·tro·pic \-lē-ə-ˈtrō-pik, -ˈträ-\ adjective

Well, that helped almost none. Let's try this again.

Main Entry: pho·tot·ro·pism
Pronunciation: \fō-ˈtä-trə-ˌpi-zəm\
Function: noun
Etymology: International Scientific Vocabulary
Date: 1899
: a tropism in which light is the orienting stimulus

Well, aren't you clever. Can I get an answer now, please?

Main Entry: tro·pism
Pronunciation: \ˈtrō-ˌpi-zəm\
Function: noun
Etymology: International Scientific Vocabulary -tropism
Date: 1899
1 a : involuntary orientation by an organism or one of its parts that involves turning or curving by movement or by differential growth and is a positive or negative response to a source of stimulation b : a reflex reaction involving a tropism
2 : an innate tendency to react in a definite manner to stimuli; broadly : a natural inclination : propensity
— tro·pis·tic \trō-ˈpis-tik\ adjective

Well played, Webster, well played. Let me boil this down.

Heliotropism is an involuntary orientation [reflex orientation] by an organism or one of its parts that involves turning or curving by movement or by differential growth, and is a positive or negative response to [sunlight].

OR

Heliotropism is an innate tendency to react in a definite manner to [sunlight]

Wow, that definition is pretty broad. So, it sees the sun, and it does something. Awesome.

So, to summarize, our objective is to design a surface, either an actual surface or a locus of point objects that are connected in a map, that reacts in some way to sunlight and updates the configuration of the surface or the layout of the map automatically. By definition, human interaction can not be a stimulus that the surface reacts directly to, but instead can fit into the category of data. The only way that I can see human interaction being a stimulus is if the interaction causes an absence of sunlight, or a change in intensity of sunlight. There can be secondary characteristics that the surface reacts with based on human interaction, but the sun is the primary stimulus.

Hopefully this helps people by becoming a constraint.

Thursday, October 22, 2009

Methodical Madness has a Plan

Our group formulated a grand scheme for our final project.

The Grand Scheme: Utilizing permanent partial-use outdoor seating in both passive (photovoltaic) and active (piezoelectric) ways to collect energy. The project breaks into three steps, which will be designed one at a time.

The Basic Bleacher
A modular, permanent seating system, designed with solar and piezoelectric capabilities.
Solar would be year-round.
Surface material selection for collecting and retaining heat.
Photovoltaic collection for electrical energy production.
Solar collection would go directly to the facility grid.
Piezoelectric materials would pick up both sound and motion.
Power various activated interactions.
May contain things such as heating elements, malleable surface, powered by piezoelectrics.
Aisle in front of bleacher would also be piezoelectric.
The Activated Interactions
Analog: Heating elements, malleable surface, lighting changes, etc.
Digital: Data collection, digital feedback (scoreboard stats), etc.
The Grand Concept
A full visualization of a revolutionary multi-use outdoor open-air stadium.
Designed around the concept of being powered by itself.
Would likely be a re-design of Michigan Stadium, since we do go to Michigan.

From here, we will be communicating with the Michigan Athletic Department as well as athletic departments at a few other schools to gain energy usage and spectator information.

Tuesday, October 20, 2009

Methodical Madness is Fueled by Happiness

We were assigned our final project groups on Friday. My final team is myself and:
I have never worked with Brieana, but I have worked with everyone else in the group. Pete in Week 2; Neil in Week 3; Westley and Taylor in Week 4. All have contributed well to the projects, and I'm sure that Brieana is an equally strong contributor.

During the class period on Friday, our objective was to formulate initial ideas. Nothing concrete, but we came up with a list.

First, the core to the project is that it must be a Heliotropic Smart Surface. We started with traits that we would like it to have. The first two recommendations were Interactivity and Personality - something that is memorable, with a human interaction. I proposed a Smart Surface designed to harness the heat in Asphalt. We kind of moved away from that idea, saying that we should create something that is possibly modified or developed by Observation. Neil stated that he wanted to work with Novel Materials, something edgy and new that hasn't really been worked with before. I then stated that we want to talk about how Recyclability is important, and the idea that things should be designed for recycling, not designed for manufacturing. We discussed that whatever we design should be Modular, both in Scale and Function. The Local Scale is important, and we need to focus on a local site in order for it to be a meaningful project, something that we can actually work with, IF we are going to be site based. We touched on the idea of using Human Energy alongside Solar Energy, and then talked about the incident in Sweden where they are using Rabbit Energy, though not in quite so humane of a way. The concept should be Noble, and we discussed the possibility of it being Mobile. Bunnies and Sunshine, the new world, Fueled by Happiness. Somehow, we made a segue from there to discussing local locations, and came up with the idea of developing The Big House as a Smart Surface.

The principal idea using The Big House is developing a new bleacher system that is photovoltaic and piezoelectric, and automatically oriented with the sun. The bleachers could be utilized in any outdoor venue anywhere in the world, and developed with recyclable materials such as steel. The project idea comes at a good time, as the bleachers are going to be replaced in the next few years when they re-do the aisles. I am unsure if we will use this as our final idea, but it is definitely my favorite at this point. We are meeting this week to hand in a proposal Friday.

Calculated Spontaneity Does the Robot

Youtube

This is incredible... apparently the program for this is 'simple'... if it is, this company has revolutionized industrial robotics. Scalability isn't all about size - this is scalability of speed, without any reduction in accuracy. Amazing.


Links
Big money. Look, holes. Trends are trendy? Holy crap. Look, politicians dabbling where they shouldn't. Going to start using these tips on lists. Digg clone for design. 40 hours of Illustrator.

Google Analytics
10/21/09: 167 Visits, 307 Pageviews, 47 Absolute Unique Visitors. Average time on site of 2:30.

Random News
Windows 7 comes out on Thursday - I plan on getting it and putting it on my MacBook Pro, likely in VirtualBox form.

Quotes
Inspirational quote of the day from The West Wing:
Bartlet: It was not a space ship from another planet, just another time -- a long since abandoned Soviet satellite. One of its booster rockets didn't fire and it couldn't escape Earth's orbit. A sad reminder of the time when two powerful nations challenged each other and then boldly raced into outer space. What will be the next thing that challenges us, Toby? That makes us go farther and work harder? You know that when smallpox was eradicated, it was considered the single greatest humanitarian achievement of this century? Surely we can do it again, as we did in the time when our eyes looked towards the heavens, and with outstretched fingers we touched the face of God.

Sunday, October 18, 2009

Inarticulate Eloquence Opens and Closes with the Sun

Here is the code for our Hoberman Surface. For include statements, blogger likes to take the <> as HTML code, so I just took them out. Also, if statements with > < etc are changed to 'is less than' 'is greater than' etc to prevent the same issues.

The Stepper Motor - Arduino
#include afmotor.h

AF_Stepper LeftMotor(48, 1);
int position = 1;

void setup() {
Serial.begin(9600);
Serial.println("Stepper test!");

LeftMotor.setSpeed(250);
}

void loop() {
if(Serial.available()){
Serial.println("Available");
char ch = Serial.read();

switch(ch){
case '+':
if (position == 0){
LeftMotor.step(2250, FORWARD, SINGLE);
position = 1;
Serial.println(position);
}
break;
case '-':
if (position == 1){
LeftMotor.step(2250, BACKWARD, SINGLE);
position = 0;
Serial.println(position);
}
break;
}
}
}

The LDR - Arduino
int PhotoA = 3;
int LEDpin = 13;
int valueA = 0;
int threshold = 500;

void setup(){
pinMode(PhotoA, INPUT);
pinMode(LEDpin, OUTPUT);

Serial.begin(9600);
}

void loop(){
valueA = analogRead(PhotoA);

if (valueA is less than threshold){
digitalWrite(LEDpin, HIGH);
Serial.print('+');
}
else {
digitalWrite(LEDpin, LOW);
Serial.print('-');
}

delay(1000);
}

The Link - Processing
import processing.serial.*;

Serial MotorPort;
Serial LDRPort;

void setup()
{
size(720, 720);
colorMode(RGB, 1.0);
noStroke();
rectMode(CENTER);
frameRate(100);

println(Serial.list());
MotorPort = new Serial(this, Serial.list()[0],9600);
LDRPort = new Serial(this, Serial.list()[2],9600);
}

void draw()
{

char ch = LDRPort.readChar();
MotorPort.write(ch);

}

Fairly simple code this time. Got the job done.

Saturday, October 17, 2009

The Final Product: Minor Heliotropic Surface

The grand finale for our last minor project took place on Friday. Our project, as mentioned earlier, was a binary heliotropic surface based on the mechanism of a Hoberman Sphere. The idea was that one side would open and the other would close based on the presence or lack of light.

The biggest problem that we had with the project crept up in the final 24 hours. The final problem was two-fold. First, the motor shield was assembled improperly. It was an honest mistake, two of the resistors on it were switched (one is a high resistance for handling current to the Arduino, the other is lower resistance for handling current somewhere else). My Arduino wound up fried because of this. Secondly, we did not have a motor capable of operating the system. The slip present in all of the stepper motors we had available made it impossible to get enough torque to close the system, even though very little was actually required. Fortunately, John had a fix for us, by providing us with a significantly larger stepper motor and a working motor shield.

With new equipment in hand, we were able to finalize our project just before class began. We tested it a few times, and had an issue with the line we were using not spooling properly - not something that could be fixed in a short period of time with no resources available for it. We had to make the best we could of it. Fortunately, when it came to our time to present, the code worked well, and the system opened and closed as intended. Mechanical stress caused the fracture of a couple of pieces during the testing, but the issue was minor and due to the material properties - ideally, the system would not be built out of acrylic.

Julian Bleecker had some criticism for our project in the sense that we delved too deeply into the mechanism, and should have stepped away from it. I couldn't disagree more. In fact, I feel that the reason our project was a good project was that we spent so much time working on the mechanism. Instead of creating a one-trick pony - something that would have a single intended use - we developed a mechanism that could be utilized in a large number of situations with some modification and scaling. Developing with an intended use is overrated, in my mind, as a lot of things developed with an intended use do not stay in that category for very long. Perfect the mechanism, and let other people figure out a use for it. There'll always be someone that is interested enough to find a way. XKCD states it pretty well. If you build it, they will come.

Friday, October 16, 2009

Calculated Spontaneity Slides through Doors

Youtube

Anyone else a Seinfeld Fan? Excellent montage of every single entrance by Kramer in the entire series - definitely worth watching, because he is hilarious.



Also, add Wired to that list of technology sites I gave out earlier this week.

Wednesday, October 14, 2009

Calculated Spontaneity Makes a Tiny Mistake

Interesting enough to deserve its own post: In a completely harmless event, some careless web design engineer somewhere in the world modified a script improperly, leaving out a single period. Unfortunately, tiny mistakes can cause huge problems, and this one did too, removing global access to every single .se (Swedish) website for a night.

Minor mistakes and tiny errors have caused many major catastrophes. The Three Mile Island accident is an example, where several simultaneous minor issues stacked up to cause a near-meltdown. The blackout in 2003, caused by a simple storm-felled tree according to the investigation, is another example of an apparently minor incident going vastly wrong. Though this one wasn't necessarily life-threatening, it still shows how small actions can have major effects, and likely was a major blip in the Swedish economy.

Concrete Theory Works a Room

The Smart Surfaces course that we are taking part in is meant to teach us a variety of things. The course is, in a nutshell, a design course, teaching us tools and thought processes and team-building methods for use in the future, applicable to architects, artists, and engineers in the world of design. However, there are benefits for each major not seen by the others.

In my mind, the architects and artists, though separate in major, are similar in the way that they learn. The disciplines are both very hands-on, as is obvious in their skill sets being very similar - though the artists are more hands-on and the architects are more technical. They may or may not have worked together before, but they work together easily in general. Each definitely brings their own separate abilities to the table, but they do have some overlap.

Engineers, on the other hand, come at this class from a completely different direction. Most of us have limited hands-on experience with anything but material testing and our respective research topics. Any construction experience or design and development are generally done on our own time, which we (for the most part) do not have much of. We have all of the necessary technical skills and much of the thought process required for design, and can come up with complex solutions that have plenty of calculation. However, when it comes to giving our ideas depth, we are uneducated in most of the skills required to take what is on paper to any other medium.

One of the major stumbling blocks that I have noticed, and not just for myself, is that we engineers are able to communicate intra-major quite well - with other engineers, but when we move into inter-major communication - the majority of our future - we are quite poor at it. I'm saying that in general, we have great ideas and can't sell them to people who don't understand what we're talking about the way we do. You can design a mechanically perfect device, but if you can't pitch it properly, you won't get anywhere fast. In most of our engineering classes that require group work, this isn't an issue, as we are communicating with people that think the same way. Unfortunately, in real life we can't communicate as well with the people that we need to - financiers, designers, production personnel.

This course provides a unique educational opportunity to hone communication skills towards non-technical personnel. Not only do we get to communicate with designers, but we also get to communicate with the general public, who may not have any of the technical skills that we learn, when we do our final presentations.

I feel like I have expanded my expectations for what I will learn in this course. Smart Surfaces is honing design skills, teaching new methods of thought, teaching new hands-on techniques, teaching project responsibility by defining a budget, teaching proper teamwork techniques, teaching new software and hardware, and last, but possibly the most important [for us], teaching engineers how to work a room - how to sell ideas and make them stick.

Monday, October 12, 2009

Calculated Spontaneity Builds a Repertoire

Each week I will try to produce some interesting links from a variety of sources and on a variety of topics. There will generally be no real method behind them, but instead they will be interesting things that I have seen over the course of the past week, or maybe just things that I look at regularly that I feel are worth checking out. I'll try to have at least a dozen or so good links every week.

Links
Design is Observed to be Good to the Core[77]. Mike has a pretty good design blog, too. The 2020 Olympics might be the bomb (bad pun). I Digg good comics. TED talks are always worth a listen. Beaches are nice too. Inhabitat and Pruned are a couple of neat architecture blogs. An interesting design process, though the blog hasn't been updated in a couple months. Also, Dyson is sweet.

Google Analytics
Began analytics on October 8th. Updates are to-current-date.
10/13/09: 43 Visits, 73 Pageviews, 12 Absolute Unique Visitors. Average time on site of 1:33.

Roman Mining
My research this semester is through the Classic Civilization department under Professor David Potter. I am studying the climatic and economic effects of mining on the Roman province of Hispania Tarraconensis. I may actually spin the research off into a separate blog, especially after the class ends if I continue to pursue it as a side-interest. Right now, I have too many things going at once. I'll try to make an informative update on the mining project in this post every week as well, just to be interesting. I don't really have anything for it today. Mostly I have been looking at the variety of minerals that the Romans were able to mine and process and the usage of those minerals. The theory that I am working with right now is that mining bred massive deforestation in the Iberian Peninsula in order to heat the necessary furnaces for smelting.

Quotes of the Week
Generally will contain a few quotes of random variety.
Television: One of my favorite wordplays from The West Wing - there are a Lot of them.
C.J.: Is there anything I can say other than "The President rode his bicycle into a tree?"
Leo: He hopes never to do it again.
C.J.: Seriously, they're laughing pretty hard.
Leo: He rode his bicycle into a tree, C.J. What do you want me to – "The president, while riding a bicycle on his vacation in Jackson Hole, came to a sudden arboreal stop." What do you want from me?
Design:
Good design is obvious. Great design is transparent. - Aaron Russell

Methodical Madness Builds a Guillotine

The idea behind our group's heliotropic surface is that it is exactly as described - a surface. There is no re-orientation mechanism, nothing of the sort, only a reaction to the presence or lack of presence of the sun (or light in general).

The inspiration behind our design is a Hoberman Sphere, a complex-looking mechanical sphere that utilizes very simple parts working together. We took the sphere, re-represented the mechanism in 2-D, and came up with this. So far, it has only been constructed in chipboard, but it looks pretty neat. The issue we have been having is a materials one - chipboard is not strong enough for our purposes, so we are replicating the circle in acrylic and hoping that it can hold itself in one piece without breaking. The idea is to take two of these circles, join them together (easier said than done), and have a mechanism that opens and closes them in an alternating fashion based on whether or not there is [sun]light shining on the surface. The idea is to create a binary system that can have two different uses in less space than would be required by always-open circles.

The difficulty behind this project hasn't been designing the mechanism - that was done on day one - but instead has been finding a purpose for the mechanism. There are so many options that we have thought of, but we cannot decide which to produce. The best part about the mechanism is that it is modular and scalable - we could have an essentially infinite chain, and it could be as large or small as we can produce and assemble it. The only limits are the capabilities of the chosen material. We are using 3/16" acrylic (at last check - we may have changed it, I am not in charge of buying the acrylic), and producing a circle that is about 18" in diameter when expanded, and maybe 6" in diameter when contracted. We are using spandex with 4-way flexibility as a covering for the acrylic. It will look sweet, I promise.

My brilliant idea, which was immediately dismissed by the group, was to make a guillotine that shoots fireworks out of the other circle. It's brilliant! Extremely efficient, lots of spectacle, chopping of heads... the French would be proud. I was going to make a paint drawing, but don't quite have the necessary paint skills (or Paint... I'm on a Mac). Needless to say it includes blades and fireworks. What more do you need, in all honesty? Real ideas include a skylight / spray system for a greenhouse, a skylight / ceiling light alternation, solar collection / solar powered usage, and several others that we are less likely to produce.

Our group has been working well together. We have kind of developed a production chain for which people are in class / not in class, so the acrylic is being cut by Marc, assembled by Josiah, geared by Taylor, and then we are re-assembling the group to work on it together after that point. I feel like, the way our project is designed, the Engineers have less to do this week than in previous weeks - our design really is lacking complexity. I work mostly with the coding, which is generally a few hours per project at most. I am going to try to put together some sort of graphic interface in Processing that shows different things based on what the physical position of the system is, making everything more shiny.

Sunday, October 11, 2009

Concrete Theory Transmits Ideas Through Perception

Instead of having our usual 6-hour class on Friday (10/9), we attended the first day of the Future of Design conference at Rackham Auditorium. This conference was a collection of 30 men and women, some near the top of the design field, who came to talk about what they perceived to be the future of design. Though I intended to attend both days, I only made it on Friday, so I only got to see half of the speakers. Some of the designers had truly insightful things to say, others appeared that they were making pitches for their own products and studios and made very little overall contribution. The speeches will be available on Youtube on October 19th, at which point I will probably post another commentary on a couple of the speakers.

The first speaker up to bat was Laurene Leon Boym. Her speech was more about her product (which seems altogether pointless) than about the ideas behind the conference. She did say two interesting things, one of which was re-iterated to much better effect by a later speaker. First, what is designed today will define our era to civilizations in the distant future. This idea is altogether true - as we find things that were Roman in origin today and piece together their society, millennia from now people will still be finding relics of a bygone age - ours - that will define their perceptions of us. The second idea was that design is becoming more democratic, which she did a poor job explaining but which was picked up later on by someone else who had important things to say.

The inspiration for the title of this post came from a quote by Adam Yarinsky, the second speaker, concerning the properties of a design:
Form transmits ideas through perception.

The idea is that the quality of a design is based on its ability to connect ideas and relationships, and the only way to transmit ideas is through form. I really liked this idea, because it doesn't just apply to physical objects, it also applies to words. In order to properly transmit an idea, that idea must be well-written so that it is easily read. Nobody wants to go through and read a paper that has more grammatical errors in it than the average high school essay - you would spend more time correcting errors than processing ideas! Yarinsky's idea of design was as a process of creation and result, a framework that requires an understanding - an informed intuition - about the constantly-changing reality that is the modern world. In order to properly design, one must engage change, and develop everything relationally, so that the design can change and thereby breed change. The design method must be open and opportunistic, in order to take advantage of everything that is around it in time.

Shane Coen had a great talk on the landscape of society, how it changes, and how it needs to be changed. Usually when I think of landscape architects, I think of the guy who is going to design a brick walkway through a garden for me one of these days, so he did a good job making me realize that his profession is about more than the residential application. Coen had four societal changes that need to happen in order to make our society more sustainable. First, we must properly develop rural land, to save it from becoming urbanized. This hit close to home, because I am from the Upper Peninsula, and we have nothing but rural land. As he said, developers need to learn that profit is still possible with the rural community - it has been ignored for far too long. Second, urban development should be a multidisciplinary team affair. Engineers and designers need to be brought together in order to build an infrastructure that interfaces properly and that is easily modified. Third, there needs to be more work done with leaders to promote development. In general, the city planner is a very weak political position with extremely limited power, but Coen made an argument that it should not be - instead, the city planner should be a leader, as it is in the Netherlands. Finally, education needs to be revamped - the nation is visually illiterate, and our education is miles behind where it should be. There is a need to integrate design into education from an early age, but nobody has stepped up to the plate and done it.

Next up is Ila Berman, who I am going to skip because she cannot be explained without a thousand words of her own, so more on her in another post (likely after I watch her on YouTube and read about half of her work, as well as ask her a few more questions). She is utterly brilliant, and someone needs to put her in a room with our professors and see what crazy brilliant ideas they put together. I'd pay to watch. Everyone after her was difficult to pay attention to, because I was too busy processing everything she said, and nobody said anything more important than she did all day. She, in essence, was the reason to go for the first day of the conference.

Stephen Burks also had a product pitch, but he kept it under control and talked more about the principles of design and used his own designs as examples. To him, authorship is fading, the idea of putting your name on a product will become obsolete as everything becomes more open source, and dialog is the future of design. Collaboration is the next step in the evolution of society, where everyone contributes to everything. He didn't mention Wikipedia, but it is a great example of what he means. The context that a design is produced in changes the idea completely, and culture and design have a very important overlap. He also had the runner-up quote for the title of this post - "Concrete Theory is Technosexual" doesn't quite fit the topic though. Maybe I'll use it later.

Next up was Timur Galen, a Director for Goldman Sachs (which, what?). Though not a designer in any way himself, he had a couple of interesting points. The tools for design have become extraordinarily powerful, and it no longer requires a special spatial mindset to design - you can now produce 3-D drawings instead of producing multiple 2-D drawings and being able to discern the 3-D from them. The rendering is now a nearly-exact representation of reality. Clients are becoming more involved in design, and have a new role - developing design requirements. However, because of this dispersion of technology it is possible that the role of the professional in the design process could be diminished significantly.

Will Bruder showed a lot of interesting architectural designs, but a lot of what he said was common sense. Budget is the driver of creativity; a designer should work because of, not in spite of, his clients; design is about changing lives and improving their quality. I really don't have a whole lot to say on him, but his presentation is worth checking out from an architectural standpoint - the way that architecture mirrors nature in his sketches is phenomenal.

Margaret Stewart had a great talk about how open source design is becoming. It is becoming more important for 'proprietarianism' (my word) to fade into the background and for design to become an open system, which fuels further design based on an initial concept. Our use of Arduino is a perfect example of this. Designers are there to write the book, but in theory leave the final chapter blank for the usage of the idea to write. She had an interesting factoid that I didn't know - Twitter was originally for bike messengers, but has evolved into an internet phenomenon. Great example of the final chapter being left blank. The scarcity of access to information is leading to an abundance of access to information, as society will take off in a design aspect. There is still need for professional designers, but they are becoming more of role models for amateur designers.

Stewart was followed by a few men who didn't really catch my interest at all. Marc Tsurumaki (which sounds strangely Finnish) had one quote, a question: can we embrace paradox as a catalyst for production? The idea that we are getting ahead of ourselves, and we know where we are going to be, and it will catalyze us to get there faster... interesting, but the rest of his talk was not. Nicola Delon didn't really interest me at all, though he had some brilliant designs that his firm did that he showed off. Gary Smith is an MSU alum, which... I listened to his entire speech, and feel like I learned nothing at all. Typical. Also, if you put his powerpoint in a lineup with all the other powerpoints, you could easily pick out which one was made by the MSU alum... he used the 6x6 rule like its a law not a guideline, his diagrams made no sense whatsoever... sloppy, sloppy, sloppy.

Sarah Whiting was another extremely interesting speaker. She spoke of science fiction and its counterpart reality - the need to distinguish between 'past future' and 'present future' is huge, because some of the science fiction of the past is the reality of today, and our expectations of the future are constantly changing as technology evolves. One of the major problems with design today is that there is a proliferation of examples, which is stagnating the field. There needs to be more interdisciplinary design, and more thought from all points, as proliferation has replaced directive in design. I will likely have more to say on her when I re-watch her piece as well.

Michael Speaks ended the day with a talk on design as an engine of innovation, not just a product. He also spoke of design as a key to education, and something that needs to be incorporated further, so that design disperses to everyone on the planet. By this point, he was really re-iterating points that others had made earlier in the day. He did point out a book by Peter Rice called 'An Engineer Imagines', which looks like it would be an interesting read.

I will be putting together a post specifically about what Ila Berman had to say, as well as my own thoughts on her topic, at a later date. The design conference was definitely worth the time and effort to go to.

Thursday, October 8, 2009

Concrete Theory Discusses the Art of Blogging

I spend a lot of my time reading blogs, and feel like mine just isn't up to snuff for how I would like a blog to look. Neither of mine - this one, or my semi-defunct football recruiting history blog which I never have time to work on... It's safe to say that writing a real blog about a real subject can be a full-time job. Brian at MGoBlog is my blogging hero - he writes the best blog I have ever read, period, about a topic that is extremely important to me.

A good blog has many key elements; here are a few of the top ones:
  • Purpose - First, a blog has to have a purpose. A clearly defined aim. Deviations can be made, but they should not be substantial. Know your audience, and try to tailor content to them in some way.
  • Substance - Probably the biggest point. Blogging isn't Twitter, a good blog post is several thousand words, and it's not just fluff. I don't follow this rule all the time, but I really should, and am going to try to from now on. More on that later.
  • Information - A good blogger does his homework. Knows what he's talking about before he writes a post. Research, with references, is key. Not like a works cited or anything, but if information is pulled from somewhere, link to it. Example: Nebraska won tonight. Easy, right? One more thing, any multi-point Information really should be put in...
  • Charts - Charts? Charts. Data should be displayed in an orderly fashion. I could tell you that Tate Forcier is sweet and made our offense click pretty well against MSU, even though we lost, or I could tell you to go look at this. What is it? A really, really big chart. Followed by less monstrous charts with summary information. THAT is a blog post.
  • Formatting - I keep using MGoBlog because Brian is so good at this - everything is crisp, everything is universal. Posts are named in a useful manner, so you know what you are getting into before you get into it. Blog tags are built to be useful. If someone is a part of a blog post, their name is a tag. I'll be doing this from now on, as well.
  • Editing - It's the internet, there's spellcheck... try really hard to not make mistakes.
  • Shameless Plugs - Well, these aren't necessary, but sometimes you just need to shout out to people or organizations that are important to your topic. OK, the second one wasn't relevant at all, I'll admit.
So, considering what I just talked about, from this point forward I will be reorganizing the structure of my blog. I intend to divide it into a few key post types. These will be followed absolutely. I will try to make most of these once per week. I will be using oxymorons for a couple of the titles, because Unverified Voracity at MGoBlog is about my favorite blog post title there is, and it is a general title.
  • The Final Product: ___ - Posts that purely show the end result of a team project.
  • Methodical Madness ____ - Posts that discuss teamwork, development, etc. "Methodical Madness has a Prototype" is an example. Team work is always madness, but there has to be a method.
  • Concrete Theory ____ - Conceptual posts. This is one of those. These are broad, broad topics, core to the class, or something like that. Theory can't really be concrete, since concrete implies permanence, and theory isn't permanent.
  • Inarticulate Eloquence ____ - Code posts. Eloquent to someone who can read code, inarticulate to everyone else. "Inarticulate Eloquence Follows the Sun" would be a code post with sun tracking code, for example.
  • Calculated Spontaneity ____ - Miscellaneous things, unrelated but cool. "Calculated Spontaneity Shows You Some Beaches". I contrived them, but they are out of the blue for the reader.

My tags will also become a little more universal. I will include people's names, Arduino, Processing, and various other things. Some will be creative, some will just be descriptive and to the point.

Version 2.0 of my blog begins now.

SmartSurfaces, Day Four, 10/2/09

Day four saw us present our extremely awesome solar tracker, which was, as I said, extremely awesome. I unfortunately do not have any video or images of it (I haven't succeeded in remembering my camera for class yet), but there are a variety of images throughout blogs of my teammates. From this point forward, I am going to build an overarching blog post for each out-of-class project, which will hopefully be all-encompassing (and not give me carpal tunnel). As such, the in-class pieces will become shorter and shorter as the important parts of class become more fluid in time.

The project assigned on day four was extremely open-ended - design a heliotropic surface. Make it do something. That's it. Simple, yet extremely complex. As I said, project will be covered in another post.

I'd like to try to make a minimum of 3-4 posts a week from this point forward - one each of Project, Conceptual, Coding, and Miscellaneous. No guarantees that the Miscellaneous post will have anything to do with the class in more than an abstract sense, in fact it may just be something sweet that I saw online that I just had to share. Prepare for an onslaught of posts starting next week... let's see how well I can keep to my minimums.

Wednesday, October 7, 2009

Side-Note: Beaches

Just as a side-note, everyone who is checking out my blog, my cousin is doing a tour of what are some of the most gorgeous beaches in the U.S. - the Lake Superior beaches in the Upper Peninsula. http://www.someyooperbeach.com/ is his blog. Check it out!

Monday, October 5, 2009

Digital Project, Schmigital Schmroject

So, John told me on Friday that I've been calling Digital Project 'Design Studio'... To me, it doesn't matter. It is a program that I will never use again - it is poorly designed, counter-intuitive, and about the least user-friendly design program I have seen. The entire program is extremely slow, and I am not sure if it is because of the computers it is installed on or not, but I won't try it on a faster machine of my own to find out. To Digital Project, I say Schmigital Schmroject. In fact, I'm going to edit all of my previous posts to reflect the change in nomenclature.

Here Comes The Sun: Processing Code

As promised, though a little late, here is the Processing code.

// The Import Libraries
import netscape.javascript.*;
import java.util.Calendar.*;
import java.lang.Math.*;
import processing.serial.*;

// Variables Galore
int Hour = hour();
int Min = minute();
int Sec = second();
int doy = 0;
float latitude = (float)Math.toRadians(42.220); // Ann Arbor
float longitude = 83.75; // Ann Arbor
float YrFract = 0;
float eqtime = 0;
float decl = 0;
float time_offset = 0;
float tst = 0;
float ha = 0;
float za = 0;
float azim = 0;
float alt = 0;
int azimswitch=0;

int spos=0;
int wpos=0;

Serial port; // The serial port

void setup()
{
port = new Serial(this, Serial.list()[0], 9600); // Open the serial port.
azimswitch=0; // Make sure the switch is zeroed.
}

void draw()
{
Calendar cal = Calendar.getInstance();
doy = cal.get(Calendar.DAY_OF_YEAR);
Hour = hour();
Min = minute();
Sec = second();
YrFract = 2*PI/365*(doy-1+(Hour-12)/24); // Fractional Year, Radians
eqtime = 229.18*(0.000075+0.001868*cos(YrFract)-0.032077*sin(YrFract)-0.014615*cos(2*YrFract)-0.040849*sin(2*YrFract)); // Equation of Time, Minutes
decl = 0.006918-0.399912*cos(YrFract)+0.070257*sin(YrFract)-0.006758*cos(2*YrFract)+0.000907*sin(2*YrFract)-0.002697*cos(3*YrFract)+0.00148*sin(3*YrFract); // Declination, Radians
time_offset = eqtime-4*longitude+60*5; // Solar Time Offset, Minutes
tst = Hour*60+Min+Sec/60+time_offset; // True Solar Time, Minutes
ha = (float)Math.toRadians((tst/4)-180); // Solar Hour Angle, Radians
za = acos(sin(latitude)*sin(decl)+cos(latitude)*cos(decl)*cos(ha)); // Zenith Angle, Radians
azim = acos(-(sin(latitude)*cos(za)-sin(decl))/(cos(latitude)*sin(za))); // Azimuth, Radians, Clockwise from North
azim = (int)(float)Math.toDegrees(azim);

// Utilize a switching process to determine if it is before or after zenith.
if (azimswitch==0){
azim = azim - 90;
}
else if (azimswitch==1){
azim = 270 - azim;
}

// Change switch when necessary.
if ((int)azim==90){
azimswitch = 1;
}
else if ((int)azim==180){
azimswitch = 0;
}

alt = (float)(Math.toDegrees(za)); // Calculate altitude from Zenith Angle

// Print out to check whether or not calculations are correct.
println(alt);
println(azim);
println(azimswitch);

// Stop the machine from turning too far.
if((int)azim < azim =" 0;"> 180){
azim = 180;
}

alt = alt/2; // Mirror-aiming correction

update((int)alt,180-(int)azim); // Run the update to write to the servo.

delay(1000); // Only read once a second.
}

void update(int spos, int wpos)
{
//Output the servo position ( from 0 to 180)
port.write(spos+"s");
port.write(wpos+"w");
}
Took awhile to write, but it works well. I also had a gimmicky little touchpad controller code:

/**
* Servocontrol (derived from processing Mouse 1D example.)
*
* Updated 24 November 2007
*/


// Use the included processing code serial library
import processing.serial.*;


int gx = 15;
int gy = 35;
int spos=90;
int wpos=90;

float leftColor = 0.0;
float rightColor = 0.0;
Serial port; // The serial port



void setup()
{
size(720, 720);
colorMode(RGB, 1.0);
noStroke();
rectMode(CENTER);
frameRate(100);

println(Serial.list()); // List COM-ports

//select second com-port from the list
port = new Serial(this, Serial.list()[0], 9600);
}

void draw()
{
background(0.0);
update(mouseX,mouseY);
fill(mouseX/4);
rect(150, 320, gx*2, gx*2);
fill(180 - (mouseX/4));
rect(450, 320, gy*2, gy*2);
}

void update(int x, int y)
{
//Calculate servo postion from mouseX
spos= x/4;
wpos= y/4;

//Output the servo position ( from 0 to 180)
port.write(spos+"s");
port.write(wpos+"w");
// Just some graphics
leftColor = -0.002 * x/2 + 0.06;
rightColor = 0.002 * x/2 + 0.06;

gx = x/2;
gy = 100-x/2;

}
I'll post information on the two-week project soon.

Thursday, October 1, 2009

Here Comes The Sun

Our team project for the week was to design and implement a modular, scalable solar tracker.

The project started out the same way that last week's project did - I stepped into coding like it is my true calling or something. The sun follows a path defined by two variables - azimuth and altitude. Therefore, we developed a design very similar to the design that Eric's group and my group both utilized last week, with two axes - rotation and tilt. We chose to utilize the base scheme that his group developed, as it was much more stable and easier to work with for this implementation.

The Arduino code for our project is as follows:

#include
#include

Servo servo1; Servo servo2;
Potentiometer potentiometer1 = Potentiometer(3);
Potentiometer potentiometer2 = Potentiometer(4);

void setup() {
servo1.attach(9);
servo2.attach(10);
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Ready");
potentiometer1.setSectors(180);
potentiometer2.setSectors(180);
}

void loop() {

static int v = 0;
if (Serial.available()) {
char ch = Serial.read();

switch(ch) {
case '0'...'9':
v = v * 10 + ch - '0';
digitalWrite(13,LOW);
break;
case 's':
servo1.write(v);
v = 0;
break;
case 'w':
servo2.write(v);
v = 0;
break;
case 'p':
do{
servo1.write(potentiometer1.getSector());
servo2.write(potentiometer2.getSector());
digitalWrite(13,HIGH);
}
while(Serial.read()!='i');
break;
}
}
}

It allows for both serial input and potentiometer utilization to control the servos. Really quite simple, but it does so much. I prefer to have the Arduino as simple as possible whenever possible, and to utilize the computer to do any real processing and calculations. Therefore, the remainder of the code was written in Processing. Here is a snippet from the Processing code.

YrFract = 2*PI/365*(doy-1+(Hour-12)/24); // Fractional Year, Radians
eqtime = 229.18*(0.000075+0.001868*cos(YrFract)-0.032077*sin(YrFract)-0.014615*cos(2*YrFract)-0.040849*sin(2*YrFract)); // Equation of Time, Minutes
decl = 0.006918-0.399912*cos(YrFract)+0.070257*sin(YrFract)-0.006758*cos(2*YrFract)+0.000907*sin(2*YrFract)-0.002697*cos(3*YrFract)+0.00148*sin(3*YrFract); // Declination, Radians
time_offset = eqtime-4*longitude+60*5; // Solar Time Offset, Minutes
tst = Hour*60+Min+Sec/60+time_offset; // True Solar Time, Minutes
ha = (float)Math.toRadians((tst/4)-180); // Solar Hour Angle, Radians
za = acos(sin(latitude)*sin(decl)+cos(latitude)*cos(decl)*cos(ha)); // Zenith Angle, Radians
azim = acos(-(sin(latitude)*cos(za)-sin(decl))/(cos(latitude)*sin(za))); // Azimuth, Radians, Clockwise from North

This code is the calculation for solar position, given inputs (doy is day of year, the rest is fairly self-explanatory). The azimuth is always positive, so a switch in the code must be utilized to switch between rising and setting. I'll post the full code on Friday morning at the start of class, it's not 100% yet.

I feel like this team has meshed the best out of all the teams that I have worked with so far. Neil and I worked on the electronics portion, and we work very well together. The design process was universal, with everyone inputting, but the implementation process essentially was niche, with engineers doing circuitry and coding, architects doing Schmigital Schmroject and some construction, and artists doing construction. Overall, the project has worked really well, and I look forward to the final result.

Wednesday, September 30, 2009

SmartSurfaces, Day Three, 9/25

Day Three wasn't really anything substantial in-class. We did more work with Schmigital Schmroject, showed off our (extremely neat) light tracker, and that's about it. However, we were assigned an out-of-class project to create a solar tracker. I will not be discussing this project in detail until Thursday or Friday. I will say that we are not using light sensitivity, but instead are using a predetermined equation.

I will say that I still think that Schmigital Schmroject is extremely clumsy, unintuitive, poorly designed, and overall not a quality program for use in the student environment.

Friday, September 25, 2009

Arduino Solar Detector

So, now that the project is over, I have decided to post the code that directed our Arduino units, in the interest of keeping this class as open source as possible. Our code was mostly derived from the Arduino meets Processing project.

/*
* ap_LDRAiming
*
* Reads an analog input from the input pin and sends the value
* followed by a line break over the serial port.
*
* This file is part of the Arduino meets Processing Project:
* For more information visit http://www.arduino.cc.
*
* copyleft 2005 by Melvin Ochsmann for Malm� University
*
*/
#include
Servo myServo;

// variables for input pin and control LED
int PhotoA = 3;
int PhotoB = 4;
int PhotoC = 5;
int LEDpin = 13;
int pos = 0;

// variable to store the value
int valueA = 0;
int valueB = 0;
int valueC = 0;
// a threshold to decide when the LED turns on
int threshold = 750;
void setup(){

// declaration of pin modes
pinMode(PhotoA, INPUT);
pinMode(PhotoB, INPUT);
pinMode(PhotoC, INPUT);
pinMode(LEDpin, OUTPUT);
myServo.attach(9);
// begin sending over serial port
Serial.begin(9600);
}

void loop(){
// read the value on analog input
valueA = analogRead(PhotoA);
valueB = analogRead(PhotoB);
valueC = analogRead(PhotoC);

// if value greater than threshold turn on LED
if (valueA <>

// print out value over the serial port
Serial.print(valueA);
Serial.print(",");
Serial.print(valueB);
Serial.print(",");
Serial.print(valueC);
// and a signal that serves as seperator between two values
Serial.print(";");
// Checks if right is greater than left, if so move to right.

if (valueB > (valueC +20))
// +20 is the deadzone, so it wont jiggle back and forth.
{
if (179 > pos)
pos++;
myServo.write(pos);
}

// Checks if left is greater than right, if so move to left.
if (valueC > (valueB +20))
// +20 is the deadzone, so it wont jiggle back and forth.
{
if (pos > 1)
pos -= 1;
myServo.write(pos);
}

// wait for a bit to not overload the port
delay(10);
}

The code includes a serial input that we used to judge whether or not our solar detection was working properly in a numerical sense. By slowing the program down to a delay of 250, we were able to tweak the code in order to ensure that the readings were proper, and that we could utilize the changes in direction properly.

The biggest issue was ambient lighting, which we were able to counteract with a shade of sorts while in design, but in final display we could not, because of the amount of ambient light in the center room. We set our thresholds slightly too high for the situation that we were in.

Thursday, September 24, 2009

Conceptual Ideas: Physical Computing

In a nutshell, physical computing is the interface between digital and analog. An action is performed, a stimulation is presented, electrons are transmitted, algorithms are run, a result is computed, a response is triggered - either digital or in turn analog as well. It's very basic in concept and yet very advanced, because the possibilities are almost endless.

Interaction with a keyboard or mouse - that's physical computing. It's a very basic input scheme, but it is the most advanced input that many people come across, or at least think they come across. Unfortunate for them, as there is so much more to the idea, if only you understand it. Everyday interactions that nobody thinks about are handled with physical computing all the time. Thinking about it is somewhat scary, because there is margin for error, albeit low.

Take traffic control. Traffic lights are all on timers calculated by an extremely complex algorithm to optimize traffic flow (or by a monkey who really has no idea what it is doing, depending on what city you are in.) However, during periods of low flow, and in less urban areas, traffic lights are controlled by physical sensors - either a camera that recognizes the presence of an automobile, or a coil underground that detects the presence of a rather large body of metal by how conductive it is. It's an analog input - the image being taken by the camera - feeding a digital output - the changing lights - after itself being run through an algorithm that says 'okay, you can change the lights if you really have to'. Imagine if the traffic system had a glitch, or if something broke down. It'd be chaos. Unless you're in Chicago, because they have traffic cops at every stoplight reminding people what each light means by yelling at them to go or stop or walk or don't walk, when the light says exactly what you need to know. Taxpayer dollars at work.

An iPhone is a brilliant piece of technical work, and a good example of physical computing, because it represents direct control through touch. Conceptually simple, beautifully executed. I love my phone. Apple knows what they are doing - they have mastered the art of the technological consumer good. Now if only they could lower their prices a bit more - paying for quality has its merits, though... for one, you get quality.

Tinkering with an Arduino is a perfect introduction to physical computing. It is open source, it can be adjusted to interact with any input (someone set one up to be controlled by a Wii remote), and it can be coded to operate just about any output device. You could run traffic control for a stoplight, and likely a small grid of stoplights, off of the computing power that an Arduino has available to it - it is quite robust.

As time passes, everyday devices will become less analog and more digital. We are careening towards a future of digital displays and voice commands that do everything for us, where we will no longer drive in anything not considered a relic of a bygone age. The world is changing, and the best way to not get behind later is to get ahead now.