Saturday, July 16, 2011

Computer controlled, cheap and easy



This little bad-boy is a 4-relay controller that plugs into the USB of a computer. You can communicate with it over serial bus (this is actually a virtual serial communication, but that abstraction layer is someone else's problem).

That means you can putty into this machine to give it commands and ask it questions. It also means you can connect to using python. Once you're into it, you can control the mechanical relays. If you hook up some electronics to those relays you'll be able to control things in the real world with computer commands.

The controller itself was about $50 and setting it up required no software installation on my linux machine and took me about 15 minutes without any instructions. If you choose to do this, you will have my instructions:

Start python:
% python

Run this code:
>>> import serial
>>> ser = serial.Serial('/dev/ttyACM0',115200)
(If this gives you an error, go to that directory and see what's there. I found it by connecting to ever file in that directory which had been modified around when I plugged the device into the USB port)
>>> ser.isOpen()
True
(we're just checking it with this command)
>>> ser.write('\r\n')
(For some reason it won't respond unless you give it a command first)
>>> ser.read()
(this should start getting characters back. Keep going till you get two ":" characters)
>>> ser.write('REL3.ON\r\n')
(this will lite the third relay as the machine attempts to activate it. Till you put a 9V power supply on the board, however, nothing will actually move.)

Saturday, June 18, 2011

The new secret lair






So I've got some even bigger and crazier ideas coming up. That means I'll need a new secret lair. I've been taking a look around this property. Turns out behind all that brush there's a really big fucking hill. It's zoned L1 so I can go up 25 above the top of the hill. It's tower/bunker time kids!

Also I just have to say, machetes are kick ass. But for projects like this, they really need to come in a two-handed form. These bushes were often over my head and an inch thick each.

Tuesday, June 7, 2011

Making the LP-1 laser pistol




The laser pistol was actually remarkably easy to build. The circuits for it are trivially easy. There are 4 blocks of laser diodes (6 lasers each) and I've got 4 pre-made 1A circuits for each of them running off a 4AH, 24V lithium battery pack (in blue).

There is single switch to turn them all on which is on a 1' wire. There's also switches for each of the sets of lasers for testing purposes which I mounted on the body.

The battery pack itself is actually two 12V batteries so there's a switch to flip the charger between them.

The frame itself is just two pieces of perforated steel L-bar. There's a single bolt in the back to hold them together. This provides the mounting for the main on-off switch as well as the laser and all the other parts.

I had to make some pretty funky parts to mount the laser block and here again the 3D printer proves it's value.






boltNutWidth = 14;//12.5;

boltHexWidth = 7.8; //tan(pi/6)*boltNutWidth

topSecHeight = 12;

topCutDepth = 100;//(topSecHeight-3)*2;

bottomHeight = 3;

boltRad = 5.1;

boltDistance = 15;

boltToFront = 16;

boltToSide = 40;

topBoltToFront = 18;

topBoltToSide = 20;

totalHeight = 23;

ftHeight = 6;

ftLen = 65;

ftWidth = 15;

wt = 3;

module laserTop()

{

difference()

{

union() //Added parts

{

translate( [ (ftLen+boltRad+wt)/2-boltRad-wt, (ftWidth+boltRad+wt)/2-boltRad-wt , wt/2 ])

cube(size=[ftLen+boltRad+wt,ftWidth+boltRad+wt, wt],center=true);

translate( [ (boltToFront-1+boltRad+wt)/2-boltRad-wt, (boltToSide+boltRad+wt)/2-boltRad-wt ,(wt-3)/2 ])

cube(size=[boltToFront-1+boltRad+wt, boltToSide+boltRad+wt, wt+3],center=true);

translate( [ (topBoltToFront-3+boltRad+wt)/2-boltRad-wt, (topBoltToSide+boltRad+wt)/2-boltRad-wt ,-topSecHeight/2 ])

cube(size=[topBoltToFront-3+boltRad+wt, topBoltToSide+boltRad+wt,topSecHeight],center=true);

}

union() //Removed parts

{

//special notch

translate( [20,13,0])

cube(size=[5,5,100],center=true);

cylinder(h=100, r=boltRad,center=true);

union()

{

rotate([0,0,0])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,60])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,120])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

}

translate([0,boltDistance,0])

{

cylinder(h=100, r=boltRad,center=true);

union()

{

rotate([0,0,0])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,60])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,120])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

}

}

}

}

}

module circuitHolder()

{

difference()

{

union() //Added parts

{

translate( [ (ftLen+boltRad+wt)/2-boltRad-wt, (ftWidth+boltRad+wt)/2-boltRad-wt , ftHeight/2 ])

cube(size=[ftLen+boltRad+wt,ftWidth+boltRad+wt, ftHeight],center=true);

translate( [ (boltToFront+boltRad+wt)/2-boltRad-wt, (boltToSide+boltRad+wt)/2-boltRad-wt ,bottomHeight/2 ])

cube(size=[boltToFront+boltRad+wt, boltToSide+boltRad+wt,bottomHeight],center=true);

translate( [ (topBoltToFront+boltRad+wt)/2-boltRad-wt, (topBoltToSide+boltRad+wt)/2-boltRad-wt ,totalHeight/2 ])

cube(size=[topBoltToFront+boltRad+wt, topBoltToSide+boltRad+wt,totalHeight],center=true);

}

union() //Removed parts

{

cylinder(h=100, r=boltRad,center=true);

translate([0,boltDistance,0])

cylinder(h=100, r=boltRad,center=true);

}

}

}

rotate([180,0,0])

laserTop();

//circuitHolder();

//translate([0,0,-10])

//cube(size=[30,30,20], center=true);










boltNutWidth = 14;//12.5;

boltHexWidth = 7.8; //tan(pi/6)*boltNutWidth

topSecHeight = 12;

topCutDepth = 100;//(topSecHeight-3)*2;

bottomHeight = 3;

boltRad = 5.1;

boltDistance = 15;

topBoltToFront = 10;

topBoltToSide = 25;

totalHeight = 23;

ftHeight = 6;

ftLen = 45;

ftWidth = 15;

wt = 3;

module laserTop()

{

difference()

{

union() //Added parts

{

translate( [ (ftLen+boltRad+wt)/2-boltRad-wt, (ftWidth+boltRad+wt)/2-boltRad-wt , wt/2 ])

cube(size=[ftLen+boltRad+wt,ftWidth+boltRad+wt, wt],center=true);

translate( [ (boltToFront-1+boltRad+wt)/2-boltRad-wt, (boltToSide+boltRad+wt)/2-boltRad-wt ,(wt-3)/2 ])

cube(size=[boltToFront-1+boltRad+wt, boltToSide+boltRad+wt, wt+3],center=true);

translate( [ (topBoltToFront-3+boltRad+wt)/2-boltRad-wt, (topBoltToSide+boltRad+wt)/2-boltRad-wt ,-topSecHeight/2 ])

cube(size=[topBoltToFront-3+boltRad+wt, topBoltToSide+boltRad+wt,topSecHeight],center=true);

}

union() //Removed parts

{

//special notch

translate( [20,13,0])

cube(size=[5,5,100],center=true);

cylinder(h=100, r=boltRad,center=true);

union()

{

rotate([0,0,0])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,60])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,120])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

}

translate([0,boltDistance,0])

{

cylinder(h=100, r=boltRad,center=true);

union()

{

rotate([0,0,0])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,60])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

rotate([0,0,120])

cube([boltHexWidth,boltNutWidth,topCutDepth],center=true);

}

}

}

}

}

//rotate([180,0,0])

//laserTop();

circuitHolder();

//translate([0,0,-10])

//cube(size=[30,30,20], center=true);

Saturday, June 4, 2011

Taking the 24W laser on the road

Setup for the slo-mo campera

Thanks to Star @ http://intellectualventureslab.com for the camera & filming. We setup this little shake outside the lab and they lent us the use of their mondo-expensive high speed camera for an afternoon.

Notice that with the angles the gun shoots at it actually hits the target at an angle and can really take a flight through the sky.



Saturday, May 14, 2011

World's fastest coil gun breaking a 3mm thick piece of acrylic



This material actually has some non trivial strength. But if it doesn't flex, it's got nothing on the accelerator.