Shapelock protective case for Laur’s Prius fob

We had a quite unpleasant and mysterious problem with the Prius’ alarm sounding (lights and horn) when we parked in a quiet neighborhood front of some friends’ house.  (For a square dance.)  We got stuff out of the trunk, but when I locked it, the alarm went off.  I opened the trunk and it stopped.  Closed and locked and it started again.  Opened it and it stopped.  Lauren had gone into the house by this time.  I snuck around the car and used a touch pad on a door handle to lock it – and the alarm stayed off!

I went in the house and verified that the panic button on my remote clicked and lit the light.  I went out a few minutes later to check it out, but it worked exactly as it should.  I could lock and unlock, and by press and hold, start the alarm.  Another press turned it off.  Uncomfortable, I went back in to dance.

No alarm when we got back in the car later, but when we got out in the garage at home, it went off again.  Lauren went in the house, and I played a little more.  I couldn’t get it to sound again.  I googled and read various posts about false alarms on Prius, but nothing really clicked.

At some point later it dawned on me that while I perceived myself as the driver, and my fob as controlling the car, the car didn’t care whether it was my fob or the one buried in Lauren’s purse.  We took hers out of her purse and the alarm never sounded again.

The fix

I’m quite confident that something got wedged against the panic button of her fob and caused the problems, though I can’t prove it.  She’s carried Prius fobs buried in her purse for many years, and this is the first time there’s been a problem, but I wanted to make sure it would be the last.

A Shapelock case with some kind of dome over at least the panic button should do.  I started out making raised forms over the buttons, cut out of thick cardboard (poor choice), hot melt glued over the buttons.  I cut a piece of paper to what felt like about the right size for the sheet of plastic I planned to form around the fob.  That would provide a visual size guide later.

I merge leftover scraps of SL and press it into thin sheets so it will remelt quickly.  Not that I’m going to pull out a caliper as I’m forming it, but it looks like around 0.050″ thickness flexes nicely but is still sturdy.  I rolled out a blob of SL to about the right thickness with a thick tumbler, and cut it to about the right size rectangle with a kitchen scissors while looking at the paper template.

It was so thin it cooled substantially while I was cutting it, so I dunked it back in the hot water.  It folded over and stuck to itself, and I had to start over.  Not a big deal.  In addition to the large rectangle I planned to wrap around the fob, I cut another smaller rectangle to go over the panic button so its cover would be thicker and stiffer.  A try or 2 later, I had a Shapelock wrapped fob.  I didn’t want to run cold water over the fob, so I stuck it in the freezer for a minute.


No cigar

Nice try.  One of the cardboard forms came out nicely, but the SL stuck thoroughly to the other.  Don’t use cardboard for this.  The raised part over the panic button (after I clawed the cardboard out) was perfect: a smooth dome definitely strong enough to do the job.  The cross section was visibly thicker than the rest.  Unfortunately, the case didn’t wrap around enough, and didn’t stay on as I wanted.

I cut the case up and remelted it for another try.  (That’s one of the greatest things about Shapelock!)  This time, I used polyethylene covers for the buttons.  Instead of fighting with two pieces of soft plastic to make a thicker part over the buttons, I just cut a small piece to cover them and pressed it in place.  It cooled off pretty much while I was wrassling the larger piece to wrap around the case, but I think they still welded together OK.

This one was much better.  Although the poly covers came out easily,  the SL stuck to the fob way more than it had the first time.  (Oil washed off?)  By the time I’d pried it off, the SL case was kind of sprung, and didn’t stay on well.  I trimmed it up (the vision of wrapping a neatly trimmed rectangle of soft plastic around the fob for a nearly manufactured looking case remains elusive) and dipped the most sprung part back in the water for only a few seconds.  That let me reform it just as I wanted (if uglier).  When it cooled, it was again seriously stuck to the fob.  Huh?

Anyway, it came out great.  It’s a little bulkier that I hoped, but OK.  The protective domes over the buttons look about perfect, and the case snaps on and off satisfyingly.  And I’ll bet we don’t have any more mystery alarm events.

Posted in Miscellaneous, Shapelock stuff | Tagged , , , , , | Leave a comment

Fixing a krubow RF Remote receiver

The USB cable of Les’ RF receiver broke one of its wires to the PCB inside, and resoldering it was difficult/beyond his skill.  He bought a new one (his 3rd!) and brought me the carcass.

The cable had pulled out so far the shield showed, and it was sort of held in with electrical tape.  The stub of the broken white wire on the PCB was very inaccessible, as it was embedded in what appeared to be epoxy.  Huh?  I broke the exoxy out, cleaned the holes in the PCB and cut off and re-prepped the cable end.

To my amazement, I couldn’t get the shield to accept solder at all.  As I tried to re-implement the clever mechanical approach of splitting the shield in two before soldering the other 4 wires, I realized why it had originally been epoxied:  Without being able to solder the shield, it was almost impossible to keep it in place.  I epoxied it, about as Keith had done originally (though I didn’t embed any of the other wires).  I’m guessing he soldered the other wires first, then put the shield thru the holes and epoxied it.

To provide a strain relief (so maybe I wouldn’t have to repair it again) I planned to embed the cable in Sugru.  And to help keep the Sugru in place, some .030″ baling wire rebar was installed.  (Its inside ends were epoxied in place.)

The rebar provided the additional benefit of a nice clamping place for the second bit of strain relief: casting the stub of the cable inside in epoxy.  (No, the case was not expoxied shut.)

Here’s the finished strain relief.  It looks and feels nice, and with the rebar hidden inside, I expect it will last quite a while.  Oh, yeah – the electronics work again, too.

Update ~10/21/17: Well, it was Les’ fault.  We had a C2 session in Skokie, and for the second time, I didn’t have all the parts for the remote control button.  I even knew it – but couldn’t find my receiver.

I’d forgotten that I’d used the leftover Sugru to make a strain relief (no rebar) for my receiver, and had put them both on top of the stereo receiver in the family room as a warm place for them to cure a little faster.  I picked up Les’ receiver and delivered it the next day, but completely forgot about mine.  Slowly – over a couple of hours’ driving to and from Skokie – I thought I might have done something like this.  And sure enough, there it still was!

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

Focaccia slicer

Lauren wanted to made sandwiches out of a round focaccia loaf for an unusually long square dance session.  The question was how to slice it in half neatly.  Plan A was to firmly support both ends a long knife horizontally half a focaccia loaf height above the counter and slide the loaf back and forth past it.  Unfortunately, we didn’t have a knife long enough.

Armed with the “half a focaccia loaf” measurement of 2.6cm and a sturdy Wusthof knife with a flatish handle, I scrounged around in the scrap box and found something with a smooth bottom and just the right thickness.  I drilled the holes for the zip ties at an angle so I’d have less material to remove to recess the zip ties so the bottom would be completely flat.  Here’s the slicer ready to be tested, err, used as designed.

The smooth bottom of the block slid nicely against the counter top, and the knife did its job admirably.  The first loaf was sliced about perfectly; the second showed just the kind of small discontinuity you’d expect cutting thru something with a tool not long enough to cut in one pass.  But it was still completely acceptable.

Here are Lauren’s sandwiches.  They were both beautiful and very good.  She cut each into 8 wedges, with a bamboo skewer in each wedge to hold it neatly.

You can see the shim needed to make up for the slightly curved handle in this “after” pic.  Another successful junkbox quickie!


Posted in Miscellaneous, Uncategorized | Tagged , , , | 2 Comments

Kidde P3010CU false alarm

Our Kidde P3010CU combo smoke/CO detector started to beep and speak “Fire” this morning.  A pretty thorough search of the whole house revealed no smoke, no fire.  Still a little spooked, I considered apologetically calling the fire department, but noting that the Kidde i9010 ionization smoke detector mounted right next to it was not alarming, I held off.  (Neither was another P3010K-CO two half-floors down, but I’d forgotten about that one.)

I fought a couple of battles with its alarm “Hush” feature before I could get it to shut up reliably.  IMHO, the user interface it presents is quite flawed.  When you press the button (which does not present a tactile “click” so you know it was pressed), usually nothing happens.  The blaring alarm and voice saying “Fire” continue as if nothing happened.  Hush mode apparently only takes effect after any beep/voice warning cycle in progress has completed.  Only then does it speak “Hush mode activated”, start a 10 sec LED blink cycle and stop making noise.  Of course by then you’ve probably pushed the button several more times, and it may be that an even number of presses toggles hush mode off again.  (Murphy also does his best to maximize the probability of that.)  The spoken info and LED blink pattern are quite helpful, if you can ever get them to start.  On the plus side, the piezo is pretty well sealed to the front of the device, so putting a thumb (or some duct tape) over it quiets it down a lot.  I was pleased that I’d opted to get both this photo smoke detector and an ionization one.  And I was pleased I’d spent the extra 10 or 20 bucks for one that speaks.

It says if both fire and CO are present, the fire notification takes precedence.  I had psyched myself into thinking I might feel a little woozy, so started looking for CO.  The furnace is in A/C mode and has electronic ignition anyway, so shouldn’t be a source.  The only other gas device is the water heater.  Its flue was cool, so I turned on a hot water tap to force it to cycle on.  I was standing in front of the heater when I heard it fire up.  The flue got hot to the touch in just a few seconds.  Seemed to be working, though with CO it’s probably hard to tell.

I took the detector outside in the clear, sunny 60 degree fresh air, but it kept alarming.  I left it on the front step for a couple of 10 minute hush cycles, and it kept alarming.  I took it to the garage and blew it out with compressed air, and it kept alarming.  I considered taking it to the fire house, but by then I was pretty convinced the device was just broken.

I called Kidde customer support, and after an annoyingly long hold, spoke to a pleasant rep, “George”.  After explaining the situation, he took my name and address and said he’d send a new one (10 days or so), and that they didn’t need the old one back.  When I asked how often that happened, he mumbled something not very helpful.  When asked if blowing it out again/some more might get it working again, he replied that it might, but there was probably just something lodged in the photo path.  I thanked him and said good bye.

Hmm – I read the user manual and it said not to put it close to an attic fan – but that’s right where it’s mounted.  Is that because the fan whisks smoke away too fast, perhaps making it less sensitive?  Or because it is likely to blow junk into the detector and cause false alarms like this?

Now what?

I felt a little naked with no CO protection, but at least we still had the ionization smoke detector.  I can’t keep pressing the hush button every 10 minutes for ever.  Should I activate the no turning back death/deactivate switch on the back?  There was one clip visible from the back that looked like I might be able to open it up, so I tried that.  After releasing it and its three brothers, the unit opened neatly.

The cover holds the piezo and speaker.  The lithium cell was unsurprising.  I didn’t know what to expect for the chemical CO detection cell, but this must be it.  The only mildly interesting bits were what looks like a glass diode mounted up off the board and marked “R55”, and the fact that they’d flowed wax over many (but not all) of the components.  I figured I could at least scavenge the little speaker (but fortunately hadn’t cut the leads yet).  While I had it open, the hush cycle ended and it started alarming again.  The click-less spring contact in the middle was obviously the hush/test button, so I pressed it and started a new hush cycle.

And then there’s the photo sensor chamber.  The top is held down with 3 easily released clips.  I opened it up and noticed with interest that the slitted walls were shaped to provide a sort of swirl pattern inside the chamber.  Or are they just light baffles? The LED and photo detector were clearly visible.  That looks like a barrier directly between them, so maybe it works by IR scattered off smoke particles.

It started alarming again as soon as I opened the chamber.  The optical dark provided by the removed chamber top was obviously wildly violated, and each time I’d start a hush cycle, it would abort the hush just as the manual said it would if there were very dense smoke.  That was annoying, and I’d taken my pictures, so I put the chamber’s cover back on.  It clicked in place reassuringly.


And then it said “Hush mode cancelled”.  And didn’t alarm any more.  Huh?  I ran a test cycle, and as advertised, it played 2 cycles of 3 beeps and “Fire”, and 2 cycles of 4 quick beeps and “Warning, Carbon Monoxide”, and then it was silent.  Had the wildly out of spec light on the detector forced it to reset or recalibrate or something?  I put the main cover back on, and it seated with a satisfying click.

I lit a match (with considerable difficulty: maybe I should get some fresh matches!) and when it went out blew some smoke at the sensor.  It alarmed in seconds, with 3 long beeps and “Fire”.  I pressed the hush switch (only once, having learned that lesson) and saw a little blink.  Though I don’t think I heard the voice message, it did go into the 10 sec blink pattern that indicates hush mode.  I promptly blew the unit out with compressed air.  It continued blinking for a couple of minutes until I pressed the button again.  It said “Hush mode cancelled”.  And it remained silent.  Does smoke detection actually work again?

I started up the 4 stroke Craftsman lawn mower (don’t know how much CO the Prius puts out) and held the detector in the exhaust stream for several seconds, but to my great surprise got no alarm.  I pressed the button for a test cycle, and got 3 long beeps, “Fire”, 3 long, then 4 short, “Warning, Carbon Monoxide”, 4 short.  It ended maybe with one more very short beep.  I held it in the running mower’s exhaust stream again for a good 30 seconds, but nothing.  I used this test on a CO detector before and had no difficulty triggering it.  I can’t believe the mower isn’t spewing substantial CO, so now I have no confidence in the detector’s CO side.  Yeah, I opened it up, but wasn’t aware of doing anything that might interfere with the CO side – and it passed its internal test.

I’ve put this one back up for now, but I’m glad a new one will be here soon!

Update 9/13/17:  As promised, I received the replacement Kidde P3010CU on 9/2, and promptly replaced the old one, using the old mount uneventfully.  Today (9/13) I got around to redoing the CO test, just for the warm fuzzies.  I held the stack of 3 detectors – old and new 3010CUs and the the 3010K-CO from the family room – in the exhaust stream of the 4 cycle mower for a good minute.  To my utter amazement, none went off.

I started the Prius and as quickly as I could, before the catalytic converter heated up, held the 3 detectors in its exhaust stream.  To my further amazement, first one, then a second went into fire alarm mode!  After a minute or so, the engine shut off, as expected.  Between my surprise at fire alarms and a lot of noise (two sets of 3 beeps and at least one saying “Fire!”), I didn’t properly note which detector was doing what.  At some point shortly after the engine shut off, I’m certain I heard at least one set of 4 quick beeps – the CO alert all of them use.

I pressed the terrible “hush mode” buttons, with even less success than expected, and blew all 3 out with compressed air in the garage.  The noise subsided, but the new 3010CU kept up its fire alarm.  Each time I’d press the hush button (well, at least many times:  that button still gives the appearance of being terribly unreliable) it would say “Hush mode activated” and be quiet.  But only briefly: in a few seconds it would go into loud alarm mode again.  That’s consistent with its described behavior in the presence of dense smoke.

It was in the house by then, and I blew it out again with lower pressure air in the shop.  Still the same behavior.  Does the 3010CU have a “stuck in fire alarm” bug?  I whacked it lightly against the heel of my hand.  And it stopped!  Coincidence?  Who knows?  But at least the racket has stopped.

Several minutes later I pressed the button on each to trigger test mode.  The old CU and the K-CO responded with the expected test noises.  But the new CU did not.  I set it next to its elder twin and watched two flashes from the older one and none from the new.  It’s supposed to flash once/min for the first 10 minutes after a test – then once/10 min.  But now I can’t get anything out of the new one.  Major bummer.

The way forward is very unclear, but I put the K-CO back up in the family room and the old CU the the main upstairs hallway location.  Humpf.

Update a couple of hours later: Wow.  Having nothing much to lose, and with the unusual data point that I’d jarred it just before it shut up permanently, I opened the new detector.  I forgot that inserting the pick/release tool outside the foam strip around the outside edge left little/no evidence of tampering.  I hope that fact had been relegated to “should never need this again” status.  Again, I hope to never open one of these again.

I looked first at the power switch.  It was a little to the right of center (as oriented in this picture).  Looking at the label directions on which way to turn to shut it off, it seemed like “to the right” was the off position.  I moved it a little to the left (like by the amount of slop allowed by the white plastic operating dogs flanking the handle) and it beeped!  Maybe it said to press the test button – not sure.  Encouraged, I moved the switch and the white plastic operating mechanism all the way over to the left, which I presumed was ON.  Silence.

There also seems to be interaction with a white tab in the mounting slots that would probably be moved when you first twisted it into place.  A little incredulous, I moved it all so the switch was in the center of its travel (as in the picture above).  It beeped and then for sure said “Press test button” (or close).  I did (using the exposed contacts in the still open device).  It beeped and probably went thru a test cycle of fire and CO.  Great – it looks like it works again!

And then it went into fire alarm.  The first step was to get some duct tape to cover the piezo so I could stand to work on it.  I pressed the hush button (once) several times, and each time that it worked (most) it continued the alarm noise cycle in progress, then finally deigned to say “Hush mode activated”.  A few seconds later it started alarming again.  Bummer.

Now pretty desperate, I recalled that the old one somehow reset after I opened the smoke sense chamber.  I opened that, inspected it (saw nothing), blew at it, and closed it up again.  (All the while pressing the button contacts frequently for a few seconds of quiet.)  No change.  Opened it again, blew it out again, held it more in the light, closed it up.  And hush mode stuck!  I waited a minute or two, put the main cover back on and pressed the button again.  “Hush mode cancelled”.  It’s been quiet ever since.  I ran a test cycle several minutes later, and that performed exactly as expected.

More confident than before that I’d actually somehow fixed it (reset is more like it) and that it was probably working fine again (and relieved of the darned noise), I turned my attention to the unexpected “only center on” switch position.  Fortunately, I happened to have another of the same model of detector which seemed to be working, and whose switch had never been touched. 🙂  I opened that old one back up, and found the switch right in the center of its travel!  That’s the picture above.  Wow.  I wonder if it’s a real 3 position switch, with left=battery disconnected; center=battery connected; and right=detector disconnected and a short/resistor across the battery to render it safe.  Hmm – in not obvious but vaguely appropriate places (for a crowded board) OFF, ON, and DISCHARGE appear in the silkscreen, in support of the 3 position switch theory.

I found a post here (about an i12060ACA) mentioning that Kidde support told her to “… hold the ‘Test’ button down for 2 sets of three beeps, then release. This resets the alarm. ”  I wonder if this is a common undocumented feature?

Terminally infected with the thoroughness bug, I did an actual smoke test on it.  (The matches from the mostly-full carton dated 10/10 that had been sealed in a ziplock bag lit much more reliably than the ones (probably from the same carton) that had been sitting in a parts drawer for some years.)  It took a couple of matches, but it went into alarm, and hush mode activated and shut it up.  I blew it out well with compressed air and hit the button again.  “Hush mode cancelled.”  I’m now confident enough that it works that after I put it back up on the hallway ceiling I’m going to forget about it.  And I suspect the first one is also quite functional.


The specs for CO detection mention times from 4 to 240 minutes, so maybe my expectation of triggering an alarm in a few tens of seconds was inappropriate.  It seems to me the previous successful testing might have been on a dedicated CO detector that had a concentration display.  Maybe I just noted that the display showed more CO.

In any event, I can get a can of spray CO (!?) designed for testing CO detectors for 12 bucks on Ebay.  I’ve read that each test desensitizes/ages the detector, so testing is a double edged sword.  And I don’t think I’ve ever read anybody saying the detectors last over 7 years (OK, except implicitly in the advertising for the 10 year units.)  But it would at least give some warm fuzzies that these detectors I’d opened up still functioned for CO.

I ordered a can.

Update ~10/25/17: I never received the can of CO, so contacted the seller thru eBay.  Though I indicated I still wanted the product, he promptly sent a full refund.  Yeah, I got my money back, but what I wanted was the CO tester!  Bummer.

Update 11/19/17: I woke up at 6AM this Sunday to “Beep beep beep”.  I followed the noise downstairs, walking directly under the (silent) new replacement Kidde P3010CU in the upstairs hallway, and then directly under the (also silent) 3010K-CO in the family room.  As I got closer to the noise, I could hear it speak “Fire” between triple beeps.  Following the noise led to the old, originally failed P3010CU sitting on a self in the basement.

Dumbly holding the annoying noisemaker in my hand, it soon occurred to me thru the morning fog that I could push the “hush” button.  Of course it didn’t shut up, but then recollections of past experiences came back, and I gave it one firm push at the end of a beep/speak alarm cycle.  I don’t know if it had occurred to me that the maybe button is only polled at the end of each alarm cycle.  Anyway, it said “Hush mode activated”.  Good.

And then it started alarming again.  I played the game with the button again, and eventually got it back to hush mode.  I turned it around ’til I found the black plastic smoke sense chamber and gently blew at it a few times.  I pressed the button again, and got “Hush mode cancelled”.  And silence.

After  it appeared to have come to its senses (and passed a basic match-smoke test) after the initial event, I couldn’t stand to just kill it (with the disable/discharge switch on the back), so it was just literally put on the shelf.  And once again, the device failed with a false positive to some non-olfactible stimulus.  But at least this time it had the decency to (at least appear to) recover with a simple ventilation.

It’s back on the shelf now, silent, future unknown, but trusted less.  Kidde did exactly the right thing by promptly replacing it.  I guess such false positive failures are pretty rare (which is a good thing!).  But at least this one is chronicled here.

Posted in Home Repair | Tagged , , , , , , , | Leave a comment

Hot melt glue gun timer

I use hot melt glue a lot, but the warmup time is a problem.  I turn the gun on, go away to do something else while it warms up, and may or may not remember the pending glue job.  I’ve found the gun on 2 days later.  Not good.

I solved the main safety problem a couple of years ago with a mechanical timer.  Now the switch on the gun is always on, but it turns off after 10 minutes or so whether I remember to come back and use it or not.  Of course when I run across the incomplete glue job an hour later, I have to start all over.  An “it’s hot” notification would be very helpful.

While there isn’t easy feedback from the gun when it’s hot (yeah, a current sensor would work), open loop timing is good enough for the task.  Sitting around and observing when the gun was up to temp gave the critical info: a little under 4.5 minutes.

Fifteen lines of Arduino code (plus a couple of #defines) on one of my general purpose ATtiny85s and a little piezo buzzer gave me a timer that beeped once when the gun was hot, twice one minute later, 3 times another minute later, etc.  The dollar 5V wall wart from Goodwill that powers it is plugged into the same outlet as the gun, so the mechanical timer turns them both on at the same time.  OK, wrapping it all in blue painter’s tape is pretty crude packaging, but it works.

Putting the buzzer near the basement door increases the chances I’ll hear it even if I’ve left the basement.  It was put in place 11/14, and works absolutely great.

When I upgraded recently from my drooling old Dremel 1200 glue gun to a Tec 805-12, warmup time dropped to just about 2 minutes.  The old Arduino code was still safely in my sketchbook, so changing one #define and adding a couple of comments, and it was good to go again.  I discovered with pleasure that power to the Tiny was plugged into the unmodified ICSP header, so reprogramming it was trivial.  It works great again, and the reduced time ’til that first beep is icing on the cake.

Posted in Tiny 85 stuff | Tagged , , , | 2 Comments

Repair attempt of Grohe Quick Coupling

While in the middle of repairing the kitchen sink drain plumbing, I noticed a fairly significant leak under the sink.  OK, I’d failed to tighten one of the new plastic drain couplings in between repair sessions.  Fine.

But that didn’t fix most of it.  More observation found that it was coming from the source end of the flexible hose going to the faucet’s pull-out spray head.  Our Grohe LadyLux Plus faucet features a quick-connect (“Quick Coupling”) between the valve assembly and the hose to the spray.  This is a standard Grohe part, and for $30-40 I can get a replacement of the plastic end of the connection.  We have the yellow one (46 318000).  Installation is trivial.  And the leak is still small enough for a tray under the sink to catch it all.

I’m cheap, but not that cheap.  Send in a little money, get the part on the doorstep, 5 minutes work and Done.  I don’t have much problem with that.  Of course as several reviewers have commented, it’s pretty expensive for a plastic part.  And the part’s not damaged, and might be fixable.  It’s worth a try.  (So to be clear:  The motivation is maybe 20% cheap, and 80% “I can probably fix this.”)

The actual seal is an O-ring inside the plastic part.  It’s barely visible in the picture; feeling it with a probe was what convinced me of its existence.  (Just a guess, but that 25 cent part is probably all that’s needed in 90% of the repairs.)  It fits against the smooth outer surface of the male end coming from the valve.  A leak in a seal like that is often due to the crud and lime of the ages.  I’m a little surprised that no one mentions crud on the surface of the male part in discussions of repair by replacing the plastic part.

The repair plan

So the plan is to swab out the inside of the plastic part with Lime Away to get rid of the calcium deposits on the O-ring, clean the outside of the male part, and put ’em all back together with waterproof silicone grease.  Here we go.

Looking inside the plastic part, there was clearly some sort of device, but several commenters said the yellow (and green) versions don’t have a flow restrictor (though other colors do).  I vaguely recall that I might have removed a flow restrictor from the spray head end when it was all new, but I’m not sure.  And I could blow thru the plastic part both ways, so it obviously wasn’t a check valve.  But as I poked around with a Lime Away soaked Q-tip, that inside part seemed to move – and be spring loaded.  After some cleaning, it went from brown and crud-encrusted to pretty blue and white plastic parts.  And once cleaned out, it turned out to actually be a check valve!  A sensible (high end) feature – so the water in the hose doesn’t drain out when you disconnect the hose.  I rinsed it all out well, and called that done.

I scrubbed down the metal male part with a very well worn green scrubbie (couldn’t find a white one) soaked with Lime Away.  I tried to twist around the pipe rather than rubbing along its length, in case I introduced any scratches.  Unlikely, but…  It certainly looks cleaner, but the green ring of crud seems to remain.  I wonder where that hits with respect to the O-ring.

A significant part of the hope of helping it seal is a nice slathering of silicone grease.  Another Q-tip with that (on both surfaces), and it was ready to reassemble.  Done.

Fingers crossed – let’s see how it fares!  A couple of hours and a round of dish washing, and it’s still dry.  An update will follow.

Update 9/13/17: It’s been over a month, and no leaks.  I’m going to call this one a success and Done!

Update 12/13/17:  Well, not done.  It leaked some more. 🙁   I ordered the Grohe part ($34/free on eBay) and installed it 11/28/17.  I did do one more round of cleaning of the male fitting, put silicone grease on again, and the whole replacement was the 5 minute job I expected.

I put a shiny black plastic tray under it with grains of table salt in the low places.  It’s been in place for a couple of weeks now, and the salt says there have been no leaks.  I think it’s really Done this time.  (Of course I thought that before…)

About the only explanation I can come up with for why the new part worked is that the rubber in the new O-ring is newer/more live.  If that’s the case, replacing just that ring should have worked.  I probably could have gotten the old one out, if destructively.  And I could probably have managed to force a new one into place.  But I didn’t want to have to try to spec and source the part.  And with mud on my face from the first failed attempt, the 5 minutes and $34 was an acceptable cost for being Done.

Posted in Home Repair | Tagged , , , , , , , | Leave a comment

Resurrecting Pogo HA server (and replacing a BGA chip!)

I got a watchdog email shortly before we left for the April Adventure weekend (email: 4/20 6:45P) about datafile and camera pic being older than the 1260 sec threshold.  I couldn’t get it running the morning before we left, so didn’t start real recovery efforts until 4/24.


I couldn’t ping or ssh to the box, so I power cycled it.  (Yeah, that’s a little harsh for a Linux system – but I didn’t have many choices.)  Nothing.  I looked around for backups, and found one – from 6 years ago!

I uncabled the box (power, 485 net, ethernet) and brought it out so I could plug into the 3.3V serial console pigtail I’d installed early on.  It didn’t boot as expected, so I tried to look at the system thumb drive.  The main Win10 PC, jimsdellmini (Ubuntu) and Gparted on the red kitchen laptop all did not detect that there was a thumb drive plugged in.  They did see the USB device (like with lsusb), but no storage drive.

I found a very similar 4GB Microcenter drive (with silver laptop Clonezilla on it) and in desperation decided to try to swap the flash chips to try to recover the files, hoping it was the board or controller chip rather than the flash chip that was bad.

Here are the boards, and the back sides with the flash chips.  Oh no – they’re BGA!  Looks like the boards were set up both to take a second flash chip and to take either BGA or leaded (TSSOP?) chips.  Thanks for these using BGAs, Murphy.  Not.


All work below was with air:3 and heater:8 and a smallish (0.198″OD) tip on the AUYOE Int 906.  I worked with the chips and boards on a firebrick.

First I unsoldered the good chip from its card with hot air.  Took a couple of minutes, but seemed successful, and gave me a little hands on practice with the hot air.

Then with vague hopes that the bad drive might just have a bad solder joint, I reheated that board, hoping to reflow the bad chip in place on its original card.  When I tried that in jimsdellmini, it still did not show up as a memory device (though it did show up in lsusb).  Nice try.

Then I unsoldered the bad chip from its card.  I put the good chip on the bad card – no prep, no reballing, no cleanup.  I reheated it, purely guessing at the time.  I watched closely, but never saw it move or recenter.

When I plugged the bad card with the good flash into jimsdellmini, the OS found the device and I could see the files from the flash (old clonezilla files).  Plugging it into the Win10 PC, that could see it and its files as well.  Wow – I just successfully resoldered a BGA chip!

Encouraged, I cleaned off the bad chip with flux and solder wick, and ran a ball of (leaded) solder across it, providing what looked (to eyes that had never seen one) like an appropriate reballing.  I cleaned the previously good card with flux/wick, put the reballed bad chip on it, then heated it to reflow.  Watched, but never saw it move.  Did wiggle the board a little a couple of times to try to help it find home.  After I let it cool, the chip seemed well adhered, so presumably at least some solder melted, though I can’t be at all certain all the balls did.  But I’m hoping the extra prep increased the chances of good soldering compared to the first (good chip, bad board) try – which worked with no extra prep.

When I put the good board/bad flash in jimsdellmini, lsusb could see it, but it didn’t appear as a file system.  The Win10 PC could see the device, but no file system as well.  Nice try.  🙁

Despite efforts to take good notes, either I screwed up multiple times or the USB ID moved with the flash chip (which is very unlikely).  Boo on me.  But I eventually did enough retries comparing lsusb output to convince myself I had done what I intended (like not putting the bad chip back on the bad board), and that it really didn’t work.

In any event, I’ve done all the due diligence I know how to do, and so can completely give up on trying to resurrect the files from the old working drive.  Bummer, but with closure.


OK – I’m now confident I’ll never get the files back from the original thumb drive.  Time to move on.  I had a backup tar from 10/6/11 (!), and with the notes here untarred it to a random 8GB drive from the thumb drive box.  It booted, and thanks to the serial console, I got it sort of running.  I think the ftp password to the Godaddy host had changed, and the IP of the AT&T first router had changed, and probably some other stuff.

But its (6 year!) old talked to the existing HA nodes, got data from them, and pushed it to the Godaddy host.  We’re back on the air!

Well, sort of.  All the camera stuff was implemented after that backup, so had no hope of working.  And the graphs didn’t update like they used to.  I feared the data format had been updated somehow, and the parser on the web host was looking for something that wasn’t there any more/yet (and that I had zero recollection of).

Several weeks later (6/20/17), I dug around trying to figure out why the graphs didn’t update.  Between looking at the code and finding and reading the note on “Home Page Speedup”  I slowly realized the poll perl script on the Pogo not only ftp’d update data, but invoked (with wget) the graphs.php script on the host that actually updates the graphs.  After a few stumbles I put that into a new and got it working.  Now the graphs update automatically again – yay!


First on the agenda is a workable backup method.  I don’t remember whether I had a backup script on the old drive, but at least there’s a good start in the project notes from the last painful rebuild.

I copied and touched up that script so just running “gobackup” in perl/backup will (presumably) make a backup tar file and put it on the main PC as F:\pogobackup.MMDDYYYY.tar.  If I can just remember to run that when I make a change (or maybe put it in a cron job)!  To that end, I put a banner in the motd saying “IF YOU TOUCH ANYTHING HERE, UPDATE THE BACKUP!”  And after was actually running graphs.php, I kicked off a backup. 🙂  A backup file appeared on the main PC, but I haven’t tried to put it on a new thumb drive.

Maybe make a watchdog that checks sums on some main files and sends an email backup reminder if they’ve changed?  What files?  Main perl files, hosts, rc stuff?  Should all data like credentials be hosted in a single file and read by the scripts?  Here’s a first crack at a list:

in /perl:
in /etc:

Update 7/15/17:  Woo hoo!  I think I got a first hack of the camera working again!  A first problem was that the main disk on jimsdellmini – which hosts reading from the camera – was completely full (and I couldn’t figure out what it was full of).  I dug some more and removed several old kernels and the associated stuff in /lib/modules.  Now I can at least work on the machine.  Hmm – that machine’s not backed up at all.  But it’s still running, and the old scripts are still there.  I plugged in an external hard disk, but it didn’t seem to see it.  I plugged in an old 1GB thumb drive and got it mounting to /media/CameraDrive.  Steps 0,1.

Looks like ~/perl/gosnaps reads from the camera, gets snapshots and puts them in /media/CameraDrive, then calls putpic to send latest to the Pogo.  Putpic ftps the latest to <ftproot>/pics with its timestamped file name, removes old latest.jpg, and copies the latest also to that filename.  Of course it needs an ftpd running on the rebuilt Pogo – which it wasn’t.  Got that running, but putpic doesn’t supply any credentials.  Added user jim to the Pogo, and some flag somewhere allowed auto logging-in of ftp.  I made a symbolic link in /srv/http to /srv/ftp/pics/latest.jpg, and I could see it in a browser looking at the Pogo.  It works!  Steps 2,3 done.

The main script already has stuff to implement regular (5 min) ftps to the GoDaddy host, so I copied one of those blocks of code, and after way more playing with the it uses than I cared to do, got that set up to push the latest pic to the real host.  And that seems to work, too!  Of course, the nice go485 script that used to pkill the old 485poll and restart it somehow stopped working, presumably with one of those kernel updates.  I can’t yet see how to pkill it, so must manually kill 2 processes and then manually restart it.  But at least go485 now prints out instructions on what to do.  And I even kicked off a backup with the new in it!  Oh, but /etc/rc.local still started  Rats.  But at least now doing the additional backup to capture that was easy.  I suppose I should untar it to a new flash drive and test it.  One more thing on the list.  But now I get pictures!  Steps 4,5,6A,6B done.

And the terrible displays recently on the home page turned out to be 2 instances of running.  (The old go485 script hadn’t killed the old one.)  Fixed that.  Wanted to clean out the data in datafile.csv, but decided to just let good data accumulate and fix itself in 5 days.  Cleaning the intermixed data was harder than I hoped. 🙁

But I did hack in an init in the power outage section of graphs.php that should stop the long-standing problem of displaying one phantom outage every time I’d trim datafile.csv.  Seems to work now.

Update 7/19/17:  Looks like the woo hoo on getting the camera stuff working was premature.  Yeah, it worked, but several hours later it stopped, with error messages on jimsdellmini about no space on device.  Yeah, the thumb drive is only 1 Gig – but c’mon, it it can’t be full yet!  And df showed only 4% used!  Tried touch abc – no space on device.  Same, as root – no space on device.  Deleted the 171 pics, and it all started working again.

Turns out there’s a limitation on FAT 16 (with which the 1GB thumb drive was formatted) on number of files in the root directory, and if the file names are long the limit is hit much more quickly.  I guess “snap07-19-23-59.jpg” qualifies as a long name.

I suppose I could have tweaked a couple of scripts and stashed the image files in a subdirectory, but I just reformatted the thumb drive ext2 with fdisk.  Works fine days later.  There’s also a daily cron job that clears out files older than 24 hours, so it should work for plenty long enough.  (Turned out to be older than 30 days.)

Update 8/18/17: The random 8GB thumb drive I rebuilt as a Pogo system disk failed.  This time I schlepped the new HP laptop over with a 3.3V USB-serial cable and plugged it in before I did anything else.  Nothing.  I power cycled it and got a shell from flash – no USB boot.

Put the thumb drive in the main Win10 PC, and with ext2explore.exe copied the very latest, which hadn’t been saved to a backup tar yet.  Yay!  Everything else should be OK in the latest tar file.  I hope it works – I’ve still never actually tested it.

Tried fsck on the thumb drive in jimsdellmini, and it gave a zillion errors.  Let it run – twice – but couldn’t read the drive when remounted.  Took 2 tries, but deleted partition table and recreated with fdisk, then put new ext2 fs on with mkfs.  Copied latest tar over, but oopsed and untarred the 2011 tar instead.  Took a LONG time.  Discovered what happened when I tried to replace – and it wasn’t there.  Carefully did rm -rf on the thumb drive (another LONG time), then started to untar the right file.  SLOW.  Gave up with ctrl-C.  Jimsdellmini wasn’t happy with that, and never really unmounted the drive.

Put in a brand new 16GB red Microcenter USB3 drive, fdisk‘d a new partition table, new mkfs, and untarred the right file.  Much faster, as expected.  Plugged it into the Pogo, and with laptop still connected, watched it boot.  Success!

No house pic, tho.  Finally killed a days old ftp process on jimsdellmini.  A few minutes later, a good pic had propagated all the way to the Godaddy host.  Yay!  Looks like all the scripts on the Pogo do in fact start on boot – and the backup tar works!

I hope the brand new thumb drive lasts longer than the 8GB fold-flat credit-card drive from some patent law freebie I used last time.  And why do these things always happen the night before I have a long drive to a weekend?

Update 8/30/17:  I’ve been fighting on and off with being out of storage on the “camera drive” on jimsdell mini.  It’s been running that 1GB thumb drive for a while, and just failed again.  Thankfully the “house picture old” watchdog fired and sent email.  Turns out once again the drive was full (but really, this time).  There’s a cron job purging files matching a find -mtime +30 (days), but that wasn’t aggressive enough for this tiny drive.  After I manually deleted several days’ worth of pics, it started working again.  How many days’ worth will the drive hold?  It looks like nite pics (B/W) are ~26KB, while day pics are more like 110KB.  Doing an ls |wc  on /media/CameraDrive gave 10586 files, while df showed 658048K used.  So that averages about 62KB/pic.  At 24*30 pics/day, we burn about 45MB/day, so the 1GB drive should hold around 22 days of pics.  I changed the cron job to -mtime +15, so it should take care of itself now, and run around 30% free.  We’ll see.

Update 1/5/18: Checked /media/CameraDrive and it was at 68% used, just as predicted. 🙂


  • I’d really like to move the camera stuff to the Pogo, if I can.  The old (and newly current)  system uses jimsdellmini to get images from the camera and push them to the Pogo, which eventually pushes them to the host.  I think the two reasons I originally used another machine instead of hosting all that on the Pogo were a) a concern that the somewhat compute-intensive image processing burst might interfere with the serial polling of the HA nodes, and b) not wanting to have the HA system bouncing while I tried to get it all working.  But if I integrated the camera stuff into the main poll script rather than as a separate process, I could avoid interfering with the serial polls.  And I’d get jimsdellmini out of the critical path and more usable for other stuff.
  • And of course implementing a more rational database – like RRD? – has been on the list for a long time, but that’s a pretty big deal.
  • It would often be helpful to have an easy way to add annotations to any of the graphs/data sets to comment on special things that happened.  That will probably wait until a more final database is implemented, but who knows?   Update:  I could make each power outage line a link to a (password protected) page that would prompt for a comment.  Prepending exactly the posted outage line (timestamp and duration) to the comment, maybe with ‘;’ delimiter, the comment line would be appended to a comments file.  When printing the outage lines, I could grep out any matching lines from the comments file.  Maybe.
  • And I’d really like the water meter reader to work again.  I even looked at it a few weeks ago and could see that the optics could still be aligned on the red spinning arrow, providing enough brightness variation that I’m surprised the phototran couldn’t see it.  Maybe it’s just a drift/reset the bias thing.  Update: Looks like the city’s going to replace all the water meters, so the clever-but-not-clever-enough-to-keep-working optical telescope will soon be completely obsolete.  More here.
Posted in Home Automation | Tagged , , , , | Leave a comment

IR comms considerations (for penlift for the Drawbot)


I was planning to hold this to be part of a much larger writeup of the Drawbot, but while it started as part of that project, it sort of took on a life of its own as an IR comms optimizing exercise.  I blew a huge amount of time on this, sticking my head in the sand and ignoring other things I really should have been working on.  I kept thinking “just one more test” – but that wasn’t how it worked.

The first version of the pen lift for the Drawbot included a nice servo mechanism driven by a Tiny85, but time forced the major ugliness of a light pair of wires from the main Arduino to carry control info to the gondola.  It worked fine, but those wires were never supposed to be there.  IR communication was the plan.

Finally, using a (20 year?) old 3 pin 38KHz IR receiver still in its Radio Shack bubble pack, I made up a PCB with a Tiny85 listening to the receiver module, driving the servo to lift the gondola and red and green status LEDs (for pen down/up).  I defined a simple pulse position protocol (in DrawbotStuff/DrawbotTinyServo4_IR.ino) on top of the required 38KHz pulses to deliver the 1 bit (up/down) messages, made up a test sender with an Arduino and an IR LED sending alternate state messages every half second and got it working.

A little aluminum bracket glued to the back of the PCB clips it to the gondola.  Servo and power wires were both perfect length to go to the board.  Sometimes we just get lucky. 🙂

Unfortunately, I wondered whether a useful improvement in range could be made by increasing LED current, along with a corresponding decrease in pulse width.  Now, the plan is to use 3 IR LEDs spread across the width of the Drawbot base, shining up at the gondola so even when it’s at the bottom corners of its movement, it will still have a transmitter LED more or less under it (ended up with 6).  And with one LED at 50% duty cycle and 20mA – completely within the LED’s specs – I can get range much greater than to the top of the Drawbot.  So it really doesn’t need any range improvement.  But I just had to go and ask the question.  Bad decision.

Rick S suggested a 50% duty cycle would contain the most energy at the fundamental, thus providing max signal after the receiver’s bandpass filter.  Sounded like a reasonable argument against a range increase.  I tested at the space with 5.5 mA/50% DC pulses and got range (go/no go, with the actual receiver and protocol) of 50″.  Dropping to 25% DC but still 5.5mA, range dropped to 40″.  I can believe that.  Keeping 25% and increasing current to 11mA range went up to 167″!  WTH?

Christine suggested maybe the LED output was nonlinear and at the lower current wasn’t putting out as much as expected.  I tested with a very small 8 cell Si solar panel directly into my bench meter in current mode (~100 ohms), which I think is a good way to test for light energy in.  (I crudely covered the panel to keep out ambient light.)  Results of output current v LED drive current were VERY linear, 1-30 mA.  So I think doubling the current does indeed double the light output.

(A vaguely plausible explanation for the wild range increase  (sorry for no pics 🙁 ):  The test was done with the LED near the end of one of the gray tables at the space, maybe 5″ above its surface, and aimed horizontally.  *Maybe* – energy off axis, which should never have come into play, hit the table top and reflected/diffused off toward the 167″ away receiver over another table.  That effect could be eliminated by mounting the LED out in space, not over a possibly reflective surface.  A subsequent test with similar currents but without the problem table did not show the wild range increase.)

Of course while testing using the actual intended receiver and message protocol provides great “real world” chops, it violates my “No boolean failure indications!” rule.  I should really structure a better test indicator.  Hmm – if I can’t get inside the receiver module to get an analog indication of how close we are to max range threshold, what if I can control the stimulus – LED current – and use that to sneak up on the indicator?  (Interesting idea, cost me lots of time digging into how to get an analog handle on LED current with a bench supply, but never got used.  All I did was suffer along with the go/no go indications of the IR receivers. 🙁 )

A good next test would be another doubling (or more) of LED current (with corresponding decrease in duty cycle to keep from blowing the LED) and testing range.  Maybe simplify the pulse train to eliminate any funnies created by my protocol, and maybe use a newer (and just different) IR receiver module.

Range test approach

Ugh.  The first tests (at W88) were with 2 known resistors that measured a factor of 2 difference in LED current: 5.5mA and 11 mA.  I kept the current low so the range would be manageable.  But the results were just unreasonable.

For the next round, I wanted to compare the range with a known LED current at 50% duty cycle (of the 38KHz pulses) with the range with a considerably higher current and correspondingly lower duty cycle (to not smoke the LED) – for nominally the same energy per pulse.  How hard can that be?

The lowest duty cycle I could easily arrange on the Arduino at 38KHz was 20%:


That gave me a 2.5:1 change from the 50% D.C. (duty cycle) I took as reference.  That should be enough to see whatever effects there are by increasing LED current by a factor of 2.5.

To provide known current pulses, I set the IR LED up with a fixed resistor and an adjustable bench power supply.  Pulse current was gated by a logic level MOSFET driven by an Arduino (or sometimes a bench pulse generator).  I mounted the FDS6670 MOSFET (in its odd SOIC 8 package) with power, logic in, and load connections so it might be reused some time.

By measuring the voltage pulses across the known resistor (with my nice new scope), I made a table of supply voltage v LED current so I could easily produce any desired LED current.  That approach was chosen so changes in the forward voltage of the LED would not affect the results.  The first 2 columns below show the results.

I, mA   Vsupply   Vsup, computed
  2       1.55     1.53
  5       2.16     2.26
 10       3.27     3.36
 20       5.57     5.56
 40      10.6      9.88
 50      11.6     11.9
 80      18.5     18.6
100      22.8     23.0

(In hindsight, the limited accuracy of reading the pulse amplitude on the scope introduced more error than the LED.  Better would have been to measure the LED’s forward voltage at a couple of currents, measure whatever drop there was across the MOSFET (if any), interpolate the LED voltage and compute the supply voltage.  Working backwards and subtracting the drop across the resistor at each current from the required supply voltage in the table above, I computed LED voltages between 0.6 and 1.17V, with no particular correlation with current – awful.  Still close enough to be useful – just not very ideal.  Measured DC LED Vf=1.19V @10mA.  Later I computed the Vsupply based on known Vf (third column above); that’s what I used for subsequent tests.)

Knowing I’d need a long straight shot, I mounted the LED (with Arduino dangling) on a stick hanging out in space so it could see past various obstructions, “up” a small staircase, and along the floor on the next level.  At 50% duty cycle and 50 mA, it worked for the full 44′ shot.  (11′ down the computer bench, 6′ to the stairs, 7 ft “up” the stairs, and 20′ across the kitchen.  View from the LED is on the left.)

Unfortunately, I never got very crisp results.  The go/no go indication of the pen lift receiver was too capricious.  Once again, I could see some decrease at constant current going from 50% to 20% duty cycle.  But when I tried to change current, results were unclear.  (Note that the observation of range decrease going from 50% to 20% DC has no relevance to the tradeoff we’re investigating.  But it’s a very easy test, and can at least give some warm fuzzies when it behaves as expected.)  Hmm – might there have been reflections from the kitchen floor – very analogous to the table in the tests at W88 – confounding the measurements?

Trying to get better results, I made up another simpler receiver, using a different IR module and just an LED.  After verifying that this one was indeed open collector (the RS one wasn’t), and getting past some dumb mistake, I second guessed myself and made it and remade it so the LED would be on, then off, then on when pulses were sensed to make the most usable tool.  (Is it easier to see it stutter off or on at the ragged edge of range?)  Here it is as used, with some random little LiPo cell.

But it’s not that simple.  In reading the datasheet for the common Vishay TSOP devices, I found you can’t just send continuous 38KHz pulses – something about AGC.  It’s designed only for messages, and messages have a maximum length, and dead time is required between messages.  That meant I would have to rewrite my test sender, honoring the gaps, but still giving a ‘mostly continuous’ indication on the receiver.  Yeah, it’s just datasheets and code and design decisions, and yes, I can do it all, but boo.  So I did it.  Boo.

Trying to decrease the range (to make measurement easier) while staying pretty linear, I made a little diffuser/attenuator out of a bit of plastic tube that (when split) fits over the (5mm) IR LED and has a Kleenex cover taped over the emitting end as the diffuser.  I can’t imagine its effects could be brightness dependent.  It might, however, act as much more of a point source, changing the parts of the range behavior related to the narrow beam divergence created by the LED’s lens.  Ugh.

Real test results (finally!)

Using the new supply voltage values, new code on the penlift board, new code on the test driver Arduino, the 3d version of the independent receiver, and clamping the LED on the edge of the bench looking out so  there wouldn’t be any possibility of unintended reflections, I did some tests.  Finally.  To keep from further frying the LED’s resistor (oops), I quit the 50% DC tests early.  (I really need to remember to consider power more consistently in electronics hacks.  As well as thermal  effects in chemical hacks.)

The new sensor (with new “as continuous as I dared” pulse stream) worked, but not great.  Its LED was constant brightness (and blinking at ~10Hz), but gently started to dim as it reached max range.  Then it went out.  I tried to gauge where it just started to dim (what a terrible indication!) and moved just a little closer for the official range.  Uncertainty was a couple of inches.  Ugh.

The penlift receiver exhibited some kind of hysteresis.  I’d move away until it stopped responding, then go closer again so it restarted.  But then if I went away very slowly, I could get an extra inch or five.  This was over the course of several seconds.  Parts of the AGC seem to be very slow.  Again, I moved a little closer than the very furthest I could finesse for the official measurement.  For both the penlift and the alternate receiver, I moved around in space to make sure I was fairly centered on the beam.

The new receiver, tested with the diffuser shows the expected (and unimportant) behavior of somewhat shorter range (~72%) when DC is reduced from 50% to 20%.  For the payoff test of decreasing DC and increasing current by like ratios:  Using the 20mA->50mA points nets a 15% range gain.  Using 10mA->(interpolated) 25mA gives a 32% gain.  That’s probably statistically significant, though hardly a “Hallelujah!”.

Data from the penlift – including its protocols – with the diffuser provides similar range decrease (66%) in the irrelevant dropping DC test.  The payoff tests – two pairs of direct data and one interpolated – gives an average range gain of 8%.  Big whoop.

The penlift with naked, lensed LED – the configuration I had expected to use all along – again gives similar range drop (70%) with reduced DC.  But the payoff tests – real data for 2->5mA and extrapolated for 5->12.5mA (ran out of room to go any farther!) average 62% gain.  But there’s a partial explanation:  Graphs of both data sets covering several points (the ones with diffuser) show a clear curve – with greater slope at low currents.  Since the scant data points we have are at the bottom, steepest part of the curve, one could argue that current increases have more effect there.  But (in a fit of sensibility!) I haven’t done any curve fitting to see if that’s justified.

The bottom line

Results were mixed, but it does look like increasing current and decreasing duty cycle, here both by a factor of 2.5, increased range by 10% – 30%, possibly more in some cases.  Interesting.

But putting my adult hat on for a moment, this was all unnecessary for the case at hand:  At just 5mA and 50% DC, the penlift worked out to 16 feet.  The farthest the gondola can ever get from the LEDs is a little over 3 feet.  But once some dumb question insinuates itself into my head, rational behavior is out the window.  Ugh.

Update some months later:  The actual drawbot pen lift works perfectly with this overengineered comms mechanism.

 Notes on IR receiver modules

For at least my future reference, here are some random bits I learned diving down the IR receiver rabbit hole:

  • The receiver modules are cheap and wonderfully effective.  Just use one!
  • They come with center frequencies from 30-56KHz.  It doesn’t matter which you use, but do be sure your transmitter matches it.
  • There are several quite well documented control protocols used by commercial remotes.  The IR receiver docs often include nice info on them.
  • These things are expressly designed for delivering small (a few bytes max) asynchronous messages, and REQUIRE gaps between them.  They’re NOT designed as general purpose comms links.
  • They will (usually?) detect the beginning of a pulse stream in well under a millisecond.  But their AGC/other internal timing is very much not designed for DC carrier.  Don’t try to use them for a (normally on) beam break application!
  • There are multiple versions of modules tuned for different use cases.  I ran across families supporting “AGC 2” and “AGC 4”.  Presumably there are at least two other AGC classes.  There are versions for “short” and “long” data packets, and something called “continuous”, though it might need gaps as well.  I’d guess they would all work for simple hobby applications.
  • If you can’t get a datasheet for a junkbox/surplus IR receiver and don’t know the pinout, the following is alleged to have worked well and never fried any parts:  With a 1K resistor between the power supply and the device (for safety), just try all the possible pinouts of power/ground/signal out while shining a TV remote at it until you find the one that works.
Posted in Drawbot, Tiny 85 stuff | Tagged , , , | 1 Comment

Chinese nail blocks not a fraud

Well, that was informative.  As Ziggy taught me to say back at Reuters, “The test is the test.”

cheapieblock4703When Scott told me about keeping a nail buffer block on the bench to provide 4 grits of sandpaper in one convenient, easily replaced tool, I thought I’d try it.  But after the 4-for-a-dollar Chinese cheapies arrived, they didn’t seem to do anything!  Even the coarse side didn’t begin to do what even the fine side of an emery board did.  I was convinced they’d just glued 4 colored pieces of paper to a nice foam block.  OK, I could glue some real sandpaper to the nice block, but that’s not what I was trying to buy.

But just because my fingers couldn’t feel any grit (at all!) didn’t mean the blocks were a fraud.  How could I test it?  How about “sanding” a piece of polished acrylic with them?  What about controls?  Name-brand commercial products exist – and surely those aren’t frauds.

The test

products4675Armed with products from Revlon and Trim for comparison, I set up the test.  Knowing I was going in with a strong bias, I tried to basictestsetup4664make it as objective as I could.  I put a 22 oz anvil on the pad (with a bit of sticky waffle rubber between to reduce slipping), and tried hard to not apply any force normal to the plastic as I scrubbed.  I revlonsetup4665arbitrarily chose 16 strokes back and forth for each sample as a nice round number.  Of course while the anvil provided constant force, it certainly didn’t provide the presumably more important constant pressure on the various sandpapertapedtoblock4667width and stiffness blocks.  Oh, well.  (Oops.)

I included some 1200 and some 2000 wet/dry sandpaper as well.  I just taped some bits of those around a block for a comparable test.


depthgauge0827To take closeup pics of the scratches, I mounted some little short FL positive lens in a bottle cap that just lightly press fit over the lens on my usual camera.  A bit of wire made a distance jig.  A black background and camerasetup0832side lighting seemed to give about the best results.  Unfortunately, auto-exposure can’t be turned off, so that tends to normalize the appearance of the pictures.

Being chinzy with the plastic cost a bit:  Some of the Revlon scratches impinged on some of the foam block tests.  Fortunately, they went a different direction, so when I took pictures I could try to exclude them.


Short answer:  I was completely wrong.  The 4 sides of the cheapie blocks clearly scratched the plastic, and in 4 graded ways.  And within the eyeball-quality results, their gradations were about the same as the 4 sides of the comparable Trim product.  The Revlon board included a side (black) that actually felt like an emery board (plus another medium grit white side), so those were in a different league from the Chinese (and Trim) “polishing” blocks.  In all cases, the #1 side was most coarse, #4 smoothest.

testacrylic4697Here’s the whole piece of plastic after the tests, marked for the blocks/sides used.  Overall fairly successful, though in hindsight I could have reduced the number of scrubs to 10 or 8.

Hmm – there’s a strong and repeatable artifact that grits 1 and 3 scratch more than 2 and 4, for both the Chinese and the Trim blocks.  Both 1s/3s are on the narrower sides of the blocks.  I’d have to guess we were seeing an effect of higher force/unit area on those smaller sides.  The Revlon block is more square in cross section, and doesn’t show that effect.  Interesting.  Yeah, I could retest and mask the surfaces to fix that – but I got the results I was after, so I’m done.
Here are the closeups, including a steel ruler for scale.  Identical contrast post processing was done to each.  Top to bottom, we have the cheapie, the Trim block, the 4 numbered sides of the Revlon board, and finally the white and black surfaces of the Revlon along with 1200 and 2000 actual sandpaper.

chineseblocktrimblocksrevlonblocksrevlonsandpaperThe closeups aren’t as definitive as I’d hoped.  But the result that the cheapie does in fact have 4 different (if fine!) abrasives is clear.

The test is the test.

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

Hot melt strain reliefs – next phase

old4657I’ve used hot melt glue for strain reliefs on connectors – typically 0.1″ headers abused as connectors – for a long time.  Insulation is a secondary plus, but the primary goal was physical strengthening/protection of the quite small (and therefore weak) solder joints.    Yeah, the technique is good – no cold joints – but they’re still pretty small.  Cheap, works great.

I’m happy with a new, slightly more sophisticated application.  I’ve been soldering ribbon cable to cheap USB-TTL adapters for a long time.  They’re fine for the first couple of years, but after having to repair several broken wires, I’ve started taking a longer view.

The common failure mode is due to solder wicking into the stranded wire.  With a nicely soldered joint, there’s reasonable mechanical strength right where the wire goes thru the hole.  The next millimeter of wire is strengthened by the wicked-in solder, so all of that is OK.  But then comes the junction of the stiff, solder impregnated wire and the plain wire (typically slightly inside the insulation).  That’s where the flexing happens, and that’s where the fatigue failure occurs.

newtop4658The new application of hot melt strain relief is to go far enough up the wire that the solder/no solder junction is protected.  Yeah, there’s still additional flex at the very end of the hot melt, but I think that’s better than flexing at the junction.  I’ll bet these don’t fail the way the unrelieved ones do.

Maybe I’ll remember to come back here in a couple of years and report back. 🙂

Posted in Miscellaneous | Tagged , , | Leave a comment