Gorilla Glue Allergy

I used Gorilla Glue in several of the projects that I worked on last week. I’ve used it before without incident, but I think the continuous exposure over the week was enough to trigger a reaction. I got symptoms like dyshidrotic eczema, that is, tiny blisters filled with clear fluid and surrounded by raised, itchy, red bumps. On top of that, anywhere that I had already been having an allergic reaction (poison ivy and mosquito bites) flared up with its own constellation of welts. My fingers also swelled up enough to make it difficult to make a fist.

I’ve been treating it by taking dyphenhydramine (benadryl) regularly, and applying 1% hydrocortisone ointment in the morning and evening. The ointment is kind of a greasy mess, so I wear hypoallergenic chloroprene gloves after putting it on. It is gradually getting better, especially on the areas that get the most hydrocortisone coverage.

From now on, though, I’m going to put the gloves on before I use the glue, so I don’t have to use them for days afterwards.

ToyBrain boards on the way!

The PCBs for my programmable toy controllers are on their way to me. That means that I didn’t mess up the layout in some way that makes it impossible to make the boards, but doesn’t preclude me possibly getting something wrong in the design. I’m going to assemble a few when they arrive and shake them down for layout defects. I also have a beta tester who wants to use one.

One thing I’m considering for the next version is adding an on-board voltage regulator, but that usually calls for caps as well, and starts to drive the board size and price up.  I should also add mounting holes, but again, those take board real estate. I may neaten up the connector layout, and make sure everything is on 0.1″ centers for ease of mounting with normal pin headers. If I get all the through-hole connections moved to the edges of the board, or add edge connectors that make good wire lands and good header connections, I may be able to shrink the board more and not have many pins sticking through it. That would mean it would have a smooth bottom, and so be easy to mount with double-sided tape.

Stepper Drivers

I have three head-positioning assemblies from CD-ROM drives. In the drive, they would move the optical components around to read the various parts of the disk. Removed from the drive, I’m planning to use them to make very small CNC machines. The head positioning assemblies use bipolar stepper motors, which turn a threaded rod, which draws the optics along.

Normally, I use the electronics from floppy drives to control stepper motors. The floppy drive interface has step and direction pins that directly control the motor used to position the head of the floppy disk drive.

Unfortunately, all of the floppy drive motors I have around used unipolar stepper motors. This makes driving them slightly easier, as power is supplied to the motor on one wire, and all the other windings are driven with current sink drivers. As a result, each winding is either on or off, but the current always flows through it in the same direction when it is powered.

All the stepper motors I have are bipolar stepper motors. Instead of current sink drivers, they are driven by a driver that can reverse the direction of the current flow through the motor windings. I can think of ways to drive a unipolar motor from a bipolar driver, but I’m not seeing any good way to drive a bipolar motor from a unipolar driver.

I may end up just building my own drivers, and running them with an Arduino or other microcontroller. I have all the parts, and it’s certainly cheaper than buying a bunch of drivers.

Xybernaut Head Mounted Display to VGA hax!

I have a Xybernaut Xyberview HMD, which originally connected to a Xybernaut MA-V or MA-IV wearable computer. Xybernaut went out of business after some questionable corporate shenanigans, but while they were around, they made a solid product. Unfortunately, they used a custom, or at least obscure, connector to hook that solid product together.

Thanks to the Wayback Machine, I’ve found the pinouts for the connector, and wired mine up so that it takes a standard VGA input. I also built a power supply for it, because it needs 5V and 15V power. The power supply takes 15V from a laptop power brick and drops part of it to 5V while also providing a 15V pass-through. I used a switching regulator, because otherwise I’d be dropping 10V at unknown current as heat.

I initially had the red and blue lines of the VGA connector crossed, but I think that is because they are crossed in the instructions that I found. My corrected pinout is below. If you happen to actually be equipped to do this hack, please do let me know if I made an error, and your terribly expensive, extremely obscure hardware from the mid ’90s somehow fails to work.

The HMD connector has two rows of pins in a connector that looks a little like a miniature Centronics connector. Assuming the longest edge of the connector is on top, there are 13 pins in the upper row (U1-U13) and 13 pins in the lower row (L1-L13).

Wire colors are described as the color of the wire, the color of the mark on it, and whether the marks are sparse. So Yellow/Red (sparse) means a yellow wire with a red mark on it that is less dense than the wire described as Yellow/Red. You’ll know it when you see it.

Signal Name       Xybernaut  Wire Color             VGA Pin
Red               L4         Pink/Red (sparse)      3
Red ground        L3         Pink/Black (sparse)    6
Green             L2         Yellow/Red (sparse)    2
Green ground      L1         Yellow/Black (sparse)  7
Blue              U14        Gray/Red (sparse)      1
Blue ground       U13        Gray/Black (sparse)    9
H Synch           L6         White/Red (sparse)     13
V Synch           L7         White/Black (sparse)   14
Synch ground      U10        Pink/Black             10
+5V               U1         Gray/Red
+5V               U2         Yellow/Red
+5V               U3         White/Red
+15V              U5         Pink/Red
Digital ground    L13        Yellow/Black           5
Digital ground    L10        Gray/Black
Digital ground    L5         White/Black
Analog ground     U8         White
Headphone out     L12        Pink
Mic in            U7         Yellow
HMD Sense         L8         Gray                   11

I connected the Gray/Black and White/Black wires to the ground of my power supply, the Yellow/Red, Gray/Red, and White/Red wires to 5V, and the Pink/Red wire to 15V. The display powers up, and I can drive it from my laptop using 640×480 resolution at 60Hz.

Unfortunately, none of this hacking changed the fact that wearing an HMD makes you look like a cyborg from space.

Brain Transplants for Toys

I have a bunch of old toy skeletons sitting around. They are not toy versions of the bones of animals, but the frameworks and some of the motors from things like a toy tracked robot, an RC truck, a few toy robot insects, some tiny RC cars, a robot base with continuous-rotation servos, and so forth. All of these things have motors or servos in them. All of them need some form of controller to make them into autonomous robots to do my bidding (or wander around banging into things).

To that end, I’ve developed a little embeddable controller around the ATMega8, ATMega48/88/168, and other pin-compatible microcontrollers. That is the same chip used in the Arduino, so my board will be software-compatible with the Arduino as well.

My controller, which I’m calling ToyBrain, has a pair of 1A (stackable for more current) H-Bridge motor drivers, so it can control up to four motors in one direction, two motors bidirectionally, or one stepper motor. It also provides two headers for servo motors. For inputs, it has four analog or digital inputs and two digital inputs that are connected to interrupt lines, so it can do things like handle bumper switches in an interrupt service routine.

I’ve ordered 10 boards. When they arrive, I’m going to populate them with whatever chips I have around and try to get a few of my old toys running. Assuming everything goes well and I get a polished device together over the winter, this may end up being something I sell at the MIT flea regularly. I’ll hook up a bunch of toys with the same controller, to show off its versatility, and offer the controller as a kit people can buy.

Reactive Inflatables

I’m working on a project to make inflatable sculptures that react to contact. The inflatable shapes are sewn together out of materials like umbrella fabric and ripstop nylon. Those fabrics block air well, and so a shape made of them can be inflated by a fan.

I am planning to have them react to contact by monitoring the speed of the fans that inflate them. If the inflated shape is pushed, the air pressure in it will increase, and escaping air will try to turn the fan backwards. This should show up as a decrease in fan speed, which I can detect with a microcontroller. The fans are computer cooling fans, so they already have speed sensors built into them. The speed sensors were originally intended to allow the computer that the fans cooled to detect fan failure and shut down gracefully.

I have a couple of inflatable shapes together, but I need a beefier 12V benchtop supply to run them. each fan draws 1.1A at 12V. That is a lot more than a normal computer fan, but these are high-volume server cooling fans, so they move a lot more air.

Unresolved imports in Eclipse/Pydev

The Pydev plugin for Eclipse (at least on my system, Ubuntu Linux on a PC) has a hard time with imports, reporting them as unresolved when Python can actually find them.  I find this particularly bothersome when I do projects with OpenCV and Beautiful Soup, as it can’t find either of them and so can’t do code completion.

This thread has the answer. In case that goes away, what you need to do is this:

Go to Project Properties -> Interpreter -> the “Configure an Interpreter not listed” hyperlink

Uncheck and recheck the box next to the interpreter you are already using (probably the default one), or make some other change that doesn’t really change things.

Hit “Apply” and go for a soda while PyDev reindexes things.

Open some file with the bogus unresolved import and make an edit, then save it. Pydev will recheck the imports and stop whinging about the unresolved ones.

As they say on the Heart of Gold, anything you cannot deal with now is your own problem.

HTTP status codes

I was reading up on HTTP status codes, and I got a bad idea. There are a small number of official status codes, like the ubiquitous 404 (file not found), an even smaller number of less-official status codes, like 418 (I am a teapot), and a lot of undefined status codes.

So what happens if a browser gets an undefined status code? What if it gets a malformed code? Writing a simple test for this would be easy. It would just be a web app framework that returns whatever you pass it on the URL as the error code, so www.example.com/errorCodes/200 would get you HTTP OK, while www.example.com/errorCodes/499 would get you the undefined code 499.

I would hope that the browser runs the code past its short list of defined codes, doesn’t recognize it, and shows an error page to the user saying something like “The server returned an invalid error message. It may be misconfigured. Please try back later.”

However, some browsers may mishandle the message, and hand anything that starts off with, say, 2xx to the page renderer, whereupon things might go horribly awry. I hope modern browsers are immune to this sort of shenanigans, but it may be no one has beaten on them in that particular way.

Seizuredome light construction photos

The Seizuredome light is an icosahedron made out of aluminum. Each face is 5.5 inches on a side, so the whole thing ends up being about the size of a soccer ball. Each face has three 1″ aluminum spikes sticking out of it, so that when it is not hanging, it does not rest on any of the LEDs.

The light started life as a sheet of aluminum, 24″ on a side. I plotted the net of the icosahedron by constructing a bunch of equilateral triangles with a compass and straightedge. Geometry class is only useless if you’re not planning to make anything interesting in your life.

Vindication for geometry teachers

After that was all plotted out, I cut it out with tin snips and cut arcs out of the corners with a nibbler. The arcs will make the finished shape have a hole at each vertex. Those holes are where I will run the wires for the LEDs, but they also let me more or less ignore the thickness of the material, which would otherwise possibly make the corners look bad.

Light parts

Then I drilled holes in all the pieces. The holes in the faces are for LED and spike mounting. The ones in the tabs are for rivets that hold the shapes together.

Flat shapes

I bent the flat shapes in an improvised metal brake to get them 3-D, and then riveted them together to hold the shape.

Now in 3-D!

The finished shape seems to fit together pretty well.

The general idea

I added more holes for sheet metal screws. I also added a flat plastic platform inside, so that the electronics have something to rest on, and screwed the spikes to the outside. The spikes are intended to be ornaments for punk clothing, but they mount with screws, so you can stick them on anything you can drill a hole in.

Made of hate

The electronics are also mostly together. I just have to finish up the code, and then mount the control circuit inside, the LEDs outside, and add a power switch.

Seizuredome electronics
 

Mixing software for Linux

As part of my portable sound system, I need something to play. I’m not a DJ, so I’m not going to make mixes on the fly, because I’ll just trainwreck and embarrass myself. Instead, I’m going to carefully tweak and fiddle with mixes at home. That does mean I won’t be able to do the proper DJ thing and have a gradual build, respond to the crowd, etc. Admittedly, some DJs don’t do that either, but I digress…

I also don’t own any records, and only a few CDs. All of my music is MP3s, so I’m going to be making the mix out of MP3s. I’m a Linux user. I have been for 8 years or so. My laptop runs Linux, everything in my house runs Linux, so I’m going to do my mixing on Linux.

Audacity is actively developed, already installed on my machine, and certainly capable of mixing multiple tracks and recording to disk. I know this because I’ve used it before to make a mix of bird sounds, vocals, and machines for a prop that some friends wanted. It supports shifting tempo and pitch, editing MP3s, and adding all sorts of filters and effects.

Mixx also appears to be actively developed, but also looks like it is for live performance. I’m not playing live, so it may be a case of having a great tool for a job that I’m not doing. TerminatorX is also explicitly realtime, and so is not really the tool I’m looking for.

BPMDJ has a lot of sophisticated analysis options (because most club DJs care deeply about Harr wavelet analysis), automixing. On top of that, it appears to be under active development, which is more than I can say about a bunch of Linux mixing tools.

DJPlay looks to be about 4 years old, but may be useful. If nothing else, I can use the BPM counter to figure out the BPM of some of my music and use that as a rough guide for what might mix well. The interface looks like it was designed for live performance, but interacting with controls that mimic physical controls by using a mouse is kind of a recipe for UI disaster.

GDAM is even older, having no new news for the last 8 years. It does, however, support recording mixes to disk. It is intended for live performance, which is not what I’m doing.

Once I’ve installed and played with a few of these mixers, I’ll update this entry with my impressions.

http://audacity.sourceforge.net/Audacity