I have been working on a project with Lynn Hershman, called Alchemists Wand for the 21st Century. This art piece incorporates a number of brooms that have been modified to detect toxic substances, registering this on LEDs embedded in the broom handle, and transmitting their readings to a screen that presents information on what to do. Each broom detects a different substance, currently: alcohol, ammonia, carbon dioxide, carbon monoxide, natural gas and various solvents. The piece showed at Bitforms gallery in New York, as part of a show called “Touch: A Space of Relations”.
The brief is simple: build a set of brooms that can detect toxic substances in the environment, and display their findings via lights on the broom itself, and on a connected screen. The initial concept design used a square janitor’s broom:
Read on to see how this concept became reality…
The first challenge was to find sensors that could detect a number of substances, cheaply and reliably. At first, I looked at some fancy MEMS sensors that could pick up multiple substances at once, but this seemed unfeasibly bulky and expensive. Jonathan Foote, a colleague at Noisebridge, pointed me to this collection of gas sensors, that seem to be able to do the job cheaply. They seem to be very similar to the sensors from Figaro sensors, and in fact are pin compatible.
I built a test rig, that included an Arduino microcontroller, a sensor, LED indicators and later, a data radio. The test rig proved that the sensors were in fact very accurate and fast, and that batteries could power it for a reasonably long time. It also made it possible to move ahead with the developing the software for the device. I also realized that many of the online case studies of people who claimed to have used the sensors were wrong: they described circuits that really could not work.
However, the most challenging part of the project was just beginning: getting all the electronics into the broom. Initially, I proposed either thickening the broom handle, or adding a pod to contain the electronics. This would give the project a sort of steampunk industrial aesthetic. However, this did not fly, Lynn really wanted it to look like a broom. My first attempt at integrating the electronics was with a regular push broom. The plan would be to incorporate the electronics into the handle, with the sensor and batteries in the hollowed out head. The only radio which would fit easily was a Bluetooth radio, so I started working with a Bluesmirf transceiver.
After considerable effort, I was able to fit the Arduino Pro Mini, the Bluetooth transmitter, the LEDs and a small buzzer into the broom handle. I built a jig that allowed me to slice it in half lengthwise, and then used a router to carve out hollows for the components. However, this was taking a long time – and it was not clear that the sensor would work well embedded into the broom head. Fortunately, Lynn proposed moving back to original idea of a square janitor’s broom, and enlarging the head with a box that would surround it. This provided ample space for the electronics and batteries.
Working with a skilled woodworker, a second prototype established the feasibility of housing everything in the broom head, and a new approach for embedding LEDs in the handle. We were also able to test a finish for the broom, covering it entirely in gold leaf. This was not quite what Lynn wanted, so for the final iteration we instead used a broom with metal bristles, electroplated first with copper and then gold.
The final design of the electronics uses an Arduino Pro Mini and an XBee radio. The sensor is mounted in a module that incorporates a tiny fan, that draws air past the sensing element. Power is provided by 4 AAA batteries. I would have liked to have used AA batteries, for longer battery life, but space was very tight. I spent a lot of time fabricating custom connectors and cables to fit the very compact space. The brooms are also designed for easy maintenance: the sensors, LEDs and batteries are designed to unplug easily from the main board.
The picture above shows three of the brooms, almost finished. The sensor module is the little thing with the tail. Note the gilded bristles! Below, a close-up of the broom head with the sensor nestled amongst the bristles.
The software that drives the screen display was written in Processing (Java), and relies on another XBee module connected to the hosting computer. I designed a simple and very reliable protocol for connecting the brooms to the display computer, they will automatically connect when powered on.
I am pleased with how the project works artistically. It takes a mundane object, and makes it magical. The brooms react quickly and with great precision to invisible substances, and transmit their results to a remote screen with no apparent connection. The magical nature of the brooms is indicated with great subtlety: violet LEDs discretely embedded in the handle, and golden bristles. Lynn’s artistic guidance was essential to achieving this “magic”, her insistence on subtlety is what makes the project an artwork and not a demo.
Further development of this project might involve choreographing a performance around it, and perhaps capturing elements of time and space in the visualization. (Perhaps incorporate a Geiger counter?)
As with all projects that involve technology, there are lots of changes I would like to make:
- Monitor battery voltage on the Arduino, so that it can send a low battery warning
- Reduce the voltage sent to the fan: it doesn’t need to spin so fast, and it would reduce power consumption
- Upgrade to lithium-polymer batteries
- Enhancements to the host computer software to plot readings over time
I am very pleased to have worked with Lynn from conceptualization to realization. This was a technically challenging project, and I think it turned out well. I really appreciate the working relationship with Lynn: her insistence on certain key points, such as the appearance of the brooms, made this a much more “magical” project, making it more of an artwork than a technology demonstration.
Since October of last year, I’ve been working on an exciting project with filmaker and artist Lynn Hershman Leeson, an interactive installation integrated with a web-based media database called RAW/WAR. The interactive installation is constantly updated with multimedia from a companion website at rawwar.org.
I’m going to describe some of the aspects that I worked on, especially in the area of physical interface design. We worked with Paradiso Projects extensively for the design and coding of the installation and website software.
The genesis of the project comes from the film “!Women Art Revolution“, a documentary by Heshman about women in contemporary art, and how they created an entirely new, and parallel, body of work from the 1960’s onward. The film is based on over 40 years of interviews with contemporary women artists. However, Hershman realized that it was not possible to present all the stories she had gathered in a single documentary, let alone those of artists she had not been able to document. Therefore, she made available all her original material via an online archive at Stanford University, and created a website, RAW/WAR, that allowed anyone to upload documentation of their story.
For the Sundance Film Festival, Hershman was extremely interested in creating an interactive installation that would allow casual exploration of the RAW/WAR archive in an engaging manner. Starting from an observation about the film, that it was like exploring a dusty attic with a flashlight, we set about bringing this to life.
We explored a number of approaches to creating a “virtual flashlight” that would allow users to cast light on a projected room, and use it to trigger the display of images and videos. Initially we considered a system using a webcam and laser pointers – however, this required using a limited set of display technologies (front projection) and we could not limit ourselves to that option at an early stage.
It turns out that Wii videogame controllers are easily modifiable to be used with computers, and are a highly reliable and accurate pointing device. I first developed a simple proof of concept using Max/MSP, and very useful piece of software called Osculator.
This established that the Wii controllers worked reliably, and more importantly, that the illusion of casting a virtual spotlight was convincing, and interesting. We worked extensively with Paradiso Projects to develop the design further, and develop the software that would bring the installation to life.
An initial concept introduced the idea of creating a sense of depth in the virtual room:
Another iteration led to a more collage-like presentation of the media, proposed by Stacey Duda and Paul Paradiso. It explores a way of presenting a lot of media at the same time, and starts converging on design elements such as the ability to filter media by decades, and by category:
Testing this at that studio suggested that we wanted to recapture the sense of depth, that it was an extension of the space that the viewer was in. We knew by this point that the installation at the Sundance Film Festival would have the screen in a corner, and we wanted to make use of that. Hence, the final concept looked like this:
The final result looked almost identical to what was originally specified, and was aesthetically and functionally very effective. Kudos to Paradiso Projects for delivering such an outstanding result in such a short timeframe!
At the same time as the software for the installation was being developed, I worked on creating the physical interface. We wanted the controllers to look and behave just like real flashlights. We considered building a new flashlight-like housing for the controllers, but it seemed to make sense to try to retrofit an existing flashlight. Fortunately, the very first flashlights purchased turned out to be exactly the right size to house the guts of the Wii controller.
Disassembling the Wii controller required the use of special security screwdrivers, which fortunately I had already. Once the external casing was removed, I needed to add a battery holder, since the Wii battery holder forms part of the external housing. I initially tried soldering a Radio Shack battery holder directly to the existing tabs on the Wii, but this did not work. Too much heat was required for a good solder joint, and this destroyed the wiring in the battery holder. A much better option was to solder the two wires from a 9V battery snap-on connector to the solder pads on the Wii controller, and then clip the battery holder into this.
The interface for the installation was designed to work by pointing and hovering, so no access to the buttons on the Wii was necessary. I cleaned out everything in the flashlight, and found that the Wii electronics fit almost perfectly. I only had to do a little bit of machining to the reflector. The clear lens turned out to be transparent to infrared, which is necessary to allow the camera in the Wii controller to work effectively. I added a plastic disk that clipped onto the front of the Wii electronics in order to keep the camera centered and hold it in place.
I also cut a notch in the disk that matched a guide tab, to ensure that the orientation of the Wii with respect to the flashlight was always maintained. This turned out to be unnecessary: the Wii always orients itself correctly.
It was truly fortunate that we found flashlights that were the right size, could have the reflector easily machined, and had a lens that was transparent to infrared!
A final step was to remove the branding on the flashlights, using black vinyl electrical tape.
Once on-site, we needed to install an LED bar that is used by the Wii controllers to establish their position with respect to the screen. Initially, I had used a small LED bar from Best Buy, that seemed to work well in the studio environment. However, once on site we realized that the LEDs were really not bright enough to provide a good experience. It was easy for the controllers to lose sight of the LEDs, and then the installation would become erratic or unresponsive. Replacing the LED bar with a much higher-powered one led to a huge improvement in performance. However, this turned out to be a weak link, since it tended to go through batteries really quickly. Going forward, a USB-powered LED bar seems to be a much better option.
In general, the Wii flashlights performed well. However, there were a a couple of rough spots. The first was that the scaling of the position returned by the Wiis needed to be scaled for each venue – the Wiis are designed to work with much smaller screens. The second issue had to do with establishing a connection between the computer that runs the installation, and the Wii controllers. Nintendo uses a proprietary system for doing this with the game console, whereas Osculator requires the connection to be established manually every time the installation runs. We were able to teach the volunteers from the Sundance organization how to do this, but it would be good to automate the process. This was by far the most complex part of keeping the piece running.
One of the most interesting things about the Makerbot 3D printer is that it can be used to repair, or even upgrade, itself. After a substantial run of large prints, the bushings that hold the X & Y platform had started to wear out, and the print stage was becoming wobbly. This translated into unsightly marks and loss of precision on printed parts.
Fortunately, someone on Thingiverse (a repository for uploaded fabrication files) had already developed a replacement XY stage for the Makerbot, based on the RepRap Mendel, that uses bearings instead of bushings. I ordered the parts (nuts, bolts, bearings) and printed the 18 pieces that make up the replacement stage. The design for the new XY stage has gone through various iterations, with lots of useful changes proposed by the user community. Not only that, but there are even upgrades for the upgrade, as I will discuss later.
The new XY stage, mostly printed on the Makerbot, uses bearings instead of bushings, and should experience a lot less friction while moving. The design is also much lower, and allows for more than 1cm increase in vertical travel.
As I was in the process of putting it together, I discovered yet another upgrade for the upgrade: a quick release clamp system for the new XY stage. The print platform is normally held to the XY assembly by magnets, to allow for easy removal. While this makes sense in some circumstances, it can also lead to quite a bit of wobbling. I went ahead and printed two parts as well, and incorporated it to the build.
Final results were great: the new XY stage is notably quieter, and the quick release system holds the platform much better than the magnets ever did. Print quality is much improved:
The vase on the left was printed with the older stage, and shows a lot of “ringing” around vertical edges. This happens when the print platform changes direction rapidly, and the printed object shakes on the platform. The vase on the right was printed with the new platform and stage, and shows no signs of ringing at all.
I am impressed with how easy it is to use the Makerbot to make substantial improvements to itself, due in great measure to the existence of a highly skilled and capable community of users who are willing to share their designs. Not only are there many upgrades available, people have even developed upgrades to the upgrades, in a vital process of continued improvement. It is the creation and management of this community that is Makerbot’s greatest strength, more than the technical design or engineering of the device itself. It is one more example of a product that thrives by being part of an ecosystem, rather than through technical excellence or aesthetics.
I have had this Spykee robot for a while now, had encountered some issues, and decided to fix it.
Spykee is a “toy” robot that is suprisingly sophisticated. It has a video camera and microphone, and can be controlled remotely from a computer via local WiFi, or over the Internet. However, it has a design flaw in the battery charging mechanism that overcharges and soon destroys the included battery, getting to the point where you can only operate the robot for 10 minutes. The built-in WiFi antenna is cheap – a piece of PCB with etched traces – so the range is very poor.
I fixed both of these issues very quickly: for the WiFi range issue, I ordered an RP-SMA to UFL pigtail connector. This is a fancy wire that connects to the WiFi connection on the robot’s motherboard on one end, and to an external WiFi antenna on the other. I ordered this one. Disassembled the robot, unplugged the internal WiFi antenna, and plugged in the pigtail. Drilled a hole in the case, on the left side near the top, and threaded the RP-SMA connector through. The antenna, from a defunct D-Link router, just screwed on. You can probably use higher power antennas as well, as long as it has an RP-SMA connector.
For the power issue, I did a little research. It turns out that Spykee runs fine on a 12V power supply, not just the 9.6V battery that it ships with. I had good experience with Lithium-Polymer batteries I found on eBay, that go up to a whopping 6800MaH (vs. 1600MaH at best for the factory battery). I use the same battery for powering the LEDs on my baby’s stroller, and it has been rock solid. So I ordered this one from ebay, and set about adapting it to the robot.
I wanted the mod to be as reversible and low-impact as possible, so I looked at the battery connector inside the robot (Tamiya style), cut the equivalent battery-side connector off a dead battery, and soldered it via some wires to a standard 2.1mm power jack from Radio Shack. I drilled a hole in the robot case to accomodate the jack, and plugged the other end into the robot’s existing battery connector. The battery attaches to the robot using Velcro adhesive strips. I can revert to the “factory” configuration by just unplugging the new cable, and plugging in the old battery.
One disadvantage of the LiPo pack is that you cannot use the existing charging dock, you have to connect the LiPo battery’s own charger. The robot has some nifty functionality for auto-docking, so this is a bit of a loss. Since the battery is connecting via the existing circuit path in the robot, it should be possible to adapt the LiPo charger to connect through the robot’s charging dock. Haven’t gotten around to doing this yet. (Warning: LiPo batteries require a lot of care when charging. Use only the charger that comes with it. Don’t do this if you don’t know what you are doing.)
Results of all this? The robot can now be run very actively for over two hours at a time, at high speed. WiFi range is roughly 25% better, the robot can now roam freely all over the apartment without losing the connection. It is now a far more practical proposition to use the robot to play with my son!
I’ve been doing some development work at the Exploratorium, and my latest project is now ready to go live. It is a general purpose, highly configurable timelapse recording program, that will soon be incorporated into an interesting experiment in social dynamics (I’ll tell you what it is when it goes live).
The program is developed in Max/MSP, and contains a lot of useful features:
- Live preview of camera input
- Timestamping of recorded frames can be turned on or off
- Can be controlled with a rotary encoder (big free spinning knob) allowing users to “travel backwards in time”
- Timed recording, you can have it start and stop recording a timelapse movie at specific times
- User configurable recording interval and/or difference threshold (ie. record a frame when something changes)
- Disk based buffering of the current recording, so you can scroll back and forth while it is recording
- Program saves all settings automatically, making it possible to run unattended and on a schedule
The system is designed to be sufficiently flexible and configurable that it can be deployed in multiple situations where timelapse recording is interesting.
Nik and I had an awesome baby! His name is Javier Jun-Hong, and his special superpower is breastfeeding. Here he is:
Now, as everyone knows, having a baby is a great opportunity to launch a variety of different toy-making and hacking projects. The first one is to enhance his stroller with remote-controlled multicolor LEDs. I picked up some parts from Elemental LED, and put it together over the course of an evening. I used zip ties to hold the LED strips to the bottom of the stroller basket. The power pack and controller fit nicely under the footrest, and are held in place with velcro. Stroller folding is completely unaffected. Looks pretty good! And so does Javier’s mom!
As part of a larger project involving timelapse video, I developed a technique that uses motion detection to identify frames for capture, and skips over frames where nothing is happening.
The video on the left implements this technique. You can see how it works, by skipping the stops at the stations in the video. The video on the right is original source video, sped up to match the duration of the video on the left. You can see that it does not skip the stops at the station.
I implemented this in Max/MSP/Jitter. The basic algorithm keeps track of the last frame written, and constantly compares the incoming video feed with that frame, calculating a constant difference score that tracks not only the number of differing pixels, but also the amount of difference. When this difference exceeds a defined threshold, then it captures that frame.
Comparing against the last frame captured, instead of simply the previous frame, ensures that even gradual changes will be recorded.
Yet more random learnings…
- On long trips, driving at around 55 mph will get you to your destination faster and more relaxed than by speeding – fewer fuel stops outweigh the greater speed
- Before asking questions, ask yourself if you really want to know the answer, or if you’re just showing off
- Get duplicates of any key toiletries (toothbrush, deodorant) and travel accessories (phone chargers, plug adapters) and keep them packed, next to your suitcase. This way you can pack for trips the night before and still brush your teeth before going to the airport.
- Telling someone to “just be yourself” is rarely good advice. However, telling them to pretend to be someone else opens up the door to learning and transformation.
- Never buy just one tube of toothpaste. Get two or three at a time, you’ll run out less frequently. Same goes for toilet paper, buy the jumbo pack.
- Change only one variable at a time
- Whenever you’re trying to get something done with a group of people, communicate constantly. Communicate more than you might think is necessary.
- You can’t make anything from a good mango that is better than that. Just eat it raw.
- Once you get started on a difficult task, it will seem a lot easier.
- Memories are startlingly inaccurate. Keep records. Revisit them and be surprised.
Last time I checked in, I had added the heated build platform and a Paxtruder to the Makerbot. However, things were not quite perfect: things were not sticking to the platform, and I kept getting occasional jams in the nozzle. I could tell things were not quite moving, because I could see the filament “snaking” in the extruder body.
The first problem was solved easily: ordering a roll of 4″ wide thin Kapton tape from here. It just about matches the width of the build platform, adheres easily, and most importantly, hot ABS sticks to it like there’s no tomorrow, with no need to sand it or otherwise prepare it.
For the second issue, I turned to the increasingly vibrant 3rd party Makerbot parts market, and ordered a Makergear plastruder. This is a replacement for the Makerbot nozzle, which makes a number of important changes to the design, including a stronger PEEK insulator instead of the existing teflon, a ceramic heating element instead of wrapped nichrome, and a much heavier nozzle head.
The Makergear nozzle comes with a clever mounting bracket, but unfortunately it doesn’t fit my Paxtruder, so I salvaged the big retainer washer from another nozzle, and mounted it the 0ld-school way. Nice how you can get two upgrades from completely different sources to work together.
These two elements have led to really reliable printing – don’t need a raft, and no filament jams. I printed one half of the Blender monkey, and was pleased with the results. I had been printing slightly hotter than necessary to try to prevent jams, and now I think I can dial the temperature down a bit.
I’ll print the other half of the monkey later. I accept it will come out better, less floppy ears…
An area that causes problems in the Makerbot is the filament drive mechanism. It has to be adjusted just so, or the filament will get jammed or strip. The system that keeps the filament engaged with the drive wheel is an acrylic idler wheel, which is sometimes uneven or wobbles. Also, the adjustment for idler wheel clearance is finicky, requires two tools (hex key and wrench) and can’t be made while the Makerbot is operating.
Fortunately, there is a lot of great innovation on this front: a fellow called Charles Pax has created the Paxtruder, which uses a Delrin piston and a screw mechanism for the filament drive. Another member of the Thingiverse community, inspired by this, has created a version of the Paxtruder that is a drop-in replacement for the original extruder body, and uses many of the same parts.
A friend of mine very kindly offered to laser-cut the acrylic parts, and I machined a scrap of Delrin to make the pusher, and now I have my very own Paxtruder:
It looks great, and works great. It is trivial to get the filament driver pressure exactly right. In addition, the design of the Paxtruder makes it super easy to remove the motor (to clean the gear), and to remove the nozzle assembly. I highly recommend it as an upgrade to the Makerbot.
This whole process reflects the power of Open Source hardware: many of the enhancements I’ve made to the Makerbot come from the community, which is empowered to innovate and share. Some of the enhancements can even be made using the Makerbot itself, in a virtuous cycle of machine evolution. Eventually these improvements get rolled into the current production model of the Makerbot. I suspect something like the Paxtruder will be the basis of the upcoming Mk. 5 extruder.