Bafang BBS02 Programming Adapter: CP2102 Version

The last view before sticking the lid in place with hot melt glue:

Bafang BBS02 - CP2102 Programming Adapter
Bafang BBS02 – CP2102 Programming Adapter

The cable on the right goes to the motor controller through the display pigtail cable, sporting colors from a parallel universe.

A (possibly not counterfeit) CP2102 USB-to-serial adapter allows a slightly smaller case than one with the known-fake FTDI adapter and added some identification:

Bafang BBS02 - CP2102 Programming Adapter - case solid model
Bafang BBS02 – CP2102 Programming Adapter – case solid model

It splits along the midline for printing, of course.

The OpenSCAD source code replaces the previous version:

// Programming cable case

ProgCavity = [60.0,18.0,7.0];
ProgBlock = [70.0,24.0,13.0];
ProgCableOD = 4.0;

module ProgrammerCase() {

    difference() {
        hull() {
            for (i=[-1,1], j=[-1,1])
                translate([i*(ProgBlock.x/2 - CornerRadius),j*i*(ProgBlock.y/2 - CornerRadius),-ProgBlock.z/2])
                    cylinder(r=CornerRadius,h=ProgBlock.z,$fn=12);
            }
        translate([-ProgBlock.x,0,0])
            rotate([0,90,0])
                PolyCyl(ProgCableOD,3*ProgBlock.x,6);
        cube(ProgCavity,center=true);

        translate([0,0,ProgBlock.z/2 + ProgCavity.z/2 - EmbossDepth])
            cube(ProgCavity,center=true);
        translate([0,0,-(ProgBlock.z/2 + ProgCavity.z/2 - EmbossDepth)])
            cube(ProgCavity,center=true);

    }

    translate([0,4,ProgBlock.z/2 - EmbossDepth])
        linear_extrude(height=EmbossDepth)
            text(text="Bafang BBS02",
                 size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                 halign="center",valign="center");

    translate([0,-4,ProgBlock.z/2 - EmbossDepth])
        linear_extrude(height=EmbossDepth)
            text(text="Programmer",
                 size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                 halign="center",valign="center");

    translate([0,4,-ProgBlock.z/2])
        linear_extrude(height=EmbossDepth)
            mirror([1,0])
                text(text="Ed Nisley",
                    size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                    halign="center",valign="center");
    translate([0,-4,-ProgBlock.z/2])
        linear_extrude(height=EmbossDepth)
            mirror([1,0])
                text(text="softsolder.com",
                    size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                    halign="center",valign="center");

}

// Half case sections for printing

module HalfCase(Section = "Upper") {

    intersection() {
       translate([0,0,ProgBlock.z/4])
            cube([2*ProgBlock.x,2*ProgBlock.y,ProgBlock.z/2],center=true);
        if (Section == "Upper")
            ProgrammerCase();
        else
            translate([0,0,ProgBlock.z/2])
                ProgrammerCase();
    }
}

// .. snippage ..

        translate([0,2*Block.x/2 * gap,0]) {

            translate([gap*ProgBlock.x/2,0,ProgBlock.z/2])
                rotate([180,0,0])
                    HalfCase("Upper");
            translate([-gap*ProgBlock.x/2,0,0])
                HalfCase("Lower");
        }

My friend rides about the same way we do, except from a much higher perch, so I’ll start her off with a configuration similar to the one we settled on for Mary’s Tour Easy.