Dream Come True: I built a camera

I'm still incredibly excited and feeling very fulfilled, now that my camera is finally complete. I have a lot to look forward to in developing this camera even further and turning it to even more of what I want it to be. Thank you, Jeff, for such a great semester and all of your help! As well as all of those that answered my many emails on how to work the Raspberry Pi.

Thank you thank you. You can see all the photos the camera has taken on it's twitter, here.

Here are photos from the show:

Research @ BRIC

I attended a super 8 and 16mm film screening and was able to observe the aesthetics of film when processed and produced. I was also able to speak with the filmmakers and understand why they chose to use film as opposed to digital cameras. I left with a few insights and ways I can further develop my camera in pursuing the film camera-like experience.

Switching to a Raspberry Pi

Switching to the Raspberry Pi went much more smoothly than expected.  I did, unfortunately, struggle to get the camera just to work, for hours. It is very important to paste each individual file, and not just the folder, to the SD card when downloading the Raspbian software onto it.

Once I got the software to work, taking photos and videos with the camera was incredibly easy. There is a software built into the Raspberry Pi to manipulate the photos with basic settings. There are also a lot of instruction and example projects online.


Here are a few of the pictures I've taken with the Pi Camera Module:

(I have loved the quality of the photos, thus far, and am incredibly excited. Please excuse the massive amount of self portraits)

I was later able to add a button that would control when the camera would begin recording.

I have a lot more buttons and sensors to add, but this felt like great progress.

Programming the camera

Because of my previous difficult experience with raspberry pi's and their camera module, I chose to go with the arduino. I had already spent a semester learning how to program with the Arduino Uno, and felt like building a camera with the knowledge that I had gained on it, would make this project a lot easier. It turned out the project didn't start off nearly as seamlessly as I expected it to. After hours of struggling, asking for help from classmates and professors, I was finally able to get the arduino camera working.

I purchased the data logging shield as directed to by an online source on building the camera, because they also suggested purchasing a WifiSD card so that the photos could be transferred online. I accidentally got the wifiSD shipped to my home in Maryland, so I wasn't able to use that part of the camera.

Below is a video of me putting the camera together, followed by photos I took with the camera:

assembling the camera via photos:

photos taken by the arduino:

The quality wasn't great and it took a really long time to save the photos onto the memory card. But, I figured the photo manipulations I'd do would cover up the poor quality. And, with me trying to make this camera closer to the film camera experience than to the digital camera experience (without being a film camera), the wait could be made into an illusion of photo processing.

A few people questioned why I was using an Arduino to build a camera, as opposed to a raspberry pi (which apparently would've been much easier). At the time, I wasn't fully aware of the difference in operation between the Arduino and Raspberry Pi, and had thought that I could only program a Raspberry Pi on a Windows or Linux system (which I found discouraging because it would be an extra hurdle since I only had a Mac - but, I later found that I just needed an external monitor and not one of those systems).

After the half week with the Arduino, and having invested money into the pieces, I very hesitantly decided to take the common advice and pursue the project with a Raspberry Pi.

Paper prototyping

While figuring out how I want the camera to fit in the user's hand, I built life-size prototypes. The first one was out of cardboard and tape. The second prototype was built out of cardboard and decorative paper/foil.

Above: cardboard

Below: cardboard & decorative paper

Final Project Concept

I am currently in the middle of deciding between several different Pcomp final projects. As for now, here's a list of topics i'd like to pursue:


Creative Retro Camera (using arduino)

A sound machine (a bunch of buttons that all create their own unique sounds)

Interactive exercise (projecting a scenery and making it interactive with the user's movements to encourage physical activity)


Motion sensor ["failed" attempt]

I excitedly purchased a motion sensor from Tinkersphere. But, unfortunately, it did not seem to work. Fortunately, I was able to learn a bit more about physical computing, in general, and about different parts of sensors, while working with this sensor. Which makes this less of a "failure" and much more of a small learning lesson.


Jacquelyn and I went through a few possible midterm projects before deciding to pursue the one shown above. We decided to keep it relatively "simple" by creating a pumpkin and sound generator with basic sensors, an arduino and p5. The coding that went into creating this proved to be more complicated then expected. I really appreciate how much I was able to learn while creating this project and the higher level of understanding that I know have for physical computing.

First time using my neopixel LED ring

I used the arduino neopixels example library to light this LED ring. Again, super thankful of Aaron for helping me with soldering as the ring needed to be soldered in order to be used. As with the other LED testings I did, I would love to make this one sound interactive as well.

Trying out my RGB LED with a Ribbon Sensor

I wanted to learn how to control my RGB LED with a soft-ribbon sensor. After following a few schematics on Google, getting help from a fellow student and finding a good code online, I was able to produce my first ribbon-sensor controlled RGB LED. I look forward to experimenting with the code more and understanding it better, so that I can get more creative with my LED. I would like to be able to control the LED with my piezo's and make it sound interactive, next.

I then tried again with two LED's.


The code was found here, on the arduino forum:

int potpin = 2;              // Switch connected to digital pin 2

int rpin = 9;
int gpin = 10;
int bpin = 11;
float h;
int h_int;
int r=0, g=0, b=0;

int val=0;

void h2rgb(float h, int &R, int &G, int &B);

void setup()                    // run once, when the sketch starts
 Serial.begin(9600);           // set up Serial library at 9600 bps

void loop()                     // run over and over again
 val=analogRead(potpin);    // Read the pin and display the value
 h = ((float)val)/1024;
 h_int = (int) 360*h;
 Serial.print("Potentiometer value: ");
 Serial.print(" = Hue of ");
 Serial.print("degrees. In RGB this is: ");
 Serial.print(" ");
 Serial.print(" ");

 analogWrite(rpin, r);
 analogWrite(gpin, g);
 analogWrite(bpin, b);

void h2rgb(float H, int& R, int& G, int& B) {

 int var_i;
 float S=1, V=1, var_1, var_2, var_3, var_h, var_r, var_g, var_b;

 if ( S == 0 )                       //HSV values = 0 ÷ 1
   R = V * 255;
   G = V * 255;
   B = V * 255;
   var_h = H * 6;
   if ( var_h == 6 ) var_h = 0;      //H must be < 1
   var_i = int( var_h ) ;            //Or ... var_i = floor( var_h )
   var_1 = V * ( 1 - S );
   var_2 = V * ( 1 - S * ( var_h - var_i ) );
   var_3 = V * ( 1 - S * ( 1 - ( var_h - var_i ) ) );

   if      ( var_i == 0 ) { 
     var_r = V     ; 
     var_g = var_3 ; 
     var_b = var_1 ;
   else if ( var_i == 1 ) { 
     var_r = var_2 ; 
     var_g = V     ; 
     var_b = var_1 ;
   else if ( var_i == 2 ) { 
     var_r = var_1 ; 
     var_g = V     ; 
     var_b = var_3 ;
   else if ( var_i == 3 ) { 
     var_r = var_1 ; 
     var_g = var_2 ; 
     var_b = V     ;
   else if ( var_i == 4 ) { 
     var_r = var_3 ; 
     var_g = var_1 ; 
     var_b = V     ;
   else                   { 
     var_r = V     ; 
     var_g = var_1 ; 
     var_b = var_2 ;

   R = (1-var_r) * 255;                  //RGB results = 0 ÷ 255
   G = (1-var_g) * 255;
   B = (1-var_b) * 255;

Going back to the basics

After going through a couple weeks of struggling with the p-comp curriculum, I thought it would be motivating for myself if I bought some fun accessories for the arduino, to create some cooler projects with. With these cool accessories, I wasn't sure how to use them and was scouring the internet for tutorials. With hours of trying to paste in guided codes and continuously getting errors and having no clue how to fix them, I realized that what is much more important is moving at my own speed - much slower - and truly trying to understand the basics. As opposed to spending more time trying the labs and tutorials i'd find online and in my Arduino Projects book, I opened the "CODE" book and tried to get a very basic and fundamental understanding of computers.

The Happy Feedback Machine reading was incredibly inspiring to me, as that's one project i've been hoping to embark on. I love the idea of creating experiences and using sounds and interactivity within machines - via buttons, to do so. I'm very excited to master p-comp well enough to create my own version of the Happy Feedback Machine.

Catching up on Labs

This week, I was able to finally go through all the labs that we have done - on my own, and test my own understanding.  I started from the beginning and went from lighting one LED to lighting multiple LED's to lighting them in series and in parallel to creating a light interactive potentiometer to adding my servo to my board, to currently creating a keyboard instrument. The keyboard instrument doesn't seem to be working because of my code, but it has definitely been fun moving through the different labs - regardless of the complications.


Following the instructions were easy. But, I definitely want to take more time to understand the code and physical pieces i'm using because I'm still not sure why they all work the way that they do.

Public Interactive Technology Usage Observation

Prompt: Pick a piece of interactive technology in public, used by multiple people. Write down your assumptions as to how it's used, and describe the context in which it's being used. Watch people use it, preferably, without them knowing they're being observed. Take notes on how they use it, what they do differently, what appear to be the difficulties, what appear to be the easiest parts. Record what takes the longest, what takes the least amount of time, and how long the whole transaction takes. Consider how the readings from Norman and Crawford reflect on what you see.


According the Chris Crawford's definition on interactivity - the traffic light button may barely fly. But it is commonly used by the public to alter their situation, and I'd consider that completely interactive. The traffic light button allows pedestrians to let the traffic light operation know that they would like to cross. This then, in a varying amount of time, makes the car traffic cease to allow pedestrians to cross.

It's interesting to watch the way in which people use the traffic light. Some are patient, press it once, and wait for the light to change while remaining unbothered by the amount of time it may take. Other's are much less patient, and will press the button multiple times as if each time will emphasize their urgency to cross and make the light change faster.

The easiest part, for the user, is simply the operation method. All it is, is a push of a button. The difficult part is probably just waiting, and not knowing when the light will begin to change - not knowing if your pressing of the button has actually worked.

The whole transaction can vary in time as traffic light buttons control a varying range of traffic levels. In low traffic areas, the button can work almost immediately. In high traffic areas, the button can take up to a couple minutes.

In the words of Norman, "attractive things work better." The traffic button has a very simple design - with nothing exceptionally beautiful or ugly about it. But, Sandro Engel and Holger Michel developed a system that takes aesthetics with user experience and functionality, to a whole new level. In Germany, there is a traffic light that allows you to play ping pong with the person that is across the street from you. I've attached the video below. I found this to be an incredible use of public interaction and attractiveness.

Lighting the board with one LED and a switch

Learning how to light the switch, initially, felt very intimidating. I kept putting it off because I was scared of how challenging it might be to try to figure it out on my own. But, it became incredibly less intimidating as I followed the videos made by Jeff Feddersen and Tom Igoe, the website resources listed on our syllabus, and using the arduino guide book that came in my starter kit.

I started off trying to power the board with a 9V and a regulator. But, the regulator that came in my kit wasn't labeled "7805" as we were instructed to use, and the light wouldn't turn on. When I removed the battery and used the arduino, usb, and my computer, the light then started to begin to work.

I then downloaded the arduino program and was able to make the light blink at my programmed pace, which was exciting.

The Art of Interactive Design - Chapter 1 & 2

Notes on reading:

Chapter 1

Overview - What is interactivity?

" Cyclic process in which two actors alternately listen, think, and speak. The quality of the interaction depends on the quality of each of the subtasks (listening, thinking, and speaking). And many things commonly held to be interactive are not."


Chris holds a lot of apprehension in the use of the word "interactive" and observes it being used much more as a buzzword in marketing and not usually used properly.

He highlights how interactivity requires two participants, not just one, and that it is not the same as reacting.

We categorize interactivity by high and low level in relation to its complexity. A refrigerator would be of low level.

The keys to interactivity include all 3: listening, thinking, and speaking.

Dancing is in interaction between two dancers, not between the dancers and the music.

"The user interface designer considers form only and does not intrude into function, but the interactivity designer considers both form and function in creating a unified design."


Chapter 2

Why bother with interactivity?

Interactivity is not new. Automated interactivity is what's new - interactivity effected by means of computing machinery. 

 “I hear and I forget; I see and I remember; I do and I understand.” -Chinese Proverb

Interactivity truly engages the mind.






Intro Project

Directions: Invent something that would solve a world problem, without limiting yourself to only creating what you believe you're currently capable of creating.


My team and I decided to create a shoe that would store the kinetic energy one would create when walking or running into a battery within the sole of the shoe, to then be used whenever the wearer wanted to. The shoe-laces would be used as wires with different adapters so that the stored energy could then be used to charge phones, laptops, power a flashlight within the shoe, etc. 

I enjoyed working with my teammates as all of us had unique ideas to offer and skills to share. One of my teammates professionally practiced industrial design, so we were able to quickly the rules and possibilities of design as it related to our project - which was exciting. If I were able to do this project over again, I would have enjoyed spending more time prototyping as opposed to planning. We were thorough in our sketches, but it would've been interesting to see how much further we could go with the actual creation of our prototype.

You can find photos of our work, below: