Monday, December 29, 2008

Dorkbot SoCal Jan. 10 - Aschheimm, Evans, Guttman

Saturday, January 10, 2009
Machine Project
1200 D North Alvarado Street
Los Angeles, CA 90026

Presenters will include:

Deborah Aschheim

Deborah Aschheim creates works that blur biology and technology, exploring concepts of memory, architecture, and neural networks through drawings, sculpture, writing, installation and sounds.

Brian Evans

Brian Evans explores the intersection between reductivist sculptural form and the aesthetics of behavior, where structure and thought are fused.  He creates simple moving objects with seemingly life-like qualities - electromechanical life forms with motivations only just beyon our understanding.

David Guttman

David Guttman creates interactive works that generate unique colors and shapes from sound and EEG.

Thursday, December 25, 2008

Stacking Arduino Shields

So what if you need two shields on your Arduino?  Try using wire wrap sockets.  The wire wrap bit will fit into the socket below (snugly), and the socket bit will serve as a socket for the next shield up.

From Digikey, I picked up two SAM1125-06-ND (CONN RCPT .100" 6POS TIN WW) and two SAM1125-08-ND (CONN RCPT .100" 8POS TIN WW) to replace the standard header pins in a SparkFun Protoshield.  That is where I will be placing the support circuitry for the "Breath" project.  On top I will have a LadyAda Ethernet Shield.

Here are the results:

Protoshield with wire wrap sockets

Protoshield with wire wrap sockets

Arduino, Protoshield, and Ethernet shield

Arduino, Protoshield, and Ethernet shield

Monday, December 15, 2008

Anemometer Impellers

I saw some Kestrel replacement anemometer impellers for a reasonable price, and thought they might be good for the "input" section of my breath-over-IP project.  PC case fans turn better when "gutted" of their coils, but you still have to blow pretty hard to make them move.  The replacement impellers brought the promise of spinning under exceedingly low air speeds because of their jeweled bearings.

So the good news:  The replacement impellers do spin very easily.  The lightest breeze your mouth can produce will spin them.  Perhaps they are even too sensitive, as just moving the impeller will make the blades move.

The surprise:  They are really small - from left to right is the case fan, the impeller, and a quarter:


My Radio Shack IR emitter/detector pair were going to be too big & bright for the job, so I went to Fry's and picked up an NTE3029B IR emitter and the matched NTE3034A phototransistor.  These devices are small, side-looking devices with integrated lenses and are much more appropriate for the job with the small impeller.


Here is the Kestrel impeller as a "breath input" using an Arduino and a case fan "breath output":

According to the Nielsen-Kellerman patent, there actually is a little magnet in the impeller somewhere which might be able to sensed with the proper sensor.  I am considering getting a Hall Effect sensor and trying it out, but at least I know the IR scheme works.

Wednesday, December 10, 2008

Opto-interrupters for Breath

Recap:  "Breath" is a breath-over-IP phy2phy system.  You blow on one fan (anemometer, whatever you want to call it), that data is sent over IP to the other side where a fan it turned on to match how strong you are blowing on it.  It was inspired to some extend by Scott Snibbe's "Blow Up".

At first I thought I'd do a "half-duplex" solution with a single fan being both the anemometer and the powered fan.  Unfortunately, it takes a lot of wind to blow a case fan around.  I discovered that if you take the coils out of a fan, it spins much easier!  Which lead me to a "full-duplex" solution of one gutted fan as an anemometer, and another as the actual fan.

To measure the anemometer, I started out with an NTE3100 slot-type opto-interruptor, using a piece of aluminum from a can to slide through the slot:

Using a slot-style opto-interrupter

This had the advantage that the NTE3100 available at Fry's.  The disadvantage was that the aluminum bit takes up excess space and could get bent.

We all know that Radio Shack isn't what it used to be, but guess what, they still carry 276-142 "Matched IR Emitter and Phototransistor".  So I mocked them up on a breadboard with the Arduino to ensure it was dependably reading over the distance required:

IR Emitter, Detector, and Arduino

IR Emitter (looks blue to camera)

IR Emitter detector pair and fan

Next step:  I need to get another NTE2987 (N-ch, logic level FET) from Fry's.  I also need wire wrap sockets from Fry's so that I can stick an Arduino ProtoShield in between the Arduino and the Ethernet Shield.  Then just solder it all together and do the software!

Also I may move up from a gutted fan to a real anemometer impeller (with jewel bearings, etc.)

Sunday, November 23, 2008

"Observe" at Art Center College of Design, Pasadena, CA


October 11, 2008 — January 9, 2009

Alyce de Roulet Williamson Gallery
Art Center College of Design
1700 Lida Street
Pasadena, CA 91103

Gallery hours:
Tuesday through Sunday:
12 noon to 5 pm
12 noon to 9 pm

A collaboration between Spitzer Science Center, California Institute of Technology and Alyce de Roulet Williamson Gallery, Art Center College of Design.

In August 2007 scientists managing the infra-red NASA Spitzer Space Telescope began a series of conversations with five contemporary artists.

Intended to inform the artists' creation of original artworks, the conversations were a port of OBSERVE, a collaboration between Art Center College of Design and California Institute of Technology. Deep space exploration reveals spectacular concepts that torque our everyday understanding of reality -- black hole physics, multiple universes, string theories, time distortions -- and that challenge our human-centered cultural traditions and beliefs.

OBSERVE commissioned Southern California artists Lita Albuquerque, Lynn Aldrich, Dan Goods, George Legrady, and Daniel Wheeler to engage with Spitzer's knowledge and technology resources, and explore the implications of its discoveries.

Sunday, November 09, 2008

Digital Eyes 2008

Digital Eyes 2008, New Esthetic Dimensions in Computer Visualization Technology.

November 6, 2008 – January 18, 2009
Los Angeles Municipal Art Gallery (map)
4800 Hollywood Blvd., Los Angeles, CA 90027

Gallery Hours
Thursday – Sunday, 12 noon - 5 pm
(First Friday of the month, 12 noon – 9 pm)
(323) 644-6269

DigitalEyes 2008 – 2009 is a mind-bending overview of new esthetic dimensions in computer visualization technology. The exhibition exists in both the real and virtual worlds, representing innovative and spectacular work by artists from artists from twenty-five countries, including Argentina, Austria, Australia, Belgium, Canada, China, Croatia, France, Germany, Hungary, India, Ireland, Israel, Japan, Latvia, Mexico, New Zealand, Poland, Romania, South Korea, Spain, Switzerland, Ukraine, United Kingdom, and USA.

Tuesday, September 16, 2008

Dorkbot SoCal Sept. 27

Dorkbot SoCal 31 - "Nerd Droid", univac, Mack

Saturday, September 27, 2008
Machine Project
1200 D North Alvarado Street
Los Angeles, CA 90026

Dorkbot SoCal is the LA chapter of the global technological arts ogranization whose motto is "people doing strange things with electricity!"


"Nerd Droid" (Jerrold Ridenour & Anthony Magnetta)

Instrument bending and video glitching VJ duo

Tom Koch (univac)

Musical Gadgets

Kevin Mack

Mathematical Abstract 3D Art

More info at:

Thursday, September 04, 2008

XLST and Namespace Pain

OK, imagine you have this XML:

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<alert xmlns = "urn:oasis:names:tc:emergency:cap:1.1">

How do you refer to the "category" tag in XPath for XSLT, as it is in the "urn:oasis:names..." namespace?

  1. Ignore the namespace, and do something like:  

    <xsl:apply-templates select ="//*[local-name()='category']" />

  2. Define the namespace in the stylesheet tag and use the full path:

    <xsl:stylesheet xmlns:xsl="" version="1.0" xmlns:cap = "urn:oasis:names:tc:emergency:cap:1.1">
    <xsl:apply-templates select ="cap:alert/cap:info/cap:category" />

  3. Or define the namespace and use a simplified path:

    <xsl:apply-templates select ="//cap:category" />

It took me a long time to work this out....

Thursday, August 28, 2008

Cool iPhone apps

This is barely art related, but I have three new favorite iPhone apps.

OliveToast files is awesome.  It allows you to send files over WiFi (I often use an Ad-Hoc network) to the iPhone, and then you can read them (PDF, Word, JPEG, etc.) along with the ability to bookmark where you are in the files.  I am going to use this to learn Objective C from the Apple PDF book so I can program the iPhone. 

If you are musical, you will like BeatMaker sampler/sequencer from Intua.

And for those who miss HP calculators, try PCalc for iPhone.

Wednesday, July 09, 2008

LA Tech Art Events for July

Midnight Thursday July 10th to midnight Friday July 11th
Machine Project (in Echo Park) will be projecting a continuous live broadcast which tracks the sun around the Earth, with help from a very large circle of camera-ready friends and volunteers worldwide. A participant in every time zone points their computer camera to the sky between 11:30am and 12:30pm, with one timezone handing off to the next, feeding back “mid-day” to Machine Project via live video for 24 hours. Have you always been curious what it is like to stare directly at the sun from places like Tonga, Estonia, Texas, Iran or the Polar ice cap in Greenland? This is your chance to find out.

July 17, 2008 8PM 
ResBox @ STEVE ALLEN THEATER at the Center For Inquiry - West, 4773 Hollywood Blvd.

A monthly event featuring the world's best experimental music, curated
by musician and filmmaker Hans Fjellestad.


July 19 7PM - 7AM 

GLOW on the beach in Santa Monica:

"Glow will fill the hours between dusk to dawn with compelling, enchanting and effervescent sights and sounds situated in spaces and times that expand possibilities for where, how and when the public experiences contemporary art."

Artists will include Usman Haque (who did the 1000 helium balloons with radio controlled LEDs inside for the 2006 Signapore Biennale. Also there will be Shih Chieh Huang who will be creating a "Neptunian lair" along the pedestrian path under the Santa Monica Pier.

Machine Project also says they will be presenting at GLOW as well.

July 26 1PM @ Machine Project

Steven Gentner  will be speaking about a robot project built using RoboRealm, a powerful free computer vision based application for use in machine vision, image analysis, and image processing systems.

Gil Kuno  whose sonic artwork displace natural activity from its context, revealing an otherwise hidden level of metaphorical absurdity within the ordinary patterns present before our eyes.

Brett Doar a "paratechnologist" who creates "idiosyncratic electro-mechanical creatures out of inappropriate materials."

Wednesday, May 28, 2008

Breath Progress

Here is the Arduino BBB connected with the Adafruit Ethernet shield:

Arduino BBB and Ethernet Shield

One important issue if you get the Adafruit Ethernet shield, it will be much more useful if you have an Arduino with an ATmega168, since then it can use the AF SoftSerial library.

You see, the ATmega only has one hardware serial port, and you are generally busy using that to upload programs and monitor Arduino operation during testing.  Lady Ada has put together a software serial library that doesn't suck (unlike the standard Arduino software serial library), but it depends on having an ATmega168 rather than an ATmega8.

If you have an old Arduino (like the NG), you can pick up a pre-programmed ATmega168 from Adafruit to swap for your old ATmega8.

Here is my simplified version of a Lady Ada Xport example, creating a general "httpget" example.  And yes, it works!

#include "AFSoftSerial.h"
#include "AF_XPort.h"

char linebuffer[256];
int lines = 0;

#define XPORT_RXPIN 2
#define XPORT_TXPIN 3
#define XPORT_DTRPIN 0  // I'm not using DTR
#define XPORT_CTSPIN 6
#define XPORT_RTSPIN 7


uint8_t errno,ret;
uint32_t laststatus = 0, currstatus = 0;

void setup() {


void loop()

ret = httpget("",80,"","/"); 

if (ret)
Serial.println("get successful");
Serial.println("not successful");

uint8_t httpget(char *ipaddr,
int port,
char *hostname,
char *httppath) {
uint8_t ret;
uint8_t success = 0;

ret = xport.reset();
Serial.print("Ret: "); Serial.print(ret, HEX);

switch (ret) {
Serial.println("Timed out on reset!");
return 0;
Serial.println("Bad response on reset!");
return 0;
case ERROR_NONE: {
Serial.println("Reset OK!");
Serial.println("Unknown error");
return 0;

// time to connect...

ret = xport.connect(ipaddr, port);
switch (ret) {
Serial.println("Timed out on connect");
return 0;
Serial.println("Failed to connect");
return 0;
case ERROR_NONE: {
Serial.println("Connected..."); break;
Serial.println("Unknown error");
return 0;

xport.print("GET ");
xport.println(" HTTP/1.1");
xport.print("Host: "); xport.println(hostname);

while (1) {
// read one line from the xport at a time
ret = xport.readline_timeout(linebuffer, 255, 3000); // 3s timeout
// if we're using flow control, we can actually dump the line at the same time!
if (strstr(linebuffer, "HTTP/1.1 200 OK") == linebuffer)
success = 1;

if (errno == ERROR_TIMEDOUT)

if (xport.disconnected())

if (((errno == ERROR_TIMEDOUT) && xport.disconnected()) ||
((XPORT_DTRPIN == 0) &&
(linebuffer[0] == 'D') && (linebuffer[1] == 0))) {
return success;

Sunday, May 11, 2008

BBB for Breath-to-Breath

I am working on a breath-to-breath phy2phy project. I already had one Arduino NG around, so I purchased an Adafruit Ethernet Shield, and also a Modern Device Bare-Bones Board Arduino clone with a USB-to-TTL serial cable.

"Arduino" Bare-Bones Board

The BBB board had a couple of holes that were still filled with solder, so I had to solder wick them and then heat up a little piece of lead snipped from a resistor and used the soldering iron to heat up the lead and push through the solder-filled holes to open them up.

BBB versus Arduino

Just to be clear, standard Arduino shields do not fit on the Bare-Bones Board (so I probably should have purchased a Really Bare-Bones Board), but you can always hook it up with wires.

I am developing for the Arduino and BBB on a MacBook using the USB to TTL serial cable fro FDTI. Make sure you follow the OS X instructions on how to install the FDTI drivers. These will allow you to use either a USB cable to a Arduino or the FDTI USB to TTL cable for the BBB/RBBB. Also make sure you choose the correct ATMEGA chip from the Arduino software menu. And since there isn't much indication that the BBB works (unlike the flashing LEDs on the Arduino), so try a serial example on the BBB to convince yourself that you are uploading and running a program.

Here is the Ethernet shield on an Arduino NG:

Xport Shield on Arduino

I am awaiting two Xport directs in the post, then I can really get to business.

Tuesday, April 08, 2008

2,300 mile touch over IP

On Saturday, I guest hosted & presented at Dorkbot SoCal.  Along with Damon Seeley who showed off some super projects by Electroland (including live video from their Target Breezeway in Rockefeller Center), Gilad Lotan who showed some of his projects including the heartbeat-sharing imPulse, and a discussion of the Make:Way entry to the 24 Hours of LeMons race, I demoed touching someone 2,300 miles away over IP. Douglas Welch shot and edited this great video of the demo:

Thursday, January 31, 2008

First "real" PCB

Back in high school, I made some PCBs using resist pens and etching the copper, but nothing very serious.

I decided it was finally time to try using the free Eagle design tool along with service to make a PCB. My issue was that the wonderfully cheap Lantronix Xport Direct uses 0.2mm spaced pins which are a pain to interface to. So I figured this would be a good opportunity to design a PCB with a 3.3V power supply and the Xport broken out to 0.1" spaced standard headers.


Xport PCB

Xport PCB

The boards took about 3 weeks from submission to delivery (which was over New Year's so it might be faster for you), and cost $24.60. For that price you get two boards (this was a 3.8 sq. inch design).


So I populated the board and hooked everything up, and it appeared to work fine...until I started smelling something burning. I powered down, and after a short reference of the LM1117 documentation, I realized even though the regulator is only providing 200mA to the Xport, with a 9V supply the regulator needs to dissipate ~1.2W, which multiplied by the thermal resistance of the SOT-223 to ambient of 136 degrees C per Watt, means the regulator is warming up 163C above room temp, about 183C. OK, that is a little hot!

Max junction temperature is 125C, so if room temp is 20C, I can get by with 100C rise which for 1.2W implies a heatsink with a thermal resistance of ~80C/W, which means 0.3-0.5 sq. inch of heatsink (two wings larger than the size of the actual chip). Anyway, next time I'm doing at least a TO-252 or just go TO-220 with the ability to add an external heatsink if needed.

For the short term, I think I can jury-rig an external heatsink, but the lesson has been learned for my next design: an Ethernet-enabled Freeduino.

Here is a link to my Eagle library for the Lantronix Xport Direct.

If you need a PC fast in LA...

Here is my suggestion if you need a PC fast in LA:

PC Club