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.

Tag: Improvements

Making the world a better place, one piece at a time

  • Danger Zone Earrings: GITD Set

    Danger Zone Earrings: GITD Set

    Embiggening the SCP symbols used on the yellow vinyl-on-acrylic version improves their proportions:

    SCP Earrings - GITD vs vinyl PSA
    SCP Earrings – GITD vs vinyl PSA

    The black-on-white look come from vinyl PS atop GITD tape atop some transparent red acrylic, which looks a whole lot better in its natural environment:

    SCP Earrings - GITD in action
    SCP Earrings – GITD in action

    Making those ten samples requires 15 minutes of laser time (mostly kiss-cutting the patterns at maybe 5 mm/s) and another 25 minutes of weeding and primping. I’m not convinced this is an economically feasible activity, but I really like the results.

    Nah, I’m still not getting my ears punched.

  • Danger Zone Earrings: More SCP Warning Labels

    Danger Zone Earrings: More SCP Warning Labels

    More tinkering produced a full set of SCP warning labels in vector format suitable for laser cutting:

    SCP warning signs - LB layout
    SCP warning signs – LB layout

    The faint blue corresponds to the LightBurn tool layer, because you’ll want to assign your own cutting parameters.

    The circumscribing circle provides a convenient way to snap the pattern into something else, because the symbols in the middle are not necessarily centered around their geometric midpoint.

    Suiting action to drawings:

    SCP Earrings - black on yellow - cutting
    SCP Earrings – black on yellow – cutting

    The acrylic fire shows they’re called Danger Zone earrings for well and good reason!

    Anyhow, weeding the black vinyl produces crisp results:

    SCP Earrings - black on yellow - overview
    SCP Earrings – black on yellow – overview

    The fallout shelter symbol (top right) should have a circle around it, but that’s in the nature of fine tuning. It’s also not part of the SCP canon, but it kinda goes along with the radiation warning sign.

    They’re cut from transparent amber non-edge-lit acrylic with black vinyl PSA patterns:

    SCP Earrings - black on yellow - detail
    SCP Earrings – black on yellow – detail

    Still not enough to get me to go full-frontal Mr Clean.

    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.

    I have no explanation for the different stroke widths, other than that SVG files seem to maintain a memory of every transformation applied to any object. LightBurn doesn’t use the stroke widths, so it should work out just fine.

  • Dripworks Micro-Flow Valve Knob Helper

    Dripworks Micro-Flow Valve Knob Helper

    One of the Dripworks Micro-Flow valves in Mary’s garden started spraying water through the mold mark in the middle of the bottom:

    Dripworks valve - bottom view
    Dripworks valve – bottom view

    The autopsy produced a handful of pieces and inconclusive results: no visible holes or cracks.

    Having replaced it with a new (and drilled out) valve, I scanned the underside of the severed valve knob, blew out the contrast, imported it into LightBurn, and got a reasonable approximation to the outline:

    LightBurn geometry over image
    LightBurn geometry over image

    A few more tweaks, weld the outline together, add some markers, and it’s ready for cutting:

    Dripworks valve helper - LB layout
    Dripworks valve helper – LB layout

    Having just done some earrings with PSA vinyl figures, I changed the (green) engraved layer to a kiss cut and Fired The Laser:

    Dripworks valve helper - cutting
    Dripworks valve helper – cutting

    The mess in the vinyl around the through cuts in the ¼ inch acrylic sheet suggest engraving will work better. Lesson learned.

    A few minutes of weeding produced a finger-friendly helper with scorches around the central ends of the vinyl:

    Dripworks valve helper
    Dripworks valve helper

    But it fits right over the knob, which was the whole point of the exercise:

    Dripworks valve helper - in use
    Dripworks valve helper – in use

    Now Mary can adjust the valve without squinting at obscure black-on-black shapes atop the knob.

    I decided keying the helper to the knob so it fit in only one orientation on the knob would be a hindrance, because there’s no easy way to determine their mutual orientation without the aforementioned squinting. Now it’s a matter of putting the helper over the knob, turning it at most a quarter-turn until it drops around the knob, then making another quarter of a turn to put the other red marks parallel to the hose: if it was on, it’s now off, and vice versa.

    After the PSA vinyl peels away, I’ll make another one with engraved lines and any other improvements.

    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.

  • Danger Zone Earrings: GITD and PSA Vinyl FTW

    Danger Zone Earrings: GITD and PSA Vinyl FTW

    With the geometry set up, cutting earrings with surface coatings is just a matter of tweaking a few settings:

    Danger Zone Earrings - GITD and PSA vinyl - white light
    Danger Zone Earrings – GITD and PSA vinyl – white light

    From left to right:

    • Green PSA vinyl on black acrylic
    • Black PSA vinyl on edge-lit acrylic
    • GITD tape stuck on black acrylic

    UV lights up the edge-lit samples:

    Danger Zone Earrings - GITD and PSA vinyl - UV light
    Danger Zone Earrings – GITD and PSA vinyl – UV light

    And UV powers up GITD tape something fierce:

    Danger Zone Earrings - GITD radiation
    Danger Zone Earrings – GITD radiation

    Cutting the central pattern out of the GITD earring might make it look even better, but I like the subtle presentation.

    If it’s flash you want, then retroreflective tape is your fashion friend:

    Danger Zone Earrings - retroreflective
    Danger Zone Earrings – retroreflective

    The bolder kiss-cut lines in the middle earring might suffice, but the cutouts on the right definitely look more distinctive. Perhaps the kiss-cut perimeter line would set the pattern off a little better.

    Assuming PSA vinyl sticks to itself and GITD tape well enough to survive normal handling, that would make multicolor earrings an option:

    Danger Zone Earrings - multilayer PSA vinyl
    Danger Zone Earrings – multilayer PSA vinyl

    On the left: blue PSA vinyl on GITD tape. On the right: green PSA vinyl on red PSA vinyl on black acrylic. Peeling the PSA vinyl is tedious and I’m still not good enough to avoid small nicks in the underlying layer.

    GITD FTW:

    Danger Zone Earrings - multilayer vinyl GITD
    Danger Zone Earrings – multilayer vinyl GITD

    Now, to work on more patterns …

  • Seedling Starter Pot Bottoms

    Seedling Starter Pot Bottoms

    One of Mary’s gardening compadres teaches a kid’s class which involves starting seedlings in “pots” made from the cardboard tubes found in paper towels and toilet paper. Cutting four slits in the bottom of the tube and folding the flaps inward puts a bottom on the pot, but what’s the fun in that?

    Draw a 42 mm circle, set the layer to cut corrugated cardboard, turn the circle into suitable arrays, flatten some boxes from the heap, and Fire the Laser:

    Seedling starter pot bottoms
    Seedling starter pot bottoms

    Collect the fallen disks from the chip tray and jam one in place as a serving suggestion, where it fits like it was custom-made:

    TP roll seedling starter pot bottom
    TP roll seedling starter pot bottom

    You’d still want to fold some flaps over the disk to keep it in place, but now your pot has a real bottom.

    I have no idea if 42 mm is a Galactic Constant, but it worked for the pile of tubes we had on hand.

    That was easy …

  • Danger Zone Earrings: MVP

    Danger Zone Earrings: MVP

    Some geometry review and a bit of fiddling with LightBurn produced regularized patterns suitable for laser cuttery:

    Danger Zone Earrings - radioactive - handful
    Danger Zone Earrings – radioactive – handful

    A key trick: circumscribe the figure with a circle on a tool layer, then group the whole mess together, so that the center of the circle coincides with the desired center of the figure. In particular, the geometric center of an equilateral triangle is not at the center of its vertical extent:

    Danger Zone Earrings - radioactive - LB layout
    Danger Zone Earrings – radioactive – LB layout

    The dark blue layer engraves the surface, the red layer cuts through 3 mm acrylic, and the light blue layer is the tooling.

    I like the edge-lit ones, although the simplicity of laser-cut clear acrylic is hard to beat:

    Danger Zone Earrings - radioactive - white light
    Danger Zone Earrings – radioactive – white light

    Wearing them in a place flooded with UV radiation would set you apart:

    Danger Zone Earrings - radioactive - GITD UV
    Danger Zone Earrings – radioactive – GITD UV

    The careful observer will note stress cracking in the two clear earrings in the middle row. Those came from the vintage paper-covered acrylic sheet and I used alcohol to clean off the not-quite-vaporized glue just to see if isopropyl alcohol would behave differently than denatured alcohol. Nope, the cracks appear instantly.

    Peeling the paper and engraving the bare surface produced the clear-frosted earring in the upper right, with the radiation symbol cut out of the sheet. Engraving without surface protection tends to deposit vaporized acrylic dust everywhere, so it would require hand cleaning without the cutouts.

    The cutouts get 0.1 mm inward offsets to slightly increase the wall thickness around that central circle.

    One combination I didn’t try: engrave the triangle perimeter for emphasis and cut out the symbol for contrast with edge-lit acrylic.

    Dropping other symbols into place should be straightforward, with the center of the circumcircle as the snap target.

    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.

  • Copying Action Camera Video Files: Now With Arrays

    Copying Action Camera Video Files: Now With Arrays

    Using Bash arrays is an exercise in masochism, but I got to recycle most of the oddities from the previous script, so it wasn’t a dead loss.

    The cameras use individually unique / screwy / different filesystem layouts, so the script must have individual code to both copy the file and decapitalize the file extensions. This prevents using a single tidy function, although laying out the code in case statements keyed by the camera name helps identify what’s going on.

    My previous approach identified the MicroSD cards by their UUIDs, which worked perfectly right up until the camera reformats the card while recovering from a filesystem crash and installs a randomly generated UUID. Because there’s no practical way to modify an existing UUID on a VFAT drive, I’m switching to the volume label as needed:

    #-- action cameras and USB video storage
    UUID=B40C6DD40C6D9262	/mnt/video	ntfs	user,noauto,uid=ed	0	0
    UUID=B257-AE02		/mnt/Fly6	vfat	user,noauto,uid=ed	0	0
    #UUID=0000-0001		/mnt/M20	vfat	user,noauto,uid=ed	0	0
    UUID=3339-3338		/mnt/M20	vfat	user,noauto,uid=ed	0	0
    LABEL=AS30V		/mnt/AS30V	exfat	user,noauto,uid=ed	0	0
    LABEL=C100-0001		/mnt/C100_1	vfat	user,noauto,uid=ed	0	0
    LABEL=C100-0002		/mnt/C100_2	vfat	user,noauto,uid=ed	0	0
    UUID=0050-0001		/mnt/M50	vfat	user,noauto,uid=ed	0	0
    

    In particular, note the two UUIDs for the M20 camera: there’s a crash and reformat in between those two lines. The two C100 cameras started out with labels because the M20 taught me the error of my ways.

    The script simply iterates through a list array of the cameras and tries to mount the corresponding MicroSD card for each one: the mount points are cleverly chosen to match the camera names in the array. Should the mount succeeds, an asynchronous rsync then slurps the files onto the bulk video drive.

    With all the rsync operations running, the script waits for all of them to complete before continuing. I don’t see much point in trying to identify which rsync just finished and fix up its files while the others continue to run, so the script simply stalls in a loop until everything is finished.

    All in all, the script scratches my itch and, if naught else, can serve as a Bad Example™ of how to get the job done.

    A picture to keep WordPress from reminding me that readers respond positively to illustrated posts:

    A pleasant day for a ride - 2023-06-01
    A pleasant day for a ride – 2023-06-01

    Ride on!

    The Bash script as a GitHub Gist:

    #!/bin/bash
    # This uses too many bashisms for dash
    source /etc/os-release
    echo 'Running on' $PRETTY_NAME
    if [[ "$PRETTY_NAME" == *Manjaro* ]] ; then
    ren='perl-rename'
    dm='sudo dmesg'
    elif [[ "$PRETTY_NAME" == *Ubuntu* ]] ; then
    ren='rename'
    dm='dmesg'
    else
    echo 'New distro to me:' $PRETTY_NAME
    echo ' … which rename command is valid?'
    exit
    fi
    echo Check for good SD card spin-up
    $dm | tail -50
    echo … Ctrl-C to bail out and fix / Enter to proceed
    read junk
    thisdate=$(date –rfc-3339=date)
    echo Date: $thisdate
    # MicroSD / readers / USB drive defined in fstab
    # … with UUID or PARTID as appropriate
    echo Mounting bulk video drive
    sudo mount /mnt/video
    if [ $? -ne 0 ]; then
    echo '** Cannot mount video storage drive'
    exit
    fi
    # Show starting space available
    df -h /mnt/video
    # list the cameras
    declare -a cams=( AS30V Fly6 M20 M50 C100_1 C100_2 )
    declare -A targets=( \
    [AS30V]=/mnt/video/AS30V/$thisdate \
    [Fly6]=/mnt/video/Fly6/DCIM \
    [M20]=/mnt/video/M20/$thisdate \
    [M50]=/mnt/video/M50/$thisdate \
    [C100_1]=/mnt/video/C100_1/$thisdate \
    [C100_2]=/mnt/video/C100_2/$thisdate \
    )
    declare -A PIDs
    declare -A Copied
    echo Iterating through cameras: ${cams[*]}
    Running=0
    for cam in ${cams[*]} ; do
    printf "\nProcessing: $cam\n"
    mpt="/mnt/$cam"
    target=${targets[$cam]}
    sudo mount $mpt
    if [ $? -eq 0 ]; then
    echo " Start $cam transfer from $mpt"
    echo " Make target directory: $target"
    mkdir $target
    case $cam in
    ( AS30V )
    rsync -ahu –progress –exclude "*THM" $mpt/MP_ROOT/100ANV01/ $target &
    ;;
    ( Fly6 )
    rsync -ahu –progress $mpt /mnt/video &
    ;;
    ( M20 )
    n=$( ls $mpt/DCIM/Photo/* 2> /dev/null | wc -l )
    if [ $n -gt 0 ] ; then
    echo " copy M20 photos first"
    rsync -ahu –progress $mpt/DCIM/Photo/ $target
    fi
    echo " cmd: rsync -ahu –progress $mpt/DCIM/Movie/ $target"
    rsync -ahu –progress $mpt/DCIM/Movie/ $target &
    ;;
    ( M50 )
    n=$( ls $mpt/DCIM/PHOTO/* 2> /dev/null | wc -l )
    if [ $n -gt 0 ] ; then
    echo " copy M50 photos first"
    rsync -ahu –progress $mpt/DCIM/PHOTO/ $target
    fi
    rsync -ahu –progress $mpt/DCIM/MOVIE/ $target &
    ;;
    ( C100_1 | C100_2 )
    n=$( ls $mpt/DCIM/Photo/* 2> /dev/null | wc -l )
    if [ $n -gt 0 ] ; then
    echo " copy $cam photos first"
    rsync -ahu –progress $mpt/DCIM/Photo/ $target
    fi
    rsync -ahu –progress $mpt/DCIM/Movie/ $target &
    ;;
    ( * )
    printf "\n**** Did not find $cam in list!\n"
    ;;
    esac
    PIDs[$cam]=$!
    echo " PID for $cam: " "${PIDs[$cam]}"
    Copied[$cam]=1
    (( Running++ ))
    else
    echo " skipping $cam"
    Copied[$cam]=0
    fi
    done
    printf "\n—– Waiting for all rsync terminations\n"
    echo PIDs: "${PIDs[*]}"
    if [ $Running -eq 0 ] ; then
    echo No rsyncs started, force error
    rcsum=9999
    else
    rcsum=0
    while [ $Running -gt 0 ] ; do
    echo " waiting: $Running"
    wait -n -p PID
    rc=$?
    rcsum=$(( rcsum+$rc ))
    echo RC for $PID: $rc
    (( Running– ))
    done
    echo All rsyncs finished
    fi
    if [ $rcsum -eq 0 ] ; then
    echo '—– Final cleanups'
    for cam in ${cams[*]} ; do
    if [ "${Copied[$cam]}" -eq 1 ] ; then
    echo Cleanup for: $cam
    mpt=/mnt/$cam
    target=${targets[$cam]}
    echo Target dir: $target
    case $cam in
    ( Fly6 )
    find $target -name \*AVI -print0 | xargs -0 $ren -v -f 's/AVI/avi/'
    rm -rf $mpt/DCIM/*
    ;;
    ( AS30V )
    find $target -name \*MP4 -print0 | xargs -0 $ren -v -f 's/MP4/mp4/'
    rm $mpt/MP_ROOT/100ANV01/*
    ;;
    ( M50 )
    find $target -name \*MP4 -print0 | xargs -0 $ren -v -f 's/MP4/mp4/'
    rm $mpt/DCIM/MOVIE/*
    n=$( ls $mpt/DCIM/PHOTO/* 2> /dev/null | wc -l )
    if [ $n -gt 0 ] ; then
    echo placeholder $cam
    rm $mpt/DCIM/PHOTO/*
    fi
    ;;
    ( * )
    find $target -name \*MP4 -print0 | xargs -0 $ren -v -f 's/MP4/mp4/'
    find $target -name \*JPG -print0 | xargs -0 $ren -v -f 's/JPG/jpg/'
    rm $mpt/DCIM/Movie/*
    n=$( ls $mpt/DCIM/Photo/* 2> /dev/null | wc -l )
    if [ $n -gt 0 ] ; then
    echo placeholder $cam
    rm $mpt/DCIM/Photo/*
    fi
    ;;
    esac
    sudo umount $mpt
    else
    echo No cleanup for: $cam
    fi
    done
    echo '—– Space remaining on video drive'
    df -h /mnt/video
    sudo umount /mnt/video
    date
    echo Done!
    else
    echo Whoopsie! Total RC: $rcsum
    fi