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: Photography & Images

Taking & making images.

  • CNC 3018-Pro: Probe Camera Case for Logitch QuickCam Pro 5000

    The ball-shaped Logitch QuickCam Pro 5000 has a rectangular PCB, so conjuring a case wasn’t too challenging:

    Probe Camera Case - Logitech QuickCam Pro 5000 - bottom
    Probe Camera Case – Logitech QuickCam Pro 5000 – bottom

    That’s more-or-less matte black duct tape to cut down reflections.

    The top side has a cover made from scuffed acrylic scrap:

    Probe Camera Case - Logitech QuickCam Pro 5000 - top
    Probe Camera Case – Logitech QuickCam Pro 5000 – top

    The corners are slightly rounded to fit under the screw heads holding it in place.

    The solid model shows off the internal ledge positioning the PCB so the camera lens housing rests on the floor:

    3018 Probe Camera Mount - solid model
    3018 Probe Camera Mount – solid model

    The notch lets the cable out, while keeping it in one place and providing some strain relief.

    I though if a camera was recognized by V4L2 and worked with VLC, it was good to go:

    Logitech QuickCam Pro 5000 - short focus
    Logitech QuickCam Pro 5000 – short focus

    Regrettably, it turns out the camera has a pixel format incompatible with the Python opencv interface used by bCNC. This may have something to do with running the code on a Raspberry Pi, rather than an x86 box.

    The camera will surely come in handy for something else, especially with such a cute case.

    The OpenSCAD source code as a GitHub Gist:

    // Probe Camera Mount for CNC 3018-Pro Z Axis
    // Ed Nisley – KE4ZNU – 2019-08
    Layout = "Block"; // [Show,Build,Block]
    Support = false;
    /* [Hidden] */
    ThreadThick = 0.20;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    ID = 0;
    OD = 1;
    LENGTH = 2;
    inch = 25.4;
    //———————-
    // Dimensions
    PCB = [45.0,38.0,1.5]; // Logitech QuickCam Pro 5000 ball camera
    PCBLip = 1.0; // max non-component border
    PCBChamfer = 3.0; // cut along XY axes for corner bevel
    PCBClearTop = 15.0; // cables & connectors
    PCBClearSides = [0.5,0.5]; // irregular edges & comfort zone
    PCBClearBelow = 5.0; // lens support bracket rests on floor
    Lens = [11.5,14.2,3.0]; // LENGTH = beyond PCBClearBelow bracket
    LensOffset = [-1.5,0.0,0]; // distance from center of board
    CableOD = 4.5;
    BaseThick = Lens[LENGTH];
    Screw = [
    3.0,6.8,18.0 // M3 OD=washer, LENGTH=below head
    ];
    RoundRadius = IntegerMultiple(Screw[OD]/2,1.0); // corner rounding
    ScrewOC = [PCB.x + 2*sqrt(Screw[OD]),PCB.y + 2*sqrt(Screw[OD])];
    echo(str("Screw OC: ",ScrewOC));
    Lid = [ScrewOC.x,ScrewOC.y,1.0/16.0 * inch]; // top cover plate
    echo(str("Lid: ",Lid));
    BlockSize = [ScrewOC.x + 2*RoundRadius,ScrewOC.y + 2*RoundRadius,
    BaseThick + PCBClearBelow + PCB.z + PCBClearTop + Lid.z];
    echo(str("Block: ",BlockSize));
    NumSides = 2*3*4;
    //———————-
    // Useful routines
    module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
    Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
    FixDia = Dia / cos(180/Sides);
    cylinder(r=(FixDia + HoleWindage)/2,
    h=Height,
    $fn=Sides);
    }
    // Basic shapes
    // Overall block
    module Block() {
    difference() {
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,0])
    cylinder(r=RoundRadius,h=BlockSize.z,$fn=NumSides);
    for (i=[-1,1], j=[-1,1]) // corner screws
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,BlockSize.z – Screw[LENGTH]])
    cylinder(d=Screw[ID],h=2*Screw[LENGTH],$fn=8); // cylinder = undersized
    translate(LensOffset + [0,0,-Protrusion]) // lens body
    PolyCyl(Lens[OD],2*BlockSize.z,NumSides);
    translate([0,0,BlockSize.z/2 + BaseThick]) // PCB lip on bottom
    cube([PCB.x – 2*PCBLip,PCB.y,BlockSize.z],center=true);
    translate([0,0,BlockSize.z/2 + BaseThick + PCBClearBelow]) // PCB clearance
    cube([PCB.x + 2*PCBClearSides.x,PCB.y + 2*PCBClearSides.y,BlockSize.z],center=true);
    translate([0,0,BlockSize.z – Lid.z/2]) // lid recess
    cube(Lid + [0,0,Protrusion],center=true);
    translate([0,Lid.y/2 – CableOD/2,BaseThick + PCBClearBelow + PCB.z]) // cable exit
    hull()
    for (j=[-1,1])
    translate([0,j*CableOD/4,0])
    rotate(180/8)
    PolyCyl(CableOD,BlockSize.z,8);
    }
    }
    //- Build it
    if (Layout == "Block")
    Block();
    if (Layout == "Show") {
    Block();
    }
    if (Layout == "Build") {
    Block();
    }

  • City of Poughkeepsie Police Armor

    Returning from a long ride, we spotted an unusual sign at the Vassar Farm entrance (clicky for more dots):

    Vassar Farm - Poughkeepsie Police Training sign - 2019-08-12
    Vassar Farm – Poughkeepsie Police Training sign – 2019-08-12

    Even more unusual was the sight of a matte black MRAP jouncing across the field:

    Vassar Farm - Poughkeepsie Police MRAP - 2019-08-12
    Vassar Farm – Poughkeepsie Police MRAP – 2019-08-12

    I hadn’t noticed an uptick of the insurgency around here, but I suppose it could happen.

    It looks like a Cougar HE 6×6 MRAP on loan from the DLA 1033 Program to the City of Poughkeepsie Police Department. The flat top suggests they dismounted the CROWS gun, which seems a definite step down in no-knock capability.

    Some poking around showed the Poughkeepsie Police Department acquired a 107 mm Mortar Carrier some years ago:

    Marshall Project - Poughkeepsie 107 mm Mortar Carrier
    Marshall Project – Poughkeepsie 107 mm Mortar Carrier

    The M106 is an impressive hunk of tracked armor, although it seems unsuited for urban warfare and would certainly scuff up the streets pretty badly. I don’t know if they scrapped the M106 in favor of the MRAP.

    I’m hoping they don’t collaborate with the Dutchess County Sheriff’s Department to patrol the Rail Trail, even within the City limits.

  • Logitech “QuickCam Pro 5000” Ball Camera Disassembly

    Another alignment camera contestant from the Big Box o’ Junk Cameras:

    Logitech Pro 5000 Ball Camera - overview
    Logitech Pro 5000 Ball Camera – overview

    It’s a Logitech QuickCam Pro 5000 with a native 640×480 resolution. For no obvious reason, it seems to work better on a Raspberry Pi than the Logitech QuickCam for Notebooks Deluxe I ripped apart a few weeks ago, where “better” is defined as “shows a stable image”. I have no explanation for anything.

    Remove the weird bendy foot-like object by pulling straight out, then remove the single screw from the deep hole visible just behind the dent in the top picture:

    Logitech Pro 5000 Ball Camera - disassembled
    Logitech Pro 5000 Ball Camera – disassembled

    The stylin’ curved plate on the top holds the microphone and a button, neither of which will be of use in its future life. Unplug and discard, leaving the USB cable as the only remaining connection:

    Logitech Pro 5000 Ball Camera - USB connector
    Logitech Pro 5000 Ball Camera – USB connector

    Inexplicably, the cable shield is soldered to the PCB, so the connector doesn’t do much good. Hack the molded ball off of the cable with a diagonal cutter & razor knife, taking more care than I did to not gouge the cable insulation.

    A glue dot locks the focusing threads:

    Logitech Pro 5000 Ball Camera - focus glue
    Logitech Pro 5000 Ball Camera – focus glue

    Gentle suasion with a needle nose pliers pops the dot, leaving the lens free to focus on objects much closer than infinity:

    Logitech QuickCam Pro 5000 - short focus
    Logitech QuickCam Pro 5000 – short focus

    Now, to conjure a simpleminded mount …

  • Monthly Image: A Tree Full of Turtles

    Spotted along Robinson Lane:

    Tree full of turtles
    Tree full of turtles

    A closer look at the same number of pixels:

    Tree full of turtles - detail
    Tree full of turtles – detail

    The little one way over on the left is definitely having an adventure!

    I’d read of goats climbing trees, but never turtles.

  • Xiaomi-Dafang Hacks: FTP Server for Camera Files

    Since the PiHole runs all the time, it now hosts an FTP server to stash snapshots from the cameras onto a 64 GB USB stick. I installed ProFTPD, which Just Worked with a few configuration tweaks:

    UseIPv6             off
    ServerName          "PiHole"
    DefaultRoot         /mnt/cameras
    RequireValidShell   off

    The cameras use the BusyBox ftpput command to stash their images (with the hostname prepended), which requires a few changes to motion.conf in the cameras:

    ftp_snapshot=true
    ftp_host="192.168.1.2"
    ftp_port=21
    ftp_username=$(/bin/hostname)
    ftp_password="make up your own"
    ftp_stills_dir=$(/bin/hostname)

    The last line uses a separate directory for each camera, although they quickly ran into the FAT32 limit of 64 K files per directory; reformatting the USB stick with an ext3 filesystem solved that problem.

    Fortunately, nothing much ever happens around here

    New Utility Pole Arrives
    New Utility Pole Arrives
  • Logitech “Quickcam for Notebooks Deluxe” USB Camera Disassembly

    My collection of old USB cameras emitted a Logitech Quickcam for Notebooks Deluxe, with a tag giving a cryptic M/N of V-UGB35. Given Logitech’s penchant for overlapping names, its USB identifiers may be more useful for positive ID:

    ID 046d:08d8 Logitech, Inc. QuickCam for Notebook Deluxe

    It works fine as a simple V4L camera and its 640×480 optical resolution may suffice for simple purposes, even if it’s not up to contemporary community standards.

    The key disassembly step turned out to be simply pulling the pivoting base off, then recovering an errant spring clip from the Laboratory Floor:

    Logitech V-UGB35 USB Camera - mount removed
    Logitech V-UGB35 USB Camera – mount removed

    The clips have a beveled side and fit into their recesses in only one orientation; there’s no need for brute force.

    Removing the two obvious case screws reveals the innards:

    Logitech V-UGB35 USB Camera - PCB rear
    Logitech V-UGB35 USB Camera – PCB rear

    Three more screws secure the PCB:

    Logitech V-UGB35 USB Camera - PCB front
    Logitech V-UGB35 USB Camera – PCB front

    The ribbed focus knob around the lens makes it more useful than a nominally fixed-focus camera.

    Reassembly is in reverse order.

    I miss having obvious case screws …

  • Monthly Image: And Then There Were Two

    The turkey hen who once had nine chicks, then seven, now has only two:

    Turkey Hen with two chicks
    Turkey Hen with two chicks

    We haven’t seen the fox since it nailed the previous chick, but it may be responsible for taking a chick a day, every day, for a week.

    We wonder if she misses the rest of her brood as much as we do …

    Taken through two layers of 1950s window glass, zoomed all the way in, with a phone camera.