The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Software

General-purpose computers doing something specific

  • Canon LiDE 120 Scanner vs. Sane vs. Networking: FAIL

    The Canon LiDE 120 scanner on Mary’s desk gets considerable use by both of us, until a recent update of something killed network access to it. The usual searches revealed comments suggesting the sane scanner program has deliberately disabled network access to USB scanners which use the net back end, apparently to prevent loops when one instance shares a networked USB scanner already shared by another instance.

    I have no clue how all that works, nor why the change has apparently taken half a dozen years to reach our scanner.

    The workaround required downgrading sane on the “server” PC (the one with the Canon scanner) to the most recent version that doesn’t enforce the prohibition:

    sudo pacman -U /var/cache/pacman/pkg/sane-1.1.1-2-x86_64.pkg.tar.zst
    

    And preventing further upgrades with a stanza in /etc/pacman.conf:

    IgnorePkg = sane
    

    The pamac GUI interface now shows sane as eligible for an upgrade, then reports that it won’t do the deed. That’s survivable.

    At some point, not updating the sane package will cause other problems. Perhaps by then we’ll have moved the hulking Epson ET-3830 printer/scanner upstairs and can recycle the Canon scanner.

  • Medium Ricotta Lid Box: QR Code vs. Chipboard

    Medium Ricotta Lid Box: QR Code vs. Chipboard

    Another box from the festi.info box configurator to collect more lids in a kitchen drawer:

    Medium Ricotta Lids box
    Medium Ricotta Lids box

    This was really a thinly veiled excuse for a deeper look at the QR code generator encoding the myriad parameters required to create the box and see what happens when you try to burn such a complex thing into chipboard.

    Spoiler: chipboard has very low contrast and really does not work well with high-density QR codes.

    Although the festi.info box generator can produce QR codes, I used qrencode (available in your Linux distro) on the command line to generate QR code image files with specific settings:

    qrencode --level=M --size=6 --dpi=254 --output='Ricotta Lids 2 lb - chipboard.png' 'http://festi.info/boxes.py/ABox?FingerJoint_angle=90.0&FingerJoint_style=rectangular&FingerJoint_surroundingspaces=2.0&FingerJoint_bottom_lip=0.0&FingerJoint_edge_width=2.0&FingerJoint_extra_length=0.0&FingerJoint_finger=2.0&FingerJoint_play=0.0&FingerJoint_space=3.0&FingerJoint_width=1.0&x=200.0&y=120.0&h=60.0&outside=0&bottom_edge=h&thickness=1.4&format=lbrn2&tabs=0.0&qr_code=0&debug=0&labels=0&reference=0&inner_corners=corner&burn=0.04&language=en&render=0'
    
    

    The key parameters:

    • --level → error correction level
    • --size → size of the smallest square (“module”) in pixels
    • --dpi → DPI of the output image file

    The default file type is PNG. The unusual 254 DPI makes each pixel exactly 0.1 mm wide and a peculiar 169.33 DPI = 0.15 mm came in handy for the first pattern.

    The final parameter is the character string to encode, which you should definitely quote to prevent the shell from wrecking things while trying to help you.

    A pattern with 4×4 pixel modules didn’t scan at all:

    Chipboard QR code - 15pct 0.15mm 4x4 - overview
    Chipboard QR code – 15pct 0.15mm 4×4 – overview

    A closer look shows the modules have ragged edges due to laser timing variations during the engraving scans and gaps between successive scans because the spot size is less than the 0.15 mm scan interval:

    Chipboard QR code - 15pct 0.15mm 4x4 - detail
    Chipboard QR code – 15pct 0.15mm 4×4 – detail

    Increasing the module to 6×6 pixels at a 0.1 mm scan interval :

    Chipboard QR code - 15pct 0.10mm 6x6 - overview
    Chipboard QR code – 15pct 0.10mm 6×6 – overview

    A closer look shows the larger module reduces the relative size of the timing errors, while the decreased line spacing tidies up the blocks:

    Chipboard QR code - 15pct 0.10mm 6x6 - detail
    Chipboard QR code – 15pct 0.10mm 6×6 – detail

    Reducing the power from 15% to 10% reduced the contrast to the point of illegibility:

    Chipboard QR code - 10pct 0.10mm 6x6 - overview
    Chipboard QR code – 10pct 0.10mm 6×6 – overview

    A closer look shows the engraving barely punches through the surface and has somewhat more ragged edges due to the tube’s pulsating startup current at very low power:

    Chipboard QR code - 10pct 0.10mm 6x6 - detail
    Chipboard QR code – 10pct 0.10mm 6×6 – detail

    I also tried 5×5 modules with similar results.

    The laser spot size sets the engraving scan interval, which then determines the DPI value for the QR code image. With all that matched up, you can send the images directly to the laser in Passthrough mode, without having LightBurn resample the pixels and change the module’s shape.

    Looked at from a different angle: given the laser spot size and the module size, the QR code image size is not under your control.

    From another angle: given a QR code image size in, say, millimeters, and the engraving scan interval, the module size is not under your control.

    All this is moot if you print QR codes on a high-resolution / high-contrast printer. It’s just the gritty nature of laser cuttery that limits what you can accomplish.

    And, of course, using a material less awful than chipboard will definitely improve the results.

    If you want a similar box of your own, here ya go:

    Medium Ricotta Lids - chipboard QR code - default
    Medium Ricotta Lids – chipboard QR code – default

    The URL is too ugly to print, but you can copy it from this link.

  • Mini-lathe Chuck Jaw Holder

    Mini-lathe Chuck Jaw Holder

    While swapping chuck jaws I realized I didn’t have to pile them on a shop rag atop the lathe headstock, no matter how neatly cut those rags might be:

    Lathe chuck jaw holder - installed
    Lathe chuck jaw holder – installed

    It’s three layers of MDF cut to hold all six jaws from the 4 inch 3 jaw chuck, stuck together with wood glue.

    You really need only four sockets: one empty for the jaw you just removed, then work your way around the chuck. But, hey, MDF is cheap and I usually remove all three at once anyway.

    When it starts walking away, it’ll sprout silicone feet.

    The LightBurn SVG layout as a GitHub Gist:

    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.

    That was easy!

  • Laser-safe PSA “Vinyl”: Proof of Concept

    Laser-safe PSA “Vinyl”: Proof of Concept

    Mary’s ResMed AirSense 11 saves the data from every overnight breath she takes on an SD card, which she uploads to OSCAR once a week. I figured she needed an SD card to USB adapter / card reader of her very own:

    PU PSA Vinyl test - installed
    PU PSA Vinyl test – installed

    The lurid green letters aren’t backlit, they’re cut from a PVC-free “vinyl” (really, polyurethane) sheet with adhesive on the back.

    N.B.: Laser-cutting real vinyl, made from PVC, releases enough chlorine gas to corrode the guts of your machine and, with poor fume extraction, rot your lungs along with it.

    The LightBurn layout is pretty much what you’d expect, with the letter inside the outline of the USB dingus on a tool layer to get the size right:

    PU PSA Vinyl test - LB layout
    PU PSA Vinyl test – LB layout

    The red layer is a “kiss cut” through the vinyl (remember: polyurethane) that leaves the backing paper mostly undamaged:

    PU PSA Vinyl test - dot mode cut detail
    PU PSA Vinyl test – dot mode cut detail

    The cut uses Dot Mode, with the laser firing at 10% power for 2 ms, spaced every 0.1 mm along the cut. I found 0.1 mm spacing produced a more-or-less continuous cut in the PETG sheet for the Tek Circuit Computer cursor hairline, but this picture shows it’s definitely running in pulsed mode. In any event, Dot Mode is the only way a 60 W CO₂ laser can make a kiss cut, as a normal vector cut can’t run fast enough to prevent cutting all the way through the backing paper, even at 10% power, around those letters.

    The edges of the letters are slightly melted with a raised border, although they look pretty good if you’re not peering at them through a microscope.

    I cut the rectangular outline with scissors, peeled the waste vinyl away, and weeded the ‘a’ with tweezers:

    PU PSA Vinyl test - weeded
    PU PSA Vinyl test – weeded

    Stick a snippet of transfer tape on top:

    PU PSA Vinyl test - transfer tape
    PU PSA Vinyl test – transfer tape

    In theory, the transfer tape sticks more firmly to the cut letters than the letters adhere to their backing paper, so peeling off the tape also peels the letters off the backing paper.

    Which did not go well:

    PU PSA Vinyl test - transfer tape - peeling
    PU PSA Vinyl test – transfer tape – peeling

    The two adhesions obviously require a delicate balance to work properly and I would be unsurprised to learn different transfer tapes behave differently on each type of vinyl sheet, with no way to know the results without trying every possible combination.

    A few retries got the “r” back in position on the transfer tape, but a bit of kink remains in the “M”.

    A third adhesion balance occurs between the transfer tape and the USB card reader, where the tape must stick to the letters slightly less than the letters stick to the reader. Burnishing the tape + letters to the reader encouraged the letters to stick and the tape pulled off without dislodging them.

    We deemed the result good enough for the purpose and the process taught me a few lessons along the way. Next time, maybe it’ll work out better.

  • Refresh Tears Eye Lube Storage Boxes

    Refresh Tears Eye Lube Storage Boxes

    A recent Squidwrench meeting provided the opportunity to make a couple of racks for an assortment of Refresh Tears / Liquigel bottles:

    Refresh eye lube - storage cases
    Refresh eye lube – storage cases

    I used chipboard to find out if the cross plates would stiffen the floppy 1.1 mm sheets enough for this light duty. Indeed, the overall structure becomes a nice rigid box, even though the feet and corners can’t withstand much abuse.

    The finger joints use the default settings, which produce a lot of fingers along the edges. This turns out to be a Good Thing, as it gave the yellow wood glue plenty of opportunities to bond the sheets together.

    Combining the default 5° slope with nine bottles along each level wastes a tremendous amount of vertical space. The adjacent racks hold three much larger cans per level, so roughly the same space doesn’t look like much. In retrospect, a 3° slope should work for smaller bottles.

    And, yes, the squash on the lower shelf store nicely and become yummy meals all winter long.

    The overstuffed URL generating the patterns:

    http://festi.info/boxes.py/CanStorage?FingerJoint_angle=90.0&FingerJoint_style=rectangular&FingerJoint_surroundingspaces=0.0&FingerJoint_bottom_lip=0.0&FingerJoint_edge_width=1.0&FingerJoint_extra_length=0.0&FingerJoint_finger=2.0&FingerJoint_play=0.0&FingerJoint_space=2.0&FingerJoint_width=1.0&Stackable_angle=60&Stackable_bottom_stabilizers=0.0&Stackable_height=2.0&Stackable_holedistance=1.0&Stackable_width=4.0&fillHoles_bar_length=50&fillHoles_fill_pattern=no+fill&fillHoles_hole_max_radius=3.0&fillHoles_hole_min_radius=0.5&fillHoles_hole_style=round&fillHoles_max_random=1000&fillHoles_space_between_holes=4.0&fillHoles_space_to_border=4.0&top_edge=%C5%A0&bottom_edge=%C5%A1&canDiameter=30&canHeight=75&canNum=18&chuteAngle=5.0&thickness=1.15&format=lbrn2&tabs=0.0&qr_code=0&debug=0&labels=0&reference=0&inner_corners=corner&burn=0.04&language=en

    And the eyeburning QR code:

    Refresh Eye Lube - chipboard QR code
    Refresh Eye Lube – chipboard QR code
  • Bobbin Storage Trays

    Bobbin Storage Trays

    Long ago, I gave Mary a box of 100 empty bobbins for her Kenmore 158 sewing machine, with the intent she would never again have to unwind a bobbin to put new thread on it. This worked so well I did the same thing for her Juki, with the result she needed somewhere to store all those filled bobbins.

    Her work table has a shallow drawer, so we tried this out:

    Bobbin Storage Case - installed
    Bobbin Storage Case – installed

    They’re a matched set cut from 1.5 mm TroCraft Eco:

    Bobbin Storage Case - cutting overview
    Bobbin Storage Case – cutting overview

    Watching all those little rectangles fall out just never gets old:

    Bobbin Storage Case - cutting detail
    Bobbin Storage Case – cutting detail

    I ran off a test tray in ordinary chipboard that works just as well, but lacks the pleasant appearance and feel of the TroCraft. Clear 1.5 mm acrylic would probably work, at the cost of requring a much neater glue job where the dividers meet the walls.

    The spacing is a bit tight to pluck a bobbin from its slot between two others, but now she has enough space to arrange them as needed, with empty spaces around the most-used colors. I offered to carpet the drawer with bobbin trays, but she suggested waiting until these fill up.

    The well-stuffed URL specifying the tray:

    http://festi.info/boxes.py/TypeTray?FingerJoint_angle=90.0&FingerJoint_style=rectangular&FingerJoint_surroundingspaces=0.5&FingerJoint_bottom_lip=0.0&FingerJoint_edge_width=1.0&FingerJoint_extra_length=0.0&FingerJoint_finger=2.0&FingerJoint_play=0.0&FingerJoint_space=2.0&FingerJoint_width=1.0&Stackable_angle=60&Stackable_bottom_stabilizers=0.0&Stackable_height=2.0&Stackable_holedistance=2.0&Stackable_width=4.0&Hinge_grip_percentage=0&Hinge_outset=0&Hinge_pinwidth=0.5&Hinge_style=outset&Hinge_axle=2.0&Hinge_grip_length=0&Hinge_hingestrength=1&CabinetHinge_bore=3.2&CabinetHinge_eyes_per_hinge=5&CabinetHinge_hinges=2&CabinetHinge_style=inside&CabinetHinge_eye=1.5&CabinetHinge_play=0.05&CabinetHinge_spacing=2.0&Lid_angle=90.0&Lid_hole_width=0&Lid_second_pin=0&Lid_second_pin=1&Lid_spring=both&Lid_style=rectangular&Lid_surroundingspaces=2.0&Lid_bottom_lip=0.0&Lid_edge_width=1.0&Lid_extra_length=0.0&Lid_finger=3.0&Lid_play=0.05&Lid_space=2.0&Lid_width=1.0&Click_angle=5.0&Click_bottom_radius=0.1&Click_depth=3.0&RoundedTriangleEdge_height=50.0&RoundedTriangleEdge_r_hole=2.0&RoundedTriangleEdge_radius=30.0&RoundedTriangleEdge_outset=1.0&Mounting_d_head=6.5&Mounting_d_shaft=3.0&Mounting_margin=0.125&Mounting_num=2&Mounting_side=back&Mounting_style=straight+edge%2C+within&HandleEdge_height=20.0&HandleEdge_hole_height=75.0&HandleEdge_hole_width=40%3A40&HandleEdge_on_sides=0&HandleEdge_on_sides=1&HandleEdge_radius=10.0&HandleEdge_outset=1.0&sx=21*7&sy=12*7&h=20.0&hi=10.0&outside=0&bottom_edge=s&top_edge=S&back_height=0.0&radius=0.0&gripheight=30&gripwidth=00&handle=0&thickness=1.65&format=lbrn2&tabs=0&debug=0&labels=0&reference=00&inner_corners=corner&burn=0.04

    Which can now be specified as the biggest QR code I’ve ever seen:

    Bobbin Tray - TroCraft Eco QR code
    Bobbin Tray – TroCraft Eco QR code

    That makes my eyes hurt …

  • Laser-Cut Envelope Opener

    Laser-Cut Envelope Opener

    As practice in using the laser to engrave a figure to a known depth, this seemed appropriate:

    Envelope Opener - original
    Envelope Opener – original

    The black envelope opener on the right came in a long-ago surplus deal and worked really well, which I cannot say for the retail replacements I got a few years back.

    The tan envelope opener on the left is an obvious case of IP theft, copying the size and shape using a scanned image:

    Classic opener - knife blades - scan
    Classic opener – knife blades – scan

    The two blades seemed like good candidates, with the lower one winning the contest:

    Kobalt 78010 Mini Utility Knife Blade mask
    Kobalt 78010 Mini Utility Knife Blade mask

    Although the pack of “mini utility knife blades” sports a Lowe’s Kobalt part number, they no longer carry that item. You can find plenty of identical blades elsewhere, so they’re not a rare collectible and I have plenty of backup.

    Put the outline of the opener on a cut layer, put the blade on an engraving layer, orient appropriately, and make a mirror-image duplicate:

    Envelope Opener - LB Layout
    Envelope Opener – LB Layout

    The original opener is a touch over 3 mm thick, so the settings engrave 0.25 mm into the surface to make a blade pocket, then cut the shapes from 1.5 mm TroCraft Eco:

    Envelope Opener - cutting
    Envelope Opener – cutting

    After all the cutting was done, it looks about as you’d expect:

    Envelope Opener - interior layout
    Envelope Opener – interior layout

    Slather with yellow PVA wood glue and apply too many clamps:

    Envelope Opener - clamping
    Envelope Opener – clamping

    Next time around, I’ll round off the edges before assembly, but that’s in the nature of fine tuning:

    Envelope Opener - detail
    Envelope Opener – detail

    The TroCraft sheet engraves so cleanly that, were I to go into mass production, I’d set up a fixture for grayscale engraving shaping the perimeters.

    Obviously, this makes no economic sense, but it does produce a considerable amount of satisfaction, which is pretty much all that matters for such things.