Thank you, Electronics Goldmine

I admit it, I have an addiction to things that call themselves bargains. Down in the basement are multiple cubic feet of random electronic and mechanical components that looked like a good idea or might be useful someday or just seemed like too good a deal to pass up. 25 Magnets with holes in them. 100 trim pots that almost fit breadboard spacing. 500 sets of 3 green LED in some kind of indicator mounting…

Some of these things I have found a use for, like the hall-effect sensors or the optical interrupters. Others I probably never will, like the 20-watt 10-ohm resistors. But last week my addiction did me proud.

After about 15 years of use, the good kitchen thermometer stopped working. You know, the kind where you poke the tiny tip into meat or bread or sugar syrup and get an instant, accurate reading. The kind that takes a weird battery size that no one used to stock. It just didn’t work any more. Didn’t turn on, even with a fresh battery.

So what the heck, I pulled off the stickers over the screws and opened it up, and found that it occasionally did work when you pushed on the body just right. There’s a sweet cam-and-microswitch arrangement that turns the thermometer on when you rotate the probe away from the body. Oh, and the microswitch had green corrosion coming out of its case. Hmm.

Yep, when I shorted the contacts, the thermometer turned on just fine. But how to repair or replace the switch?

Oh, wait. A tray of 100 of the smallest microswitches you ever saw for $5. So tempting that I forgot about the first tray I bought and got another one a year later. And be careful opening it up, or they go everywhere. Clipped the leads on the old, dead switch so they stood up from the circuit board. Butted the leads on a microswitch against those. Soldered, bent the switch actuator out a bit to meet the cam. Done.

Every now and then all that crap in the basement comes in handy. And if this switch corrodes, I’ve got another 190 where it came from…

Posted in possibly useful, probably boring | Leave a comment

Ok, this is actually useful

And it only took me 9 years to notice. It’s an openscad script for making keyboard feet. Thank you.

Not such a big deal at home, but at a school with donated computers of interesting provenance and a couple dozen energetic kids this might turn out to be really useful. After I get enough different measurements for various keyboard models, I might even post a revision where you just tell the script which keyboard you have and it sets all the dimensions.

Posted in possibly useful | Tagged , , | Leave a comment

Possibly the creepiest Christmas ornament of 2020

Zapped on my glowforge, slightly modified from a design by IconPai at the Noun Project.

Every year I take the bottom however many inches have to come off our tree to make it fit the living room ceiling and slice some disks on the miter saw.  Then I zap them into ornaments.  The wood is green as it gets,  so the ornaments usually warp all to heck and get tossed with the tree,  but it’s fun while it lasts.

This one might be a little too Masque of the Red Death tho.

Posted in Uncategorized | Tagged , | Leave a comment

Something actually useful

Our dishwasher is getting to be a certain age. And the plastic parts are showing it. Especially after one of the youth tripped over a cat and onto the bottom rack. When the wheels fall off they have a really unpleasant tendency to lodge against the heating element and melt/char. It stinks up the whole interior.

pegSo I fired up Openscad and my cheap plastic vernier calipers. First, a peg to hold the remaining wheels in place after the old pegs failed. I am kinda proud of the divot that lets the peg bend inwards, because it’s straightforward openscad code (possibly even amenable to turning into a module) rather than something with polygons (I hate polygons). Less proud of the overhang at the top of the peg, which would have been steeper. But with the cheap plastic calipers I wasn’t really sure of my measurement.


For the wheel, I just combined measurements of the existing wheel with the peg design, and presto! The result is a one-piece part that probably would have been hard for the manufacturer to injection-mold cheaply. carousel_dwinplace Speaking of cheaply, the cost estimator on my octoprint installation figured the price of 4 pegs — made out of recycled PETG from the late, semi-lamented Makergeeks — as something like 48 cents. Even factoring in the 20 minutes of design time, I think I may have beaten the $36.98 for an OEM replacement (you can only buy the whole carriage) online.

(And if your dishwasher is suffering similarly, you can check the files at Youmagine.)

Posted in possibly useful | Tagged , | Leave a comment

Posted without comment

No, that’s not a trick of perspective
Posted in things that don't work, Uncategorized | Leave a comment

Failing to fail

I’ve been working on and off with Blinkinlabs’ BlinkyTape and pixels, which means also with their nice little app PatternPaint, which lets you create little light shows to download to their LED strands without all the annoying number-fiddling that is LED images on Arduino.

But when you have an LED strip with controller built in you have a few obvious potential problems. First, each of those LEDs can draw up to 50 milliamps when cranked up full, so about 3 amps for a 60-chip tape. Put the wrong pattern on there, and good luck talking to the controller chip over a standard USB port while it’s trying to draw all that current. Second, you need a really reliable USB protocol that can handle transmitting and receiving data while the microcontroller is running flat out handling the pretty blinky part. Third, some computers’ USB drivers and hardware are rock solid, others (many macs, for instance) are garbage.

So start by splicing extra power connectors onto the back of the blinky tape (extra points for avoiding ground loops) . Then find out that the usb connection still works only a few percent of the time, for various reasons including serial-driver bugs in the version of the Qt framework it’s built with. Here’s where it gets interesting, in the sense of the curse:

The latest version of PatternPaint is supposed to have improvements to the USB stack, including a fixed serial driver and a protocol that is more willing to retry when things go wrong. But the appImage of that latest release segfaults when run on all of the machines I have access to.

Yes, you read that right. The format that’s supposed to have all the bits and pieces its app depends on nicely built in to a custom file system leads to an executable that segfaults. (But not on all machines, because it wouldn’t have passed its release testing.) So it turns out that appimages do rely on a bunch of libraries in the underlying operating system, and in the couple of years since PatternPaint was actively under development some of those libraries have gone away or moved or been altered in some incompatible way.

So it’s time to start building from source. Download a current version of Qt and fire up the compilation script. No luck. Apparently the dependencies on a previous version were real. (or not, as we will later see) The version specified by the Blinkinlabs instructions isn’t even on the list of recently-obsolete versions you can download, but it is in the Qt archives.

Still no luck. But a few searches on the error messages tell me that some libraries that used to be present by default in Debian/Ubuntu are no longer present in recent versions, hence also not in the debian-derived BunsenLabs OS that I’m using here (because it’s what we’ve got at the school where I hope to deploy this insanity at some point.) Download the right version of mesa-dev and jasper, and try again. Still a failure. Turns out I’m supposed to have installed linuxdeployqt in the same directory as I’m compiling from.

So now everything chugs through endless pages of messages, and success is announced! I even get the request to post my appimage so that everyone else can use it. But no. right after that there’s an error message that tar cannot stat something for some reason and the whole process has failed. And the only way to figure it out is to start digging into the guts of the linuxdeployqt appimage or its source.

I’m about to declare defeat — or at least post an issue — when I decide to look into the build directory and see if I can at least figure out what tar was trying to package up. There’s a PattenrPaint.blah.blah.tar that’s empty — sad! — and there’s a file called PatternPaint.2.4.1.blahblah.appimage.

What the heck. Yes, I click on it and it’s a perfectly good appimage. Doesn’t segfault, brings up the splash screen. Talks to blinkytape on machines where the previous version wouldn’t. I have what I need, I just have this really uncomfortable feeling that that final error message is really supposed to mean something and I should find out what.

Posted in probably boring, things that don't work | Tagged , , | Leave a comment

Lasercar Lives!

I know it’s not much, but the new version is ready for coding. It knows how far it is from obstacles (in front), it steers, it goes forward and backward. And it does it all in python. Code and current SVGs on Github any day now.

About half of the solderless breadboard is still available for more sensors, servos, motors and so forth. Also for a level-shifting chip if there’s a 5-volt part that absolutely won’t talk to a 3v3 controlller otherwise.

Almost all of the parts are laser-cut (I stole the front wheels and axle from a copy of the earlier 3D-printed version. Cutting time on a Glowforge is about 10 minutes.

Yes, this is as boring a video as you would expect
Posted in possibly useful, toys | Tagged , , | Leave a comment

In praise of useless information

About a year ago, back when we were still doing laser night at Local64, C did a nice backlit laser-cut sign for me to put in the door downstairs, using a font that wasn’t properly speaking a stencil but still kept all the interior bits of letters attached. About a month ago I started thinking about getting around to making a similar sign for the maker space at Pacem, so I asked him if he could remember what font he’d used.

No clue. And thanks to the move it wasn’t on any of our machines any more. So how to find it? (Remember that when you upload a file for zapping by the Glowforge you have to convert all your text to paths, because the servers don’t know anything about fonts.) No likely sites in browser histories. No luck at all with font-comparison sites (which basically image-processed away the single-stroke feature that made this font so distinguishable).

OK, so the title probably gave it away. I looked inside the original SVG file with a text editor, and when Inkscape converted the text to a path way back when, it obligingly left style information for that path telling what font it had once been rendered in, and a “label” property with the original text. Gosh all hemlock. I don’t know if that stuff was there to support undo, or because it’s simpler to leave it there than to delete it from the nodes in the file, but that’s what the software does.

Oh, and the font: Library 3AM, by designer Igor Kosinsky , to whom my thanks. I think for the next sign I’m going to use the “soft” version. If only there were italics…

Posted in possibly useful, probably boring | Tagged , | Leave a comment

Let There Be Light

I remixed an old openscad christmas tree design to include space for a coin cell and an LED. Coincidentally I have a bunch of green LEDs lying around — their light gets through the plastic a lot better than the white ones.

I made one with space for a regular 2032 coin cell, and one with space for a rechargeable 2450 (which doesn’t last nearly as long). You could remix again for AA or AAA, but then you’d need a real circuit instead of just sliding the cell into the space between the two leads of the LED.

(Caution: the space between the LED  and the battery has to be longer than you think, or else the negative lead will bend so that it creates a short between the negative face of the coin cell and the rim of the positive face. Good thing coin cells can’t deliver much current.)

You’ll also need to put sticky tape on the back side of the coin cell to pull it out or use pliers with some kind of insulation, because it turns out those little so-and-so’s are slick and hard to pull out by hand. Or maybe I’ll fab some nonconductive tweezers…

Posted in making, possibly useful, toys, Uncategorized | Tagged , | Leave a comment

Coming soon: Lasercar

It takes a 21st century laser to return motorized widgets to the medieval era.

I’m redesigning my basic robot car for the Glowforge — partly for convenience, partly just because I can. The laser cutter is way faster than a 3D printer for design iterations, even if the design itself  is more complicated and tends to need glue.

The two big issues for the wheel were getting all the interlocking parts to actually interlock, and getting a good fit with the standard gearmotor shaft. With the 3D printed version, you have to add an offset to the size, because the printing process tends to make holes smaller. With the laser-cut version, you have to subtract the offset because of kerf. (But of course the kerf isn’t uniformly predictable when cutting small objects, because the laser head doesn’t get up to full speed when cutting tiny little arcs and line segments.) It was nice being able to do a new test part in inkscape, upload it and have the result in a minute or two.20191019_1641544938995840075715437.jpg

It took three tries to get the hub cutout  just right, and a couple of iterations for the size of  the hub, which has to clear a locating pin on the motor. (I could get it smaller if I wanted to play with the axle pegs, but no obvious reason to do that.)

Oh, and that score on the inside of the wheel, which might want to be a bit deeper, is so that I can slip in a little ring of cardboard with optical-encoder slots cut out of it. I discovered last year with the 3D-printed version that some ostensibly opaque plastics don’t block enough infrared light to trigger an optical sensor. Oops.


You can see in the next picture how the laser-cut wheel compares to the 3D printed one, and get a rough idea of the 3d-printed body (which uses a half-length adhesive-backed solderless breadboard to provide structural strength). The laser version will use the wood for strength because it doesn’t take any more time (or plywood) to cut a stronger undercarriage.Replace 3d printing with laser for strength and build speed.

I’m going to need that additional strength because of a seemingly unrelated change, namely switching the programming language from Arduino to CircuitPython. Which means also switching from 5 volts to 3.3, only my inventory of sensors and motor driver chips and all that stuff is still 5-volt. So I need room on my solderless breadboard for some level switchers and voltage dividers, and even with the smallest practical controller board I’m going to have to use a full-length breadboard. On the plus side, I won’t have the battery hanging way out on each side.

I’e been doing all this work, btw, at the recently opened Pacem community makerspace, so I’m hoping to get a bunch of other folks interested in having little robot cars zipping around and interacting with one another. With a laser cutter, there’s also plenty of room for customizing and decoration.

Posted in Uncategorized | Tagged , , , | Leave a comment