Kit: Quadcopter
()This is a Fablab friendly, hackable QuadCopter frame for you to experiment with. It is based on X configuration and is compatible with most 250mm FPV QUAD kits.
Materials:
- One 500x800 mm HDF board (preferably 4mm thick, but 3mm works as well).
- 250mm Quadcopter kit e.g. this on ebay.
- Three screws. Two M5 65mm. One M5 40mm.
- Ten M5 bolts.
- A lot of strips.
- One LiPo 11.1V battery
- Two wires (one red, one black) and a wire connector.
- Gluegun (Needed depending on how snug the fit is between the teeth).
Instructions:
1. Laser Cutting
- Download the PDF file from THIS Dropbox folder.
- Cut the PDF with 4mm HDF board (See this general laser cutter guide).
- Pop out all pieces still attached to it.
2. Assembly
Attach the nuts and bolts to the central piece
Put the HDF pieces together, according to the following pictures
(Note: The boxes themselves fitting together, doesn't necessarily mean the boxes fit together with each other. When assembling the boxes, pay attention to whether they can be attached to the base at the same time)
Put the bottom box onto the central base.
Put the upper box onto the central base. Put together the electronics for the Quadcopter. Do note that the boxes have holes for wiring as well as clips to ensure the battery doesn't move.
Screw together the nuts and bolts to keep it together.
General information about calibration, wiring etch for the quad depends on the specific kit you are using. There are many tutorials online for you to look at.
Notes for modding:
This copter kit is built in a way optimised for modding and changing it. If you wish to change the base itself, the SVG file is in the Dropbox folder. The holes in the copter as well as the boxes are built through coding in Processing, which is available below.
Processing Code
Copy and paste this code into the processing sketch. See the documentations page for more info.
void setupElements()
{
//Bottom
canvas.addTackyRectPiece(2, 10, 23, 13, "bottom");
//bottom holes
canvas.addPopCircle(3.5, 11.5, 1.25);
canvas.addPopCircle(23.5, 21.5, 1.25);
canvas.addRectPiece(12.5, 11, 2.5, 1, "");
canvas.addRectPiece(12.5, 21, 2.5, 1, "");
//bottom sides
mfab botLs1 = canvas.addTackyRectPiece(2, 30, 23, 10, "bottom longside1");
botLs1.top.lType = LTINVERSED;
botLs1.bottom.lType = LTINVERSED;
botLs1.addPopCircle(6,4,4);
botLs1.addPopCircle(17,4,4);
for (int i = 0; i < botLs1.top.length/4; i = i+1)
{
botLs1.top.addLine(0+i*4, 0, 1, 0);
}
mfab botLs2 = canvas.addTackyRectPiece(2, 45, 23, 10, "bottom longside2");
botLs2.top.lType = LTINVERSED;
botLs2.bottom.lType = LTINVERSED;
for (int i = 0; i < botLs2.top.length/4; i = i+1)
{
botLs2.top.addLine(0+i*4, 0, 1, 0);
}
mfab botSs1 = canvas.addTackyRectPiece(2, 60, 13, 10, "bottom shortside");
botSs1.top.lType = LTINVERSED;
botSs1.bottom.lType = LTINVERSED;
for (int i = 0; i < botSs1.top.length/4; i = i+1)
{
botSs1.top.addLine(0+i*4, 0, 1, 0);
}
mfab botSs2 = canvas.addTackyRectPiece(2, 75, 13, 10, "bottom shortside2");
botSs2.top.lType = LTINVERSED;
botSs2.bottom.lType = LTINVERSED;
for (int i = 0; i < botSs2.top.length/4; i = i+1)
{
botSs2.top.addLine(0+i*4, 0, 1, 0);
}
// Top bottom
canvas.addTackyRectPiece(30, 10, 23, 13, "top bottom");
//top bottom holes
canvas.addPopCircle(31.5, 11.5, 1.25);
canvas.addPopCircle(51.5, 21.5, 1.25);
canvas.addPopCircle(41.5, 11.5, 1.25);
canvas.addPopCircle(41.50, 16.50, 4);
//Top
canvas.addTackyRectPiece(58, 10, 23, 13, "top");
//top hole
canvas.addPopCircle(69.5, 11.5, 1.25);
//top sides
mfab topLs1 = canvas.addTackyRectPiece(30, 30, 23, 10, "top longside1");
topLs1.top.lType = LTINVERSED;
topLs1.bottom.lType = LTINVERSED;
//holes and gridholes
topLs1.addMountHoleGrid(1, 2, 20.5, 1);
topLs1.addRectPiece(3, 0, 3, 1, "");
topLs1.addRectPiece(19, 0, 3, 1, "");
for (int i = 0; i < topLs1.top.length/4; i = i+1)
{
topLs1.top.addLine(0+i*4, 0, 1, 0);
}
mfab topLs2 = canvas.addTackyRectPiece(30, 45, 23, 10, "top longside2");
topLs2.top.lType = LTINVERSED;
topLs2.bottom.lType = LTINVERSED;
//holes and grindholes
topLs2.addMountHoleGrid(1, 2, 20.5, 1);
topLs2.addRectPiece(3, 0, 3, 1, "");
topLs2.addRectPiece(19, 0, 3, 1, "");
for (int i = 0; i < topLs2.top.length/4; i = i+1)
{
topLs2.top.addLine(0+i*4, 0, 1, 0);
}
mfab topSs1 = canvas.addTackyRectPiece(30, 60, 13, 10, "top shortside1");
topSs1.top.lType = LTINVERSED;
topSs1.bottom.lType = LTINVERSED;
//grindholes
topSs1.addMountHoleGrid(1, 2, 11.5, 1);
for (int i = 0; i < topSs1.top.length/4; i = i+1)
{
topSs1.top.addLine(2+i*4, 0, 1, 0);
}
mfab topSs2 = canvas.addTackyRectPiece(30, 75, 13, 10, "top shortside2");
topSs2.top.lType = LTINVERSED;
topSs2.bottom.lType = LTINVERSED;
//gridholes
topSs2.addMountHoleGrid(1, 2, 11.5, 1);
for (int i = 0; i < topSs2.top.length/4; i = i+1)
{
topSs2.top.addLine(2+i*4, 0, 1, 0);
}
//Quadbase
mfab quadBase = canvas.addSVG(100, 10, "quad1.svg");
//grind holes
quadBase.addMountHoleGrid(25, 39, 24, 1);
quadBase.addMountHoleGrid(24, 40, 1, 14);
quadBase.addMountHoleGrid(25, 53, 24, 1);
quadBase.addMountHoleGrid(48, 40, 1, 14);
//holes
quadBase.addPopCircle(26.5, 41.5, 1.25);
quadBase.addPopCircle(46.5, 51.5, 1.25);
quadBase.addPopCircle(36.5, 46.5, 4);
}
Made by: Jens Bo Pedersen, Martin Elliott Jensen, Mikael Gamborg Lauridsen and Rasmus Baad