Watch Out for Springs

Monday, July 20, 2009

Pannier


Here is a bicycle pannier that I made several years ago. Maybe I shouldn't call it a pannier; it's more of a pannier holder, since it's designed to carry another bag.

I was dissatisfied with commercial panniers for a few reasons. First, they are too expensive for me. Second, they often seem over-built, with a lot of heavy hardware necessary to fit any bike frame out there. Third, I would rather not change bags just because I'm biking. There are some things I keep in my backpack so I'll always have them with me, and I'd be bound to forget them if I had to re-pack for biking. Finally, when I bike somewhere and then walk around, it is awkward to carry a typical pannier around; even those with should straps tend to be uncomfortable and goofy-looking.

I got the idea of a pannier that holds another bag from this web page:
http://www.backpacking.net/makegear/panniers/index.html#top
His design wasn't quite right for me, but I really liked the concept.

My pannier is designed to fit my backpack. It has a short, open pouch at the bottom to set the bag in, and straps on the side and top for fastening the load. I added a tri-glide and strap to my backpack to make it possible to attach it with a single click. Other bags require straps from side to side.


I also made sure it would fit a grocery bag.


The body of the pannier is nylon fabric. There is a pouch at the bottom to hold the load up, and there are plastic clips on the top and sides for straps. A layer of sil-nylon fabric across the back of the pannier forms a pocket for a sheet of plastic. The plastic keeps any bumps in the load from pushing into the spokes when it is strapped in tightly. Diagonal straps run from the front of the pouch to the back. They can be tightened for thin loads. Without them, the front of the pouch would sag into the spokes despite the firm back.

A flat aluminum bar runs across the top so that the pannier can extend past the end of the rack without sagging. Steel straps with rubber covers wrap around the rack and bolt to the aluminum bar. (Nylon webbing would probably do just as well and weigh less.) A second aluminum bar, this one with a U profile, runs diagonally from the front of the pannier at middle height to the back bottom corner, where the bag wants to swing into the spokes. That bar is attached to the frame with the same steel and rubber strap used for the rack and bolted in the middle to the rack support that goes down to the dropout on the frame.

Robot Costume


This a a robot costume that I made for Halloween '07. The mouth is an LCD screen; the eyes are lit by multi-color LEDs. This was my first real foray into amature electronics. It's a good manageable sort of project to learn through for someone with a little programming experience and a few months of electronics tinkering under their belt.


The LCD had a nice strong back light and could display two lines of text. The eyes were plastic cups painted black on the outside, which gave a nice glossy sheen when viewed from the front. I cut out the bottoms of the cups and replaced them with a perforated silver paper made for cross-stitching. Because of the holes, I could see out easily but they looked mirror-like from a few feet away. The LEDs around the eyes were tri-color, essentially three LEDs in one package, giving a full red-green-blue color range. I filled the rims of the cups with hot glue and set the LEDs into that to diffuse the light around the circumference.

The ears were the bottoms of coke cans, punctured for air flow and sanded for a metallic finish. I wanted the case to have a thrown-together look to offset the electronics. The back opened up to let my head in and out, with a velcro closure. There was a USB port at the right temple, a power switch at the back right corner, and a fan at the back left, which I didn't get working in time. I had two additional air vents on the bottom, right under my mouth and nose.


The chest box featured a bunch of buttons, three knobs, and a power indicator light. Each button put a message on the mouth screen and in some case set the eyes to a color matching the message. Another button set the eyes to do a slow random walk through the color range. If the eye color was not forced by the buttons, it was controlled by the three knobs: red, green, blue. One button set the screen to display text coming in over USB, for on-the-fly communication. The chest box also held a battery pack, and power could be taken from the batteries or the USB port when the head was plugged in.

The head housed an Arduino microcontroller. Its input/output pins are limited, so I made an expansion board with a multiplexer to multiply the inputs and two daisy-chained shift registers to multiply the outputs. It turned out to be a great solution for pin-greedy Arduino projects. I'm sure I'll use it again in the future. Writing a set of functions to abstract away the details of the expansion board was really good practice. I was initially afraid that shifting two bytes out the shift registers and latching them every time I needed to change an output pin's setting would be too slow for running the LCD. Silly me, it was actually too fast and I had to put in a delay to communicate reliably. I wrote my own set of functions to run the LCD, working from the data sheet. I recommend that to anyone trying to get started with this kind of thing. It was just challenging enough to make the payoff of a working screen really satisfying for an amateur like me.

Here's a picture inside the head. The nose brace and vents were great for comfort. My head just fit inside. Incidentally, the head is made from the two boxes that the supplies arrived in from Digikey, hot glued together in the middle. It's good to know what size box fits your head, I suppose.

Thanks to J for the two better looking photos.

Photo Booth


This is a portable photo booth that J and I made. It has been popular at Halloween parties, Roller Derby bouts, and even one wedding with a super-hero theme.

It is housed in an old suitcase for portability. Hit the button, pose, and see the picture come up on the monitor. The monitor is a big desktop flat screen bolted to the suitcase. The computer its under the cloth flap. At first it was a slim-but-heavy desktop, but J found a laptop with a broken monitor that has replaced it now to save weight. The camera is not pictured; it mounts onto the vertical bolt behind the handle in the picture above. That has now been switched to a swiveling camera mount off to the side for adjustability.


J whipped up an excellent piece of software that drives the camera and saves the files. We trigger the software with an Arduino micro controller hidden in a book. The Arduino can be triggered by either a button in the book or a foot pedal. For looks, we rewired the USB cable for the Arduino into a long, phone-style coily cord, and used an identical cord for the foot pedal. J has recently added a pair of LEDs to the book cover to indicate when the camera is busy and when it is ready to shoot.


The first time we set up the photo booth, before it was in the suitcase, we used a pumpkin to house the button. At that time we were just using a keyboard hack to control the computer, not an Arduino.



Now K&J have made a fantastic curtain and sign for the booth. Here it is in use.


Thanks to J for the photos!

Sunday, July 19, 2009

Derby Scoreboard Console


Here is a scoreboard console that J and I made a few years ago for the local roller derby team.

The derby team has a projector that they use to display a scoreboard during bouts. The scoreboard is a flash animation running on a laptop. The projection looks great, but sitting at a laptop updating it lacked the refined style that roller derby cultivates. We thought it would be great if they had a good-looking console to use for running the scoreboard.

We wanted a retro-80s look. The buttons are from an arcade supply store. The surface is fake oak-texture contact paper. The edging is plastic T-molding made for stand-up arcade games.

Here it is in use at a bout:


The laptop running the scoreboard is just to the left of the console in the photo. The other two laptops are for tracking statistics during play, so we didn't do much to make things look less nerdy overall.

The two dials at the top are rotary switches that send one of a set of keystrokes when the neighboring button is pushed. They are used to select different decorative elements and inter-titles on the scoreboard. The other buttons control the score count, the clock, the player lists, etc. The dial meter at the top right just looks good; it doesn't do anything.

Here's a shot of the console during construction, before it got dressed:


Despite its size and charming looks, the console is really just a keyboard hack: a set of buttons and switches connected to a PCB ripped out of a keyboard. When you push a key on a typical keyboard, it closes a circuit (or two), letting the keyboard's brain know what key you hit. If you replace that key with a big arcade button, it does the same thing the key used to do but it's more fun to push. The console plugs into the laptop just like a keyboard, and each button or switch causes a keystroke, which the Flash program interprets as a command.

Here is the inside; you can see the bottoms of the buttons coming through the face and the wiring to the keyboard PCB at the top. One benefit of the simplicity is that it has run for three years of rough use without a hiccup.


Thanks to J for the photos!

Giant Trackball

This is a really big trackball.

I was out for a walk, thinking about input devices for a photo display kiosk that J and I were thinking of making to go with a photo booth, when I spotted this bowling ball in a give-away pile on the sidewalk. What could be more fun than a giant bowling-ball trackball? I took the ball home and made a quick and dirty prototype.

I took apart an old Apple optical mouse, removed the circuit board, and set it into a piece of scrap wood. Its button was a simple switch, so I soldered leads to it and ran them out to a big arcade button. Then I set three transfer bearings into the wood to support the ball.

And, strangely, it just worked. The mouse expects a certain distance between its sensor and the surface it's tracking, but a little tweaking got it to the right depth.

I find it very amusing to use. It's nice to use two hands on an input device, and the inertia is satisfying. We didn't end up developing it any further for a few reasons. First, it's heavy, and the photo booth needs to be portable. Second, since the mouse is upside down the vertical axis is reversed. I'm sure it could be switched in software if I ever find a good use for the thing.

One problem that I was surprised not to have was the bearings falling into the finger holes in the bowling ball. You don't have to turn the ball very far to navigate around a computer screen, so the holes never get far from the top, at least in a short session.

Just recently I saw a post on Make blog that someone had made a similar giant trackball as a dedicated controller for a video game about rolling a ball (called "Katamari Damacy"), which I bet is a lot of fun.

Shower Curtain Prank




This is a another trick from Halloween '08. When the victim sat down on the toilet, a hand suddenly appeared behind the shower curtain.

This apparatus was set in the bath tub, with the curtain closed. When it was activated, the lamp turned on, back-lighting the curtain, and the cardboard hand rose up and slapped the curtain. It was very surprising, and the goofy cardboard hand profile cast a very convincing shadow. I was proud of the timing of this prank. The light drew your attention, and the rising hand made an amorphous shadow that became recognizable just as the hand made an audible slap against the curtain. There was just enough time for your mind to register a distraction from the light, then something moving toward you, then the sudden recognition of a person where (and when) you really don't expect one. It elicited strong language from some guests.

The motion was provided by the carriage mechanism of an inkjet printer. There is a small motor that runs a long belt; in the printer, the belt pulled the ink carriage across the width of the paper. The motor and belt were supported by a piece of sheet metal that was easy to screw down to a wooden base. I clamped a hinge to the belt with a bolt through two washers, and put the hinge on a strut that lifted the hand. The cardboard hand you see is stapled to another strut, which is hinged to the base at the bottom. The motor was very weak and I used cheap, sticky hinges, so I used a bag of pennies as a counterweight to make the hand rotate smoothly.


The control was done with an Arduino micro controller. It was triggered by a switch on the toilet seat--two wire coils under the seat were separated by a piece of sponge so that pressure on the seat squished the sponge and made the wires touch. The Arduino turned on the light using an H-bridge to control a relay in line with the lamp's power cord. Then it ran the motor to swing the hand out and back again. The motor was also run with an H-bridge (there are two bridges in the one chip in the photos).


The belt couldn't run too far or the hinge would hit the pulleys and probably burn out the motor, so I needed a way to recognize stopping points on each end. This was done using an optical switch from the same printer that provided the motor and belt. The optical switch is shaped like a horse shoe and senses when there is an obstruction between its arms. I connected it to the belt where the arm was hinged and set it to slide along a piece of cardboard. At the far ends of its intended travel, I punched holes in the cardboard. When the optical switch rode over a hole, it turned on and the the Arduino knew that it should stop.

Under-Couch Zombie Arm

This is a trick from Halloween '08. We hid this gizmo under the couch, and the arm would reach out and touch people's ankles, causing fear and amusement. Anyone with a web-enabled phone at the party could bring up a web page with controls to operate the arm.

The arm is stuck onto an old camera tripod with a crank to extend and retract the camera mount. I replaced the crank arm with a little dc motor. The motor was controlled by an Arduino micro controller through an H-bridge. The Arduino has to know when the arm is fully extended or retracted so that it won't keep trying to move it and burn out the motor. To make that possible, I embedded magnets in the extension arm and put a Hall-effect sensor on the tube. The sensor knows when a magnet is right under it, indicating that the full range of motion has been reached. The magnets are placed with different poles facing the sensor, so it can tell which end it is at and refuse to turn the motor any more in the that direction.

The Arduino communicated with a computer hidden behind the couch. The computer was serving a web page on the local wireless network with button controls for the arm, so anyone with a web-enabled phone could bring it up and operate the arm remotely form anywhere in the apartment.

The arm itself is a latex cast gone wrong that I had left over from a previous Halloween. The mold was contaminated with soap residue, so the casts came out with a lot of imperfections. With the right paint, it made a good zombie arm.

Full extension:

Wiring: