Blue Gauntlet Fencing Helmet Ear Grommet

Our Larval Engineer practiced fencing for several years, learning the fundamental truth that you should always bring a gun to a knife fight:

Fencing - taking a hit
Fencing – taking a hit

It’s time to pass the gear along to someone who can use it, but we discovered one of the ear grommets inside the helmet had broken:

Blue Gauntlet M003-BG Helmet - broken ear grommet
Blue Gauntlet M003-BG Helmet – broken ear grommet

The cylinder in the middle should be attached to the washer on the left, which goes inside the helmet padding. It’s a tight push fit inside the washer on the right, which goes on the outside of the padding. Ridges along the cylinder hold it in place.

Being an injection-molded polyethylene part, no earthly adhesive or solvent will bother it, soooo… the solid model pretty much reproduces the original design:

Fencing Helmet Ear Grommet - show
Fencing Helmet Ear Grommet – show

The top washer goes inside the padding against your (well, her) ear, so I chamfered the edges sorta-kinda like the original.

There are no deliberate ridges on the central cylinder, but printing the parts in the obvious orientation with no additional clearance makes them a very snug push fit and the usual 3D printing ridges work perfectly; you could apply adhesive if you like. The outside washer has a slight chamfer to orient the post and get it moving along.

The posts keep the whole affair from rotating, but I’m not sure they’re really necessary.

Printing a pair doesn’t take much longer than just one:

Fencing Helmet Ear Grommet - build
Fencing Helmet Ear Grommet – build

It doesn’t look like much inside the helmet:

Blue Gauntlet M003-BG - replacement ear grommet - installed
Blue Gauntlet M003-BG – replacement ear grommet – installed

The OpenSCAD source code as a gist from Github:

Kenmore Progressive Vacuum Cleaner vs. Classic Electrolux Dust Brush

Vacuum cleaner dust brushes, separated by millimeters and decades:

Kenmore vs adapted Electrolux dust brushes
Kenmore vs adapted Electrolux dust brushes

The bulky one on the left came with our new Kenmore Progressive vacuum cleaner. It’s fine for dust on a flat horizontal or vertical surface and totally useless for dust on actual objects. It’s supposed to snap around the handle at the end of the cleaner’s flexy hose, where it helps make the entire assembly too large and too clumsy, or on the end of the “wand”, where it’s at the wrong angle. The bonus outer shell slides around the stubby bristles in the unlikely event they’re too long for the flat surface at hand.

The brush on the right emerged from the Box o’ Electrolux Parts that Came With The House™, must be half a century old, and consists of a cast aluminum lump with various holes milled into it, adorned with luxuriously long and flexible horsehair. Suffice it to say they don’t make ’em like that any more. Heck, they probably don’t make horses with hair like that any more, either.

The blue plastic adapter atop the aluminum ball looks like you’d expect by now:

Electrolux Brush Adapter
Electrolux Brush Adapter

The short snout fits neatly into the space available inside the ball. The abrupt ledge at the top of the snout, of course, didn’t work well; I rushed the design for a show-n-tell.

The OpenSCAD source code (as a Github gist) bevels that ledge and tweaks the interior air channel a bit:

That’s  supposed to prevent the WordPress post editors from destroying the formatting…

Logitech M305 Mouse Switch Cleaning

While installing Mint on the Lenovo Q150, I discovered that the right button on the (long disused) Logitech M305 wireless mouse wasn’t working. After replacing the batteries (always check the batteries), it still didn’t work, so I peeled the four slippery feet off the bottom, removed the screws, and confronted the interior:

Logitech M305 mouse - interior
Logitech M305 mouse – interior

Much to my surprise, the button switches had removable covers:

Logitech M305 mouse - switch disassembly
Logitech M305 mouse – switch disassembly

I put a minute drop of DeoxIT Red on a slip of paper, ran it between both pairs of contacts, removed a considerable amount of tarnish, reassembled in reverse order, and it’s all good again.

The glue on the back of the slippery feet didn’t like being peeled off, so I expect they’ll fall off at some point.

It’s much easier to drive a GUI with three functional buttons…

[Update: Long-time commenter Raj notes:

I always had problem with the middle button. I have replaced them a few times and learnt that they come with different operating pressures. The soft ones are hard to come by. I found an alternate in the PTT switches on Yaesu handies in my junk.

That’s the blocky switch to the left of the shapely wheel cutout.]

Chiplotle: Better RTS-CTS Handshake Hackage

With hardware handshaking in full effect, the Chiplotle routine that sends data to the HP 7475A plotter doesn’t need to sleep, because the Linux serial handlers take care of that under the hood. Rather than simply comment that statement out, as I did before, it’s better to test the configuration and only sleep when needed:

The routine that extracts values from ~/.chiplotle/ is already included (well, imported) in the distribution’s file, so all we need is a test for (the lack of) hardware handshaking:

   def _write_string_to_port(self, data):
      ''' Write data to serial port. data is expected to be a string.'''
      #assert type(data) is str
      if not isinstance(data, basestring):
         raise TypeError('string expected.')
      data = self._filter_unrecognized_commands(data)
      data = self._slice_string_to_buffer_size(data)
      for chunk in data:
         if not get_config_value('rtscts'):
             self._sleep_while_buffer_full( )

The wisdom of reading a file inside the innermost loop of the serial data output routine may be debatable, but:

  • The output is 9600 b/s serial data
  • The expected result is that we’re about to wait
  • Plenty of smart folks have improved file I/O, so the read is probably a cache hit

For all I know, it doesn’t actually read a file, but consults an in-memory data structure. Works well enough for me, anyhow.

The configuration file I’ve been using all along looks like this (minus most of the comments):

# -*- coding: utf-8 -*-
serial_port_to_plotter_map = {'/dev/ttyUSB0' : 'HP7475A'}

## Serial connection parameters.
## Set your plotter to match these values, or vice versa..
baudrate = 9600
bytesize = 8
parity = 'N'
stopbits = 1
timeout = 1
xonxoff = 0
rtscts = 1

## Maximum wait time for response from plotter.
## Every time the plotter is queried, Chiplotle will wait for
## a maximum of `maximum_response_wait_time` seconds.
maximum_response_wait_time = 4

## Set to True if you want information (such as warnings)
## displayed on the console. Set to False if you don't.
verbose = True

That’s much prettier…

Gorilla Glue: Cured in the Bottle

So the dishwasher ate another rack protector, which happens a few times a year. I’m getting low on spares, so maybe it’s time to run off a few in cyan PETG to see if the cute support structure will still be removable:

Dishwasher rack protector - support model
Dishwasher rack protector – support model

Anyhow, this time I used urethane glue, because the last of the acrylic caulk went into another project. I store the Gorilla Glue bottle upside-down so the entire top doesn’t cure solid, but:

Gorilla Glue - cured in bottle
Gorilla Glue – cured in bottle

Usually, it’s just cured in the snout. This time, the layer across the bottom was a few millimeters thick and the glue below seemed rather thick. I tossed the solid lump, slobbered a dab of thick goo on the dishwasher rack, jammed the new protector in place, replaced the cap, and declared victory.

That’s why I no longer buy that stuff in The Big Bottle…


Squirrel Sprint

Rolling through the back of the Vassar Campus, watching a murder of crows on the lawn, when all of a sudden:

Fast Squirrel - 0258
Fast Squirrel – 0258

That squirrel passed about three feet in front of Mary’s bike, running flat out and, at 60 frame/s, touched the ground every 200 ms:

This slideshow requires JavaScript.

Figuring a squirrel body+tail is 1.5 ft long and it covers 3 of those units with every leap, it’s moving at 22 ft/s = 15 mph. That’s about as fast as we travel…

Sony HDR-AS30V vs. STK NP-BX1: Power Estimate, Redux

After 95 minutes on a pleasant ride with temperature around 55 °F, the STK C battery had 0.59 W·h remaining (dark green trace):

Sony NP-BX1 - STK used - Wh scale - 2015-12-12
Sony NP-BX1 – STK used – Wh scale – 2015-12-12

The last time around, it had 1.85 W·h after 61 minutes. Subtracting the two (and ignoring that it may have started with slightly different charges and behave differently at different temperatures) says the camera used 1.26 W·h = 76 W·min in 34 minutes, which averages out to 2.2 W.

That’s close enough to the “a bit over 2 W” figured from those partial-to-empty measurements for me.

The discharge tests from early November:

Sony NP-BX1 - Wasabi FG - STK ABCD - Wh scale - 2015-11-03
Sony NP-BX1 – Wasabi FG – STK ABCD – Wh scale – 2015-11-03

The best STK battery (D) holds just under 4.2 A·h, so its absolute longest run time could be 110-ish minutes. That graph shows the A cell was just about done after 75 minutes, so changing the battery after an hour still makes sense; you never know what will happen during the last few minutes of a ride…