Archives

All posts for the month May, 2014

Ever wanted to be a robot? Become 0.02% more cyborg with Electronics Facepainting!

Becca G. demonstrates being a cyborg.

Becca G. demonstrates being a cyborg.

I initially had this idea when I heard about a new printer that could print on a variety of materials (c/o Hack a Day). The printer works by printing traces with silver nitrate solution, which precipitates onto the substrate when a second chemical, ascorbic acid, is added. Right off hand, these chemicals struck me as not particularly bad for humans beyond their staining and being mild skin irritants. This gave me the idea to apply them to people. Their risks were minor for the sake of art.

Unfortunately, silver nitrate solution is rather expensive; taking this into account, I searched for an alternative chemical for skin-based circuit traces. The next idea I found was a gallium-based ink, tested in a 2013 research paper I found online by Yu et al. at Tsinghua University. The LEDs on a hand in one of their pictures inspired me, but again gallium was too expensive for my purposes.

A researcher demonstrates  a circuit made with gallium paint, c/o Yu et al.

A researcher demonstrates a circuit made with gallium paint, c/o Yu et al.

There are a variety of sources online for how to mix your own conductive paint, conductive rubber, or conductive glue. Most involving mixing the non-conductive version of the substance with graphite powder and produce relatively high resistance products.

However, I settled on Bare Conductive, which makes a non-toxic, reasonably priced conductive ink. Some of their initial videos suggest their product is skin-safe and intended for skin, but they appear to have gone back on this since the Bare Conductive MSDS now recommends against skin contact and any mention of skin is absent from their website. The MSDS warns that it “may cause skin sensitization” due to an allergy to the Diazolidinyl urea in the paint. Maybe they’re also worried about people attaching volts to their skin and zapping themselves.

Anyway, I went with their earlier advice since I had already decided I was fine dealing with mild dermatitis. I ordered a batch for the East Campus Bad Ideas Festival, though I ended up not using it until later. When it arrived, my friend Becca G. and I played around with various techniques before demonstrating it at a party and later MIT Campus Preview Weekend.

This is the first circuit I painted on my arm. I added details with eyeliner.

This is the first circuit I painted on my arm. I added details with eyeliner.

I used Bare Conductive for connections and strands of wire for long traces.

I used Bare Conductive for connections and strands of wire for long traces.

This close up shows the strand of wire as well as the slip of paper I inserted under the LED to make up for my sloppy connection work.

This close up shows the strand of wire as well as the slip of paper I inserted under the LED to make up for my sloppy connection work.

We decorated and annotated the circuits with black, metallic, and neon eye liner pencils. Here are some pics of Becca and me before a party.

RoboBECCA 9000

RoboBECCA 9000

My other arm is robotic.

My other arm is robotic.

One thing we noticed immediately was that the conductive ink, while conductive, still had quite a bit of resistance. It turns out the ink is OK for electrical connections and great for making resistors in the 100Ω to 10kΩ range, but pretty bad for making regular traces longer than an inch. As a compromise, I pulled some single strands out of some stranded wire and used these for long traces, securing it with the paint, which I treated like glue or solder.

Mostly, we just painted LED circuits, but I tried a few others. Here’s an oscillator on some paper that didn’t end up working, and I never got a change to debug it further before I cleaned up. That said, I’ve constructed this circuit on a breadboard and artificially added a couple hundred ohms of resistance at every electrical connection to simulate the resistance of the paint at joints, and it worked great, so I suspect this circuit could be successful with some tweaking.

Works on paper (top right corner), but doesn't work on this paper

Works on paper (top right corner), but doesn’t work on this paper

One problem I had was the fragility of the circuits–it was important to avoid accidentally brushing your skin against any rough surfaces. In the future, I’d like to try using clear liquid latex to secure some of these circuits.

If there’s interest in this, I can post some step-by-steps on how to make your own Electronics Facepainting.

A few days ago I made a low-profile fan for my window out of computer fans. I wanted to mount the fans in a laser-cut frame, so I started by taking measurements and drafting the design in SolidWorks.

This row of fans takes up only a few vertical inches of window real estate.

This row of fans takes up only a few vertical inches of window real estate.

Often, when I make a design in SolidWorks, I include a file for storing global variables for my project. I liken this to defining global variables or constants at the beginning of a software project. I use this technique frequently to great utility in SolidWorks, but I don’t see very many colleagues use it, so let me elaborate on it.

First, I make a text file called “dimensions.txt” or similar, and, in it, I list all the global variables I’d like to use in my project, like the example below. These include values that I’d like to be the same across parts files. I also include values that I think will have to be changed by the end of the project.

For example, for this project, I thought I might change what computer fan I used and how many I used, so I included mounting dimensions for the fan as well as the quantity of fans.

However, I knew the width of the window wouldn’t change, and was only used in one or two parts, so I didn’t include that constant in my list of project-wide constants.

"dimensions.txt"

1 "depth" = 0.98
2 "side" = 2.36
3 "hole spacing" = 1.97 'horizontal or vertical distance between two holes
4 "fan diameter" = 2.52
5 "fan count" = 6
6

There are some tricks to this text file–for SolidWorks to understand it, all variables must be enclosed in quotes ( ” ” ), comments must be preceded by a single quote ( ‘ ), and the file must end with a newline. Note that in the box above, the numbers on the left mark the lines but are not in the actual text file.

I save dimensions.txt in the root directory of my SolidWorks project. Then, whenever I make a new part, I first use the Equations dialogue in SolidWorks to import this file into the list of parameters for that part; the screenshot below shows the Equations dialogue after importing dimensions.txt. For a parametric modeling software, I think SW sure has this parameter dialogue tucked away, so I have it hotkeyed to Q, the same as the default in Autodesk Inventor, if I recall correctly.

I added a few values to this part that were derived from the globals in dimensions.txt, but that weren't necessary to be known by every part in the assembly.

In addition to the globals imported from dimensions.txt, I added a few values specific to this part, the front panel. These values in particular were derived from the globals in dimensions.txt, but they weren’t necessary to be known by every part in the assembly.

Then, whenever I dimension a sketch or feature in the part, I link those values to the global variables imported in dimensions.txt, as shown below.

I linked the values of the dimensions here to my global variables, as indicated by the red chainlink symbol.

I linked the values of the dimensions here to my global variables, as indicated by the red chainlink symbol.

This allows me to change parameters after I’ve finished the basic CAD. Whenever the part or assembly is rebuilt, SolidWorks automatically refreshes the values in dimensions.txt. Consequently, I can change one value with my text editor, rebuild the top-level assembly in SolidWorks (ctrl+b), and all files update their parameters from dimensions.txt.

This actually ended up being relevant for this project because I found an extra fan of the same size as my earlier ones, and I wanted to add it to the array. Due to this technique, this change required an order of magnitude fewer operations–my panel and assembly were updated immediately and automatically, as demonstrated below.

Changing from five fans to six required about two clicks instead of a dozen.

Changing from five fans to six required about two clicks instead of a dozen.

Anyway, after I made this design, I laser cut the front panel.

I'm a huge fan of how fast laser cutters are.

I’m a huge fan of how fast laser cutters are.

Then, I screwed it all together and ran it off of a 5V couple-Amp power supply.

I covered the rest of the fan box with a sheet of cardboard.

I covered the rest of the fan box with a sheet of cardboard.