Author: Allison Walker
Film Project for Comm Lab 2009
On a really nice day this fall, my Comm Lab team and I made a video.
Liveable Interactive Music Player
Introduction
My final project for Physical Computing eventually ended up to be an MP3 player that encourages you to take care of your houseplant. This evolved from a previous idea of making a plant that is more like a pet than a plant. I changed my mind after getting some good feedback from my class when I presented my idea. One of their suggestions was to focus on the emotional aspect of how the plant makes you feel. They also advised that care of the plant needs to be an important aspect of the project.
This is how it works: Press the moisture test button. If the soil is dry, the plant will cry; otherwise, it will laugh. If the soil isn’t dry, you can use the MP3 player. You can advance forward and back through an array of music files. You can also pause the music.
Not only do you care for your plant, it seems like your plant cares for you, too. Although the interface for this project ended up being dainty and pretty, I do admit that 90% of my time on this project seemed to really be spent on code and trying to get things to work. I’ve written about this project in previous posts, so I won’t recap what I’ve discussed in those. But, they’re here if you are interested in reading through them and understanding more about how the project was generated.
- Project Proposal
- Rejected Ideas
- Testing Vibration motors
- Using a wave shield
- Still considering other project options
- Finally combining Arduino and Minim Library (in Processing)
Process Description
Because I wanted to embed the interactive mechanics inside the plant, I spent about 1 week on the wave shield and, while I did get it to work, in the end still couldn’t get it to work so well. Some of the issues I had with it were that I didn’t understand the documentation clearly, the code is in some C-language, and my SD card wasn’t formatted correctly. Eventually, I did get it to work, but by that time Minim was looking pretty good. So, sound was now going to be handled by Processing. I also tested out different motion detection sensors to see what types of results I could get that would fit my needs best. Some of the issues I had were that the sensors were too bulky to elegantly embed inside the plant or the serial data I got from the Arduino was too sensitive.
Meanwhile, I was also thinking about my ICM final and how I wanted to create something separate from my Phys Comp final. Originally, I wanted to make a radio that streamed internet radio stations. However, when I discussed this idea with more knowledgeable people and looked it up online, I got the impression that it would be very difficult to implement. So, I left that idea behind and went to my next idea, which was simply an MP3 player. Wanting to make something more interactive and pretty, I started looking up options for Processing and Minim, and what type of visual display I could make. I looked around for an “audio visualizer” on OpenProcessing.org and found this sketch to work with. After that, I spent a little bit of time everyday trying to figure out how the code worked and augmenting it bit by bit to create something new.
By now, it became obvious that I should just put the two projects together. Deciding to use Minim for my Physical Computing project was a huge relief. Not only was it easier to use and had documentation I could understand, it was also easier to get help since Minim is something that other people at ITP have actually worked with on a somewhat frequent basis. (It’s also in the book).
Plus, I could research more about Minim while I was away at a conference in London for a few days. When I got back the States, I went back to the prototype I’d set up before I left using FSRs as triggers for the playback buttons. The FSRs I switched out for exposed wires, because I really didn’t need the analog input values the FSRs provided. (Plus, I seem to have a tendency to destroy my FSRs.) What I really needed were simple HIGH and LOW values from a digital switch which I made out of small sheets of copper.
To test the soil for its resistance to electrical current, I made what could easily be called the simplest switch ever. Add 2 nails + 5V + ground to wet soil. Test for current. Actually, I learned how to do this from reading the internet, the blog of another student,and talking to yet another knowledgeable person.
As I understand, this switch works when the resistance of the soil changes enough to allow a current to flow more freely. At first, I tried this out with just a bowl of water, but I think maybe it shorted out (?) – you really need a plant or at least the soil to get this to work properly. I also added an LED for my own visual feedback.
So, now I had the buttons and the plant. Eventually, I also had a pretty nifty audio visualizer (which at the time of this writing, I may still try to improve upon). So, finally, I just had to assemble the pieces.
Pretty much I just found whatever I had lying around. I found a picture frame in the junk shelf and used that for the frame. I also had some pieces of cork lying around for a bulletin board I never put on my wall, and I used that to cover the frame and to be a backing for the buttons. The whole construction phase literally took just 1 day. Most of my issues with this project were with the code. Luckily there are more knowledgeable people around who can offer help with the code. It also made it a lot easier to test the switches when the wires were not stuck in a plant.
Now that I’m done with the simplest of functionality, to improve it here are a few things I could do:
- Make a sturdier interface – use something other than cork
- Label the buttons
- Provide more feedback when a button is pressed, such as an LED
- Make the hardware smaller – so that it could fit into other plants or could be portable
- Make the hardware wireless – so it can work with your iTunes playlist or another array of music files; e.g., it would just give the go ahead that the plant is well watered and you can now play music
- Use a larger array of sound files, such as from your computer’s music library or a specific playlist you’ve selected. The issue with this improvement is that Minim doesn’t seem to like audio files that are not .wav or .mp3

MEX: Mobile User Experience Conference, 09
December 1-4, 2009, I attended the MEX 09 conference, held in London, UK. I attended the conference on a scholarship I received from the conference organizers. Flight and accommodation were not included, but thankfully a friend of the family allowed me to stay in her flat. There were presentations over 2 days, but I only have time to write about 2 now. I’ll update more from my notes at a later date.
Sofia Svanteson of Ocean Observations gave a talk on incorporating creativity into your design team. At one point, she asked: “What’s more important? A great idea or a great team?” Answer: “A great team. A mediocre team will kill a great idea, but a great team will save a mediocre idea.” Other points she brought up:
- Pixar’s operating principles:
- everyone has the freedom to communicate with everyone
- make it safe for all to offer ideas
- stay close to innovations in academia
- Design process need a mix of culture, people and ideas. If it were all about the process, we could all be Apple.
- Use the same vocabulary: for instance, go so far as to make a dictionary of terms. As an example, she discussed the ever contentious UX/IA/ID/UxD/IxD etc, terms used to describe pretty much the same job.
- Be candid but critique with empathy. Remember, ideas are fragile.
- Finally, she mentioned The Idea Book, by Fredrik Haren.
Sofia also got everyone bringing up the question: What would Jason (Bourne) do? Her reference is meant to link the skills that Jason Bourne has in noticing many details of his surroundings that would also be similar to designing for the mobile user experience.
Dr. Chris Roas of Sheffield Hallan University discussed user-testing in multiple platforms. Some of his pointers:
- Remember, you’ll never be able to test all possible platform combinations.
- This is about understanding users; it’s less traditional, in terms of user testing and usability
In experience design, it’s important to keep in mind if you’re designing for an experience or the experience. AN experience, is something that might change your world view, such as your first trip to Africa. THE experience is something with tacit awareness, like going to work.
He quoted this paper, presented at CHI 09: “User experience over time: an initial framework”, by Evangelos Karapanos, John Zimmerman, Jodi Forlizzi, Jean-Bernard Martens. Here’s a quote from the abstract: “This paper presents an in-depth, five-week ethnographic study that followed 6 individuals during an actual purchase of the Apple iPhone™.” Looks like a good read, actually.
Challenges: Use a provocative situation and embrace the challenges. Reduce any major experience effects, which will help provide a good basis for feedback. For your testing, put randomized tasks all around the building.
And seek stories – what would Jason do?
Michael V. Roeder of Iconmobile, discussed Cloud Computing
He gave a few example of such services: photoshop.com, dropbox.com, Vodaphone 360. He described Cloud computing as an integration of several services with users going to each one individually.
The Cloud User’s Hierarchy of Needs, include:
- Bandwidth
- Storage
- Acces
- Interface
- Context
- Omni Cloud
Final: Communications Lab, “A Self-Packing Suitcase”
Self-packing suitcase from Allison Walker on Vimeo.
Due to a time constraint, I chose stop-motion animation as my final project. With a day or so before a trip to London, I took out a camera and made this film. I really liked working with fabric for stop-motion. It’s a lot easier to move around, but it looks much more organic than moving paper or other objects that are inflexible. I hope you like it!
Using Arduino and Processing together
Today I got up early and fooled around in Processing…for hours. I was playing with the Minim sound library, which I’d planned to use for my Intro to Computing Media project, an mp3 player. After sitting around for so long, I could how I was getting both noticeably older in age, but also wiser about Minim. Why sit around and program something completely different when I could put the two together? Well, my fear with combing my two projects, ICM and PhysComp, was that I’d skimp out on one or the other and not fully challenge myself. However, due to the MEX conference – to be blogged about soon! – my schedule is shorter than I’d like. Something’s gotta give. Sadly, it’ll have to be a little bit here and there on my projects.
Anyway, today, I worked on combining my Arduino code and my Processing code using serial output to play a song. Before discussing this, a little recap:
Create the code to turn on/off LEDs set at a threshold. Using the map() function and an if/else statement, I can now reliably turn off and on an LED as though it were a switch.
Here’s the code for the mapping and if/else statement part:
phoVal1 = analogRead(phoPin1); //map the photocell values and turn on the light phoVal1 = map(phoVal1, 0, 255, 255, 0); if (phoVal1>=0) { digitalWrite(pholed1,HIGH); } else{ digitalWrite(pholed1,LOW); }
Here’s the code for the FSR:
FSRValue = analogRead(analogFSR); // read the left FSR value analogWrite(motorpin, FSRValue/4);
The next step was to combine this code with the Minim library in Processing. But first, write code in Processing! Here is where several hours with Minim came in handy. I was able to hobble together enough code to be able to play and pause a song. I haven’t yet created any arrays, for a media list, but that’s next, as well as the ability to move through the array. After that I sent the output in serial DEC to Processing. I just added this little bit of code:
if (xpos > 100){ song.play();
After that, I was able to use the serial output from the FSR and Photocell to trigger the song.play(); function. I suppose, I could find a audio visualization program to tweak, so that I can make a pretty picture show when a song plays, assuming I play a song.
Next I’ll need to refine all the code, and plan out more of how I want the sensors to interact with the plants. And, I need to get some plants.
UPDATE: Code is not working as expected. Processing is just playing a song when the sketch is run. I need to figure this out some more.