The End of the Bike With 2 Brains

On June 17, 2008 I killed the Bike With 2 Brains.

I've been dragging it to exhibitions and to Burning Man for the last 4 years. It never felt the same as that first year. The reason slowly materialized: I didn't set it free. The first time I brought it to Burning Man, I let it have an adventure on its own by letting people take it wherever they wanted. But on all subsequent exhibitions, I kept it close by. It was a difficult, harrowing experience to try and find it after that first year and I didn't want to repeat it. It would have been possible to add a tracking device, but in a way, I don't think even that would have been satisfying.

So it's been dying a slow, painful death. I killed its soul when I brought it out for the second time and didn't let it run free. It's looked sadder and sadder ever since — going from an experience to a toy. Of course, that's all it really was in the first place: an elaborate toy, but in that initial presentation, I made it art. As egotistical as it seems, I fully believe that to be true. It was a unique, experiential art project that I made.

I couldn't just throw it away — nor could I sell it. I couldn't even give it away — for to whom?: only to someone who would let it live again. I didn't really know what to do with it. I kept meeting people who wanted to see it and I'd occasionally trot it out to show them. The only real exception was my friend Sondra who advised to turn it into something else. Unlike other projects or products, I had a hard time seeing the Bike With 2 Brains as anything but the Bike With 2 Brains. It really permeated my perspective.

I finally decided to step up to the plate. I got out the Sawzall and took one last picture. I said, "goodbye, old friend" and started cutting.

Pieces of its corpse still haunt my garage and basement, but it's all on its way to becoming something else. The seat will be a "portable" loveseat — kind of like a heavy patio furniture that I can bring to Burning Man. One of the front wheels and the back wheel are going to become a rear-steered tricycle — sort of an adult Big Wheels.

As my friend Toni says, "everything is on its way to being something else".

The final minutes in my back yard.

New back wheels

I'd like to bring the Bike With 2 Brains back to Burning Man this year so I've been thinking about replacing the back wheels with ones that wouldn't break so easily. My dad gave me a couple 9" heavy-duty equipment casters so I figured I'd use them. I had originally thought to use larger ones, but free wins.

I tinkered around with the copper model a little to see what would look least stupid — 24" front wheels and 9" back wheels will probably look pretty silly. I decided to maintain the existing frame design as best I could (i.e. least amount of work to change) and just extend a leg with a decorative (and suspension-flex) bend in it and weld it to a plate, bolted to the caster. I had the plates from straight wheels I bought for my bicycle trailer, so I canabalized them for the project. I bent a piece of 1" water pipe then cut it so the bottom was perpendicular to the straight part of the pipe on top which gets welded to the old steering tube used with the original back wheels. It looks like the back end will ride a little higher with the new wheels, but not by much.

The Burning Man exhibition

I arrived at Burning Man (The Man, Black Rock City, NV) on Sunday, August 28. I got there pretty late in the afternoon so I had to hustle to just get camp set up before dark. I started assembling the frame on Monday morning. As I have done a dozen times prior, I start with the wheels and lower frame upside-down then I flip it over. However, this time, the frame snapped in half — on the left side and right side of the seat where the stress is greatest.

Ironically, I even quipped back in May "I used the pipe from my friend's house on Burkhard Place — it was the original water pipe that was installed 110 years ago … so if it breaks sometime in the future, that might be why." It was actualy the threaded part that broke … the threads made the walls of the tubing thinner and finally gave way.

Someone (I think his name was Cram) suggested Black Rock Hardware camp to see if they had a welder, but they didn't. However on Sunday evening I met people at Recycle Camp and they did. I talked with Angry Butterfly who said she'd probably have a free moment on Tuesday morning and took pity and/or sent me searching for energy drinks and cheeseburgers for her. I went back to Hardware and ground off the paint and made pipe inserts to further strengthen the joint.

Tuesday morning (my birthday) I took the frame parts to Recycle Camp and hung out with the crew a while. Angry Butterfly had to repair their can crusher so I helped with that and then she got my stuff welded.

Here's how the unpainted frame looked when I first built it.

Here's Angry Butterfly's welding job after the wear-and-tear of Burning Man.

I got back to my camp and assembled the project. I put in a fresh battery and flipped it on and … nothing. The computer wasn't running. I did some testing and realized the power supply spikes above 5 volts initially and it seemed to be latching up the computer which has an "Absolute Maximum" voltage of 5.5 volts. Wiggling the wires got it booted up and running, though.

I pushed it out to The Artery, signed in, and had now officially completed (almost) everything for the grant requirement. I pushed it out to Lost Penguin which is a chill-space with couches and such where they give away chocolates and wine. While I was sitting there, only one guy stopped to even look at the project.

Would you look at that? My project sitting out on the Playa.

I headed back to where I left it later but it was gone. I couldn't see it anywhere around on the horizon so I went back camp and found that "Ben and Babz" brought it back, leaving a note in the dust on my car. A couple other people tried it out and in the process seemed to loosen one of the wires. The computer stopped working again and I couldn't get it to do anything. So, in the last two hours of sunlight, I pulled all the existing chips and threw in a simple circuit to get all the blue lights to go on when it's dark.

My neighbor Troy and I figured out how to slowly ride it forward and took it about 3 miles to Alien Semaphore and left it there.

Wednesday morning I got up and started a hunt for the project. I went way out to the north trash fence and headed back … no luck. On Thursday I got up and did the same thing. I was getting a little alarmed when I couldn't find it — I prepared myself to let it go, but I kind of thought I'd see it way off in the distance maybe once a day … or at least have someone I know tell me they saw it, but no word at all. Friday morning was a repeat … another unsuccessful hunt. By Saturday I was getting quite worried. I never found my project at all and I started feeling trapped — after all, I'm responsible for removing it, so I'll have to stay forever until everything is gone.

Babz and Ben left a note on my Civic.

I returned to fix a couple things only to find it intact and in action.

Sunday I got up before sunrise. I felt a bit numbed to the idea of hunting for the project again, but I decided to systematically scour the city. I started at 6:00 and Hysteria — the furthest street — and rode from there to 2:00 and Hysteria. I then returned on Gestalt, back out on Fetish, then Ego, Delerium, Catharsis, Bipolar, and Amnesia … in all nearly 11 miles. No project found. I took a brief break then started on the other half of the city … 6:00 and Hysteria to 10:00, then back on Gestalt and … found!

It was around Gestalt and 9:00 — pretty much as far away from my camp as you can get and still be inside the city. One of the forks broke and a tire had blown out in the back. It had been cobbled and patched — the tensioner spring on the generator had been replaced with some wire and a condom and the tire had been patched a bit with duct tape.

I met this guy Gabriel who was somewhat incoherent … he apparently was awake at least all night and might still have been drunk. Their camp (or neighborhood) had adopted it and called it the "Space Car." They said they had tons of fun on it … he said that "sometimes it would make noise and we thought it was sad so we'd ride it some more." Someone else who was packing up and leaving thought it appeared sometime around Friday in its broken state but couldn't be sure.

I finally found it in such sad shape.

People apparently had tried to keep it alive for me.

The forces really ripped the fork apart, though — I expected that some part on the back would fail, I just didn't know which.

I biked back, grabbed some tools and the spare fork and went back to get it. I fixed the broken bits enough to be able to move it. I actually towed it with a strap to my bike. I stopped by Borrachos y bicicletas but they had no spare 24" tubes, but they suggested I just take the tires and tubes off the back wheels and ride it on the rims. I did that and managed to get the MP3 player started again so I took it to Kidsville so the kids there could play on it.

Sondra and her daughter Electra take their turn at Kidsville.

I locked it up that night so I wouldn't have to worry about it.

Monday, September 5 I got up early and started slowly packing. I got the project taken apart and managed to fit everything back in the car again and headed back home.

Just a picture of the sound board

Here's the finished audio system circuit board.

Finishing up the generator

I assembled the new windmill and bolted on a 1.5 watt solar panel (or so it's rated) on top for a bit more power. I wired everything up with blocking diodes (independently for the solar panel and generator.) I wired it up modular and consider it done.

While I was taking pictures …

Here's the finished power supply circuit board.

Try to write cool software; settle for functionality

Friday morning I started working on the bit modulation. I needed to have some kind of indirect addressing to access the three colors on each of the 22 LED's and convert each one to bit patterns to output. I looked through the documentation for the processor and they had functions for accessing tables, but after looking closer, I found that it was designed to access the flash memory and I don't really want to wreck the flash memory reading-and-writing it over and over again.

I looked into the macro features of the assembler but the only flow control is "while" and "if/else" statements. I hacked together some stuff to access arrays in macros, but it's crap, gobbling up both program space and CPU time

I finally found information on the "FSR" ("file select register") that does exactly what I want: you load one of the three FSR's with a RAM ("file") address and then use INDFx as an operand (in place of, say, an absolute register address) and it'll use the FSRx pointer.

I got the confidence to plug in one of the shift registers. I had to fix the code so it'd load the shift register properly and to latch the output, and also to turn on the output for a color LED. That was awesome: apparently my hardware was wired correctly and worked on the first try. I added in the other two shift registers and it all worked great.

On Saturday I got up around 4 a.m. and got going. I cranked out code to convert 8-bit color values into bit-modulated registers ready for shifting-out to the hardware. I got the whole bit modulation system partially working. I ran through the code several times and picked out and fixed a bunch of little bugs. I was worried that I was getting some kind of race condition that was causing things to flicker randomly instead of actually work, but timing adjustments had no effect at all. I finally found a huge logic error with the way the bit modulation was loaded. I rewrote it much better but it still didn't work.

I stripped things down a bit to do some tests. I tried to use the code I had to output to the shift chips by making a simple alternating-light blink pattern. It worked fine, and even changing colors in software worked. I tried the same thing only using the "fast" clock rate and also switching colors from red to blue and that worked fine too.

Sunday I got up around 4 a.m. again. I wrote the code to control the MP3 player real quick and got it working in no time. I added code to check light levels and got that working: the circuit is just a 100K resistor from +5V to a CdS cell to ground. When it's light, the CdS cell's resistance is much lower than 10K so the voltage present is a logic "0" at 0.5 volts; when it's dark, the CdS cell's resistance is higher than 1M, so the voltage present is a logic "1" at 4.5 volts.

I went through the rest of the code looking for misspelled op-codes (that is, MOVFW and MOVWF do very different things) but no luck. I changed the code at the beginning to initialize things better and set up the test case to be very simple: 2 LED's on, red #10 at 100% and blue #11 at 25%. I got two greens on: #7 and #10.

I'm not sure what the deal is there … it doesn't seem like there's a good explanation why it isn't going to the right place. I checked the wiring and found that the latches are wired so the first LED is output #8 on the MIC5822, so I reversed the rotation order in the bit shifting algorithm.

Ok, I finally gave up and went with a simple pulse-width modulated output. The idea is to slowly cycle through the spectrum from red-to-green, green-to-blue, and blue-to-red. I set up the code to modulate between "color 1" and "color 2" slowly shifting the duty cycle from 0% to 100% on "color 1" and from 100% to 0% on "color 2" along with an off-cycle to make it dimmer and use less power.

I got it all done and running on the battery pack — the whole thing, lights and audio included, runs at about 2 watts.

Here's the finished computer circuit board.

Generator dumb luck

I have been in the habit of going for a walk in the mornings to clear my head and this was no exception. The one exceptional event was it's trash day and I was out very early. I came upon one house with what appeared to be a paper feeder for a copier (or at least most of such a beast.) I walked past it but then went back and took a closer look at the motors (which appear to be pretty beefy) and that it had a bunch of smaller springs (that I can use as tensioners.) I walked it back home and then went on with other things

Later on, I got a chance to test the motors. Actually, I just drilled a hole in a piece of dowel to use as a roller and bolted the motor in place — I had drilled holes in the the motor holder for what appeared to be two "standard" sizes. Well, this one is as big a motor as will fit and I brought it to the big attic fan and gave it a whirl. It generated about 25 volts open at that wind speed (a lot) and output 7.5 volts into 51 ohms: about 0.15 amps or 1.1 watts. I installed a larger spindle and got 8.8 volts (0.17A) into it or 1.5 watts. I found that with just a diode, I could charge the battery at 0.12 amps out. That's not bad, but it could be better. I decided that if I also throw on the solar panel I have (supposedly 1.5 watts) and hook it all up, I might be able to get to a point where the whole system is pretty close to self-sufficiency.

If the draw during the day is 0.2A and the draw at night is 0.4A, I might assume an average of 0.3 amps all day. If the generator can average 0.1 amps (very optimistic) and the solar panel 75mA for half the day (35mA average, also pretty optimistic) that's 0.135A average in, reducing my overall average load to 0.165A: the 7 amp-hour battery would then last about 42 hours! That's way better than the 23 hours I can get at 0.3 amps.

Rewrite demo program with interrupts, get clocks set up, build lighting connectivity

Ok, so now it's 2 days left. It took a while, but I got the program working using the built-in timers and interrupts. Basically I created a main program polling loop that waits for the "fast" clock (which is programmable through macros in Hertz based in the assembly language program) to run "fast" events (like light animation) and a slow clock derived from that for pushing buttons on the MP3 player. For some reason the internal clock runs at 3x the crystal frequency. Who knew?

I also got to wire up all the connections for the socketed chips: I got the latches in place on the board and wired everything up: I'm going to try using the master synchronous serial port (MSSP) to run the latches. I've got three inputs set up that drive PNP transistors with a common emitter to +5V and the collector tied to the anodes of the respective colors.

Get demo program working on computer

I figured with about 3 days before I leave, it's about time that I program the computer and hook it all up. I downloaded the software and a demo program, compiled … er … assembled it, installed it on the board, and got it running. Whew.

Remote controlling the MP3 player

I finished up the circuitry for both being able to actuate the play and power buttons from the computer and for detecting when the MP3 player is on. I'm sure you'll all be so amused that I used these ancient reed relays to do so — I opted against optoisolators because I wanted to have something that less could possibly go wrong — but I didn't know how they were wired. I couldn't find any info on the "Dunco Relay" MRR1CDLV8 on the Internet, and while I could identify some of the pins by a resistance check, but I wasn't sure exactly what was what. I did, however note that the patent number was printed on the cases. A couple guesses about what the smearily stamped ink said, and I came up with patent #3,575,678 … the images at the US Patent Office website entry for 3,575,678 show in much better detail how the thing works … plus it was patented in 1971.

Anyway, here's that circuit:

Just sensing power and triggering buttons ... what fun.