1. Welcome to Tacoma World!

    You are currently viewing as a guest! To get full-access, you need to register for a FREE account.

    As a registered member, you’ll be able to:
    • Participate in all Tacoma discussion topics
    • Communicate privately with other Tacoma owners from around the world
    • Post your own photos in our Members Gallery
    • Access all special features of the site

Demerbox and Trekpak DIY

Discussion in 'Audio & Video' started by C0d3M0nk3y, Sep 22, 2019.

  1. Sep 22, 2019 at 7:55 PM
    #1
    C0d3M0nk3y

    C0d3M0nk3y [OP] Well-Known Member

    Joined:
    Nov 13, 2015
    Member:
    #169500
    Messages:
    206
    2008 Tacoma Sport DCSB (silver)
    Demerbox and Trekpak DIY

    The Demerbox is a Bluetooth speaker built into a pelican case. There are cheaper bluetooth speakers, but the pelican case got me. My plan has been to add the Demerbox to my home audio set-up by utilizing a raspberry pi and squeezebox as my mobile speaker, and then to use the same pi with a different SD card as a stand-alone player while I am out and about. Right now I have the raspberry pi running squeezelite and everything is going as expected, but I haven't gotten the stand-alone player yet.

    Demerbox:

    One problem with my initial setup was that the raspberry pi bounced around the inside of the Demerbox, so I needed to figure out a way of getting everything nice and tidy. That's where trekpak comes in. I didn't look very hard, but I am pretty sure you can't find a trekpak for the Demerbox, so I decided to make my own.

    For the trekpak DIY I used:
    • corrugated plastic from Michaels (my board was too short, get bigger if you can)
    • thin mini-cell foam (had lots from other projects)
    • DAP weldwood contact cement
    • 3D printer and PETG plastic to print up the pins used to attach everything (if you don't have a printer, then coat hanger wire bent to the right shape might work, but my 3D printed pins are very tight, and so far I am very happy with them)
    • time
    Inside of the Demerbox and why I had to do what I had to do:

    Measure and cut the corrugated plastic to the appropriate length (for the Demerbox, this is really short since the speakers drop into the case pretty far). Cut your foam to the same length and height as the corrugated plastic. For the outside shape, I left the corners alone, and glued the foam along the flat sides. The plastic I used would not fit around the inside of the box, so I had to attach a filler piece and I used foam to keep it all together (you can tell if you look closely).


    Use sandpaper to rough up the plastic and the foam. A light once over works well. Then use a thin coat of DAP weldwood on both the corrugated plastic and the foam. Let one dry as much as you can, and the other to get opaque (no longer shiny). Apply the foam to the plastic. If you do it right, you get one shot. If it is still wet and easy to pull apart, you didn't let it dry enough.

    Test fit the major shape inside the box.

    Repeat the previous steps for the dividers, but you don't need to leave any gaps, and you an cut the dividers at appropriate lengths after you glue everything together.

    Print up pins, or figure out some other way of attaching everything together.


    I attached pins to both the top and bottom of my dividers.

    Fit it all inside the pelican case (this should work for any pelican case, I am just using the Demerbox for mine).

    I will provide the openscad code for the pins I used. Since the corrugated plastic can be different sizes, the code can be adapted. I have 3 different sets of pins; round, square, and a combo of both round and square. for my set-up, I used the combo pins.

    If there are any questions, let me know. My set-up isn't perfect. I actually made quite a few mistakes, but it is functional right now. I suspect the trekpak is more professional than what I did. I have issues with getting the right shape at the beginning, and my pins are not as strong as what trekpak would provide.
     
  2. Sep 22, 2019 at 7:56 PM
    #2
    C0d3M0nk3y

    C0d3M0nk3y [OP] Well-Known Member

    Joined:
    Nov 13, 2015
    Member:
    #169500
    Messages:
    206
    2008 Tacoma Sport DCSB (silver)
    Trekpak DIY pins

    Trekpak pins are made of aluminum, and I couldn't find a comparable source for a price I was willing to pay. You can buy the pins directly from Pelican and I suspect they are really nice, but I couldn't justify it for my project.

    Other DIY projects used coat hangers or irrigation tube stakes. These probably work okay, but I can't imagine that they stay securely in the corrugate plastic holes.

    Since I have a 3D printer, I figured I could print up some pins, and if they weren't strong enough, it only costs me a bit of plastic.

    I print up my pins in PETG since that is the plastic I have settled on. It is pretty strong and resistant to warping in hot temperatures.

    I designed 3 different types of pins: all round, all square, a combination of square and round.

    The all round would work well if you need to make odd shapes with the dividers.

    The all square would work well for squared off dividers.

    The combo should work as well as the square, just easier to get into the holes.

    I used the combo pins for my build.

    I use Openscad for the design of the pins, and you can adjust the sizes with only a few settings changes.

    Here are the various pins, with code:

    Code:
    $fn=60;
    
    pinLengthSquare=16;
    pinLengthRound=5;
    pinLengthTransition=3;
    pinDiameterSquare=3.5;
    
    pinDiameterRound=pinDiameterSquare/2;
    topAdditionalThickness=.5;
    
    roundEdge=1;
    
    pinOffset=7;
    
    
    pointyEndLength=3;
    pointyEndPoint=1;
    
    module drawPin(){
        //square part of pin
        translate([-(pinDiameterSquare-(roundEdge*2))/2,-(pinDiameterSquare-(roundEdge*2))/2,pointyEndLength+pinLengthRound+pinLengthTransition]){
            //rounded cube for upper transition part
            minkowski(){
                cube([pinDiameterSquare-(roundEdge*2),pinDiameterSquare-(roundEdge*2),pinLengthSquare]);
                sphere(roundEdge);
            }
        }
    
        //Transition section. hull 2 waffers to get smooth transition between round and square
        hull(){
            //centering the rounded cube
            translate([-(pinDiameterSquare-(roundEdge*2))/2,-(pinDiameterSquare-(roundEdge*2))/2,pointyEndLength+pinLengthRound+pinLengthTransition]){
                //rounded cube for upper transition part
                minkowski(){
                    //waffer cube used for hulling with transition. the minkowski makes the waffer bigger, but it still works
                    cube([pinDiameterSquare-(roundEdge*2),pinDiameterSquare-(roundEdge*2),.2]);
                    sphere(roundEdge);
                }
            }
            //waffer cylinder for lower transition part
            translate([0,0,pointyEndLength+pinLengthRound])cylinder(.2,pinDiameterRound,pinDiameterRound);
        }
    
        //round part of pin
        translate([0,0,pointyEndLength])cylinder(pinLengthRound,pinDiameterRound,pinDiameterRound);
    
        //pointy end
        /*hull(){
            //waffer cylinder used to hull with sphere to make pointy end
            translate([0,0,pointyEndLength])cylinder(.2,pinDiameterRound,pinDiameterRound);
            sphere(pointyEndPoint);
        }*/
        translate([0,0,pointyEndLength])sphere(pinDiameterRound);
    }
    
    module drawTop(){
        translate([-(pinDiameterSquare-roundEdge*2)/2,-(pinDiameterSquare-roundEdge*2)/2,pinLengthSquare+pinLengthRound+pinLengthTransition+pointyEndLength]){
            minkowski(){
                cube([pinOffset+pinDiameterSquare-roundEdge*2,pinDiameterSquare-roundEdge*2,topAdditionalThickness+pinDiameterSquare-roundEdge*2]);
                sphere(roundEdge);
            }
        }
    }
    
    drawPin();
    translate([pinOffset,0,0])drawPin();
    drawTop();

    All round:
    Code:
    $fn=60;
    
    pinLength=20;
    pinDiameter=2;
    pinOffset=6;
    
    pointyEndLength=3;
    pointyEndPoint=1;
    
    //pin side 1
    cylinder(pinLength,pinDiameter,pinDiameter); //simpe shaft with hard edges
    
    //pin side 2
    translate([pinOffset,0,0]){
        cylinder(pinLength,pinDiameter,pinDiameter); //simpe shaft with hard edges
    }
    
    //top connector
    translate([0,0,pinLength]){
        rotate([0,90,0])cylinder(pinOffset,pinDiameter,pinDiameter); //simpe cylinder
      
        /*translate([pinOffset/2,0,0]){
            rotate([90,0,0])cube([pinOffset,pinDiameter,pinDiameter*2],center=true); //simpe shaft with hard edges
        }*/
      
        sphere(pinDiameter); //rounded top corner 1
        translate([pinOffset,0,0])sphere(pinDiameter); //rounded top corner 2
    }
    
    //pointy end 1
    hull(){
        cylinder(.2,pinDiameter,pinDiameter);
        translate([0,0,-pointyEndLength])sphere(pointyEndPoint);
    }
    
    //pointy end 2
    hull(){
        translate([pinOffset,0,0])cylinder(.2,pinDiameter,pinDiameter);
        translate([pinOffset,0,-pointyEndLength])sphere(pointyEndPoint);
    }
    

    All square:
    Code:
    $fn=30;
    
    pinLength=20;
    pinDiameter=4;
    pinOffset=7;
    
    roundEdge=1;
    
    pointyEndLength=3;
    pointyEndPoint=1;
    
    
    module drawPin(){
        //round corners
        minkowski(){
            translate([-(pinDiameter-(roundEdge*2))/2,-(pinDiameter-(roundEdge*2))/2,pointyEndLength]){
                cube([pinDiameter-(roundEdge*2),pinDiameter-(roundEdge*2),pinLength]);
            }
            sphere(roundEdge);
        }
    
        //hull the sphere to the square to make it look pretty
        hull(){
            translate([0,0,pointyEndLength]){
                //match rounded corners of the pin
                minkowski(){
                    //waffer cube to round corners for matching rest of pin
                    cube([pinDiameter-(roundEdge*2),pinDiameter-(roundEdge*2),.2],center=true);
                    sphere(roundEdge);
                }
            }
            sphere(pointyEndPoint);
        }
    }
    
    module drawTop(){
        //translate([-pinDiameterSquare/2,-pinDiameterSquare/2,pinLengthSquare+pinLengthRound+pinLengthTransition+pointyEndLength]){
        translate([-(pinDiameter-roundEdge*2)/2,-(pinDiameter-roundEdge*2)/2,pinLength+pointyEndLength]){
            minkowski(){
                cube([pinOffset+pinDiameter-roundEdge*2,pinDiameter-roundEdge*2,pinDiameter-roundEdge*2]);
                sphere(roundEdge);
            }
        }
    }
    
    drawPin();
    translate([pinOffset,0,0])drawPin();
    drawTop();

    I printed my pins at 80% fill. They have some flex to them, but I was unable to break them using 'reasonable' force.

     
  3. Sep 22, 2019 at 7:57 PM
    #3
    C0d3M0nk3y

    C0d3M0nk3y [OP] Well-Known Member

    Joined:
    Nov 13, 2015
    Member:
    #169500
    Messages:
    206
    2008 Tacoma Sport DCSB (silver)
    Saved for Raspberry Pi updates
     

Products Discussed in

To Top