T-Wii Copter v2
last updated 5-23-2011
started with a frame designed by Power (RCGroups) with a few changes
from FlipFlop. It used shower curtain rods and two boards with wooden
clamps. It flew but was too heavy. I made this new version with the
intention of cutting down on the weight. With this design it weighs
2lbs 2oz (no battery). I performs great! You can see a video of it
flying on YouTube.
1 Nintendo WM+ module <link>
1 Arduino mini Pro <link>
1 FTDI Breakout board <link>
1 connector <link>
1 connector <link>
1 USB cable <link>
3 Motors <link> Optima 400 Brushless Motor 2215-740KV 100W
3 ESC's <link> Turnigy Plush 18A
3 props <link> APC 11x4.7
2 Align Trex 600n tailbooms <link> part# HN6031
1 TT miniTitan landing gear <link> part# PV0716
1 TT miniTitan vert. fin <link> part# PV0743
Fun Noodle (foam piece to mount camera in)
Zeal gyro tape <link> part# Z8006
3M Scotch mounting tape <link>
4 (pack contains 5) 3/4" PVC clamps Lowes item# 301297
1 standard size servo
ball link and two balls (I used the ball links like in <this> picture)
1/4" wood sheet
Welder's glue <link>
2mm heat shrink tubing 1ft <link>
3mm heat shrink tubing 1ft <link>
5mm heat shrink tubing 1ft <link>
5ft <link>, 5ft <link> extend the motor wires
30cm servo wire extention <link> (tail servo to arduino)
The above extention is in a 5 pack, you cut the other 4 to make the other connections
1 bolt 1/4"x3-1/2" shoulder section 2" long
6 - 1/8" blind nuts
6 - 1/8" bolts 1/2" long
misc bolts, screws, blind nuts, nyloc nuts, and brass nails
car fuse box, the plastic container that car fuses come in
Radio and receiver
3 female battery connecters and 1 male (I use the XT60 connectors)
2200mah 3S battery
Start by taking apart the Nintendo
Wii Motion Plus module. It has Tri-Wing screws. You can search the
internet. Some people use a flat blade screwdriver and mod it to work.
I used a cutting disk on a dremel to cut the screws from the sides of
the housing where the top and bottom of the housing meets. Once the
board was out I used an exacto knife to cut the
white ribbon cable. And I cut the colored wires at the pins to the plug
on the left. I then cut the unnecessary wires leaving only four wires,
Brown, Red, Green, and Black. The black and blue wires are connected
together and both are ground. I cut the blue one because I needed the
longer black wire. I stripped the ends of the remaining four wires and
soldered them to the Arduino board. Here is a post on RCGroups posted
by troynh with a description of what wire goes to which connection on
the Arduino board: <HERE
> The originator of the software, AlexinParis, has a good <<diagram
>> on his <website
Take note that A4 and A5 are not on the outside row of connections,
instead they are the two joints close to the processor.
You can see in the pictures below that brown wire was ran through a hole in the WM+ board.
Once the two boards were wired I put a small strip of Zeal gel tape
between the two and stuck them together.
NEW - I bought another Nintendo WM+ and it is different then the one
shown above. There is no plug, the wires are longer, it only has
components on one side, and the wire colors are different. If you go by
the pin number instead of the colors then the new and old boards match.
Here is a table:
|pin 1 of WM+ is by the IC, pin 7 is by the edge of the board
|Pin on WM+
|Old wire colors
|New wire colors
Here are some pictures of the new WM+:
With the four wires connected from the WM+ to the Arduino you just
need to solder on the FTDI connector. This is the 6 pin connector that
you can see on the right of the Arduino in the pictures above.
Next if you got the FTDI board without the 6 pin connector then it is
time to solder this on. The connector will go on the same side as the
IC on the FTDI board as shown in the picture below:
is done you need to connect it to the computer, load the software, and
confirm the sensors work.
1. Download the source code and GUI <link>
1.3MB. I am running version 1.5 right now. NOTE: I had a problem
downloading it. I right clicked on the file and selected 'save as'. It
only downloaded a file that was 16KB. To get it to work, I had to left
click on the file then on the next page I right clicked on 'view raw
file' then did a 'save as'. This file is a zip. The source code to
compile and load in the Arduino is in the MultiWiiV1_5 folder. The GUI
is the user interface that you use to view the sensors and make tuning
adjustments. The GUI is in MultiWiiConf1_5\application.windows
2. Download the Arduino compiler <link>
85MB. This is a program that takes the source code and compiles it into
the machine language that is uploaded to the Arduino.
3. Download the FTDI VCP driver <link>. This is the driver needed for the USB interface. Instructions for installation are <here>.
4. With the FTDI connected, run the Arduino compiler. It is the
arduino.exe program. There are two settings you need to change. The
first is to tell it what type of board you have. Click on Tools then
Board then Arduino Pro Mini 5v,16Mhz ATMega328. The next thing is to
tell it what port the FTDI is set to. The FTDI was installed as a COM
port. If you are not sure what COM port it is, go to the Windows Device
Manager and open the Ports category. Unplug the FTDI, wait 10 seconds,
then reconnect it. You will see a COM port show up in the list. On my
computer it is COM 4 but this will vary with each computer. Once you
know what COM port it is you need to tell the compiler. Go to Tools
then Serial Port then click on the correct number.
5. Next you need to load the source code. Click on File then Open. The
source code is in the MultiWiiV1_5 folder. It has a .pde extension.
Before you compile it you have to adjust the source code for your
configuration. In the source code look for these lines and remove the
// from the left of it. The // comments the commands and escentially
makes it invisible to the compiler. If you tried to compile the program
without doing this to configure the code then the compiler would
produce an error.:
#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A
#define YAW_DIRECTION 1 // if you want to reverse the yaw correction direction (TRICOPTER only)
#define I2C_SPEED 100000L //100kHz normal mode, this value must be used for a genuine WMP
And if you do not plan on buying an LCD for this, you can save room in the compiled program by commenting out this line:
6. Compile and Upload the program. The Play button on the far left of
the toolbar will compile the program. Watch below the source code and
you will see a status during the compile. It will let you know when it
has completed the task. Connect the FTDI to the 6 pin plug on the
Arduino. The side with the IC of both the Arduino board and FTDI board
need to both be facing up. Now you can press the button with the right
arrow that is just under Help. Again watch the status bar just under
the source code to know when the task is completed. You can also watch
the lights on the Arduino. A few seconds after you begin the upload,
you will see the lights blink very fast. When they stop this, the
upload is complete. Leave the FTDI connected but close the Arduino
7. Confirm that the unit operates by running the GUI. The GUI is in
MultiWiiConf1_5\application.windows. This is what the GUI looks like:
The first step is to click on the COM port for the FTDI. If you did not
have the FTDI connected at the time you started the GUI then it will
not show up in the list. You will have to close the program, connect
the FTDI and then open the GUI again. The second step is to click the
START button. You will then see the Cycle Time start counting. Third,
click on the READ button. This will get the current values stored in
the Arduino for PID settings. Next you need to verify the WM+ gyros are
working. Move the board around and you should see the graph show the
movement of each axis. If the changes are small you can magnify them by
adjusting the SCALE value. This is just above the right side of the
graph. To adjust this, place the mouse pointer in the SCALE box and
hold the left button down. Drag the mouse to the right to increase the
Use the same technique to adjust the PID values to those shown in <THIS> picture.
Congratulations! This is a big part of getting it going. But you still have more to do so lets keep going.
You need to finish wiring the Arduino. The originator of the software, AlexinParis, has a good <diagram> on his <website>.
Start with four servo extensions and cut them so you have a female
plug with about 6cm or 2.5 inches of wire. In the diagram below you see
'female1' is the only one that all three wires go to the Arduino. The
other three use the full length of the signal wires but not the other
wires. The black wires only need to be long enough to solder to the
black wire on 'female1'. Strip some of the insulation of the black wire
on 'female1' and solder the black wires of female2,3,4 to it. A good
way to insulate these is to remove the black wire pin from female1
housing and slide heat shrink tubing over the solder connection. Then
insert the pin back in the housing. On 'female2' just cut or remove the
red wire. On 'female3,4' connect the two red wires together. And as you
see in the diagram connect the wires to the Arduino. The receiver plugs
are described below the diagram.
Next cut two servo extensions so you have a male connector with about
6cm or 2.5 inches of wire. One of these you will leave the housing on
and plug it into the throttle channel of the receiver. The other
extension you will remove the pins from the housing and use 2mm heat
shrink tubing to insulate the pins. To remove the pins, look at the
side of the male plug. Each pin is held in place with a plastic tab.
Gently lift the tab and then pull on the wire to pull the pin out of
the housing. It will come out easily. If it does not then you probably
do not have the tab lifted enough. Install the heat shrink so that it
is flush with the front end of the pin and extends past the back side
of the pin about 3mm. This extra will act as a strain relief for the
wire. Refer to the diagram above for the connections.
My dad came up with the idea to mount the circuit boards in a car fuse
box. The WM+ board is an exact fit. It is tight and does not move
The first thing I did was take one of the Trex 600n tailbooms and cut
the sides back 2.5" from the end of the boom. I used the side that
already had a slot cut in it. The reason I extended it back this far is
because this metal will split very easy as you bend it. Click on the
picture on the right to see how the two tailbooms connect. I used two 3mm
bolts, two nyloc nuts, and four washers to bolt it to the center of the
second tailboom. To make sure you get the two tailbooms at a 90 degree
angle. There are a few ways to check this. One way is to measure the
distance from the back end of the first tailboom to the ends of the
second tailboom. If the distance is the same then the two are 90
degrees. With the tailbooms at 90 degrees to each other you can drill the two holes for the bolts. Next is the 1/4" board.
The diagram above is for the two motor mounts. Not shown on the motor
mount diagram are the two slots you cut. The two thin slots are cut
from the 4cm side and are just thick enough for the thickness of the
tubing of the tailbooms. The slots will be about 5cm long for one of
the mounts. The other will have one cut that is 5cm long and the other
will be about 3cm. The reason for the difference is "if" you orient the
tailboom so the label is facing forward then there is a 2cm slot on one
side of one end of the tailboom. To secure these motor mounts in place
I use "Welders"
glue. I aligned both motor mounts parallel to each other but there is
also the idea of tilting both mounts two degrees opposite each other to
counteract the torque. Seems like a good idea to me but I had already
glued my mounts in place. There is also the issue of how to accurately
measure this. Since I have a digital pitch gauge that would not be a
problem. BTW: I used my digital pitch gauge to align to two mounts
parallel to each other but if you do not have this you could make two
blocks of wood that each mount would sit on while the glue dried. As
long as the table it was sitting on was parallel then the blocks would
hold the mounts parallel.
diagram on the left is the main board. There is not
much to tell about the main board. The dimensions are not crucial, you
can adjust them if you need. Once you get it cut out, just center the
front tailboom and secure it with the PVC clamps. Note: the PVC clamps
I got did not squeeze the tailbooms very tight. To correct this, I
trimmed the ends of the clamps so they could be squeezed together
closer. Position the clamps and mark one of the bolt holes in each
clamp. Drill a hole at the marks and install the 1/8" blind nuts on the
bottom of the board. Look at the picture below of the landing gear. You
can see an arrow pointing out one of the blink nuts. Take the clamps
off the tailboom and clamp them in place. Squeeze the clamps together
and mark the second hole. Drill this hole and install the blind nuts on
the bottom. Do the same for the third clamp
at the back of the board. Install the clamps on the tailbooms and bolt
them in place with the 1/8" bolts. The bolts will stick out on the
bottom. You can cut the extra off with a dremel and a cutting disk.
Later you will drill a hole for the ESC wires
to go through and two small holes for a zip tie that goes around the
Landing gear: I used a TT miniTitan landing gear on mine. I positioned
it just in front of the blind nuts for the rear clamp. Just center it
up and use some small coarse thread screws secure it to the the main
board. I think the screws I used were servo screws. They stuck up above
the main board so I used a dremel to cut the extra off.
Next is the dowel rod.
This is 3/4" by 3-1/2" long. You need to sand the front half of the
dowel rod to fit inside the tail boom. On the back end you drill a hole
about 1-1/2" deep that is just large enough for the threads of the bolt
to bite into.
The rear motor mount is just a 3/4" board cut
2"x2". Drill a hole through the 2"x2" block just large
enough so the shoulder section of the bolt easily rotates but not so
large it has slack. Using the 1/4"x3-1/2" bolt with a shoulder section
2" long, insert this in the 2"x2" block then screw it into the dowel
rod. The bolt should tighten up as the shoulder section gets to the
dowel rod. After each flight recheck this bolt. If there is a lot of
vibration from the motor it could loosen. You may need to glue the bolt
in place. With the bolt in place, if there is too much of a gap between
the dowel rod and the 2"x2" block then you can use a washer to take up
the slack. I used a fiberglass blade spacer that I drilled out to fit
the bolt. However if the block rubs against the dowel rod and makes it
hard to rotate then you need to sand a little off that side. The block
does not have to be precisely 2", it just needs to be large enough for
the motor mount bolt pattern and that is about 1" square.
Next make a flat spot on the dowel rod about 3/8" from the back end.
You mount the servo there. The standard size servo I used is 1-1/2"
long. I used some of the 3M Scotch mounting tape <link>
to stick the servo to the flat spot on the dowel rod and secured it
with a zip tie. Next you need to cut a slot on the opposite side of the
dowel. Opposite of the servo and on the side opposite of the motor
mount. You can see in the picture below that this is where the motor
wires enter into the tail boom. Next mount the ball links to the servo
arm and rear motor mount.
This is where I mounted the Arduino/WM+. The WM+ has to be mounted so
that the white plug is pointed down and is at the front. I mounted the box with Zeal gyro tape. The lid of the
fuse box will open up and the boards can be removed easily. Make
sure the board is placed flat in the box when you put it back in.
wires to the motors will go through the tailbooms. So you will need to
drill three holes. The picture on the right has the areas circled. For
each hole I drilled two holes side by side and then used a cutting disk
make them into an elongated hole. For each of the holes as well as the
split cut into the tailboom that bolts to the front tailboom, use a
grinding bit on the dremel to smooth the edges so it will not cut into
Start with the motor wire and run it through the tailboom. Slide a
short piece of heat shrink tubing on one of the motor ESC wires and
solder the ESC wire to the wire going through the tailboom. Slide the
heat shrink tubing over the joint and shrink it. Push the ESC close to
the tailboom as you see in the left picture. Cut off the wire as it
exits the end of the tailboom. Give yourself enough length so you can
strip the end and solder a connector. Solder one of the motor
connectors (that came with the motor) to the wire. Slide the heat
shrink tubing that came with the motor over the connector and shrink
it. Mine came with a Red, Blue, and Black tubing. The wires coming from
the ESC are all the same color. Looking at the ESC with the label up
and motor wires on top, I used the left wire as blue, middle as red,
and right wire as black. It is not critical that you do this. If you
find the motor is turning the wrong direction, just pick any 2 of the 3
wires and swap them. And keep in mind if you use a pusher prop on one
of the front two motors then you will need that motor to work the
The procedure you followed for the first wire will be followed for all
of the other wires going through the front tailboom. Run the wire
through the boom, solder to the ESC, pull the ESC close to the
tailboom, cut the wire as it exist the tailboom, and solder the motor
the rear (tail) ESC you will not push the ESC close to the tailboom.
Leave it in the place it will be mounted which you can see in the photo
above that shows the tailboom holes circled. The amount of the wire
that extends from the tailboom is longer then the front two you just did. As you can see in the left
picture, the wires from the motor are wrapped down on the bottom of the
motor mount. Cut the wires from the tailboom to match this.Solder the connectors and install the heat shrink.
Mounting the Motors
Use some coarse thread screws to mount the motor to the board. If the
screws stick out under the board just use a dremel with a cutoff disk
to shorten them. There is not much to say about mounting, it is simple.
Do the front two and the back motor then connect the motor wires.
There are seven connectors. One on each ESC and a 3-way splitter. Not
much to comment about for the ESC's, just make sure you get the
polarity correct. As for the 3-way splitter, I used some small brass
coated nails I had to join the terminals. You can see this in the
picture below. Note that I use XT60 connectors and the nails worked
great for joining them. If you use something like Anderson Power Poles
or EC3's then you will join them at the wire which you could also do
with XT60's but I wanted to keep the splitter compact. It takes four
connectors total, 3 female and 1 male. I have three female connectors
side by side that I glued together with a piece of card stock paper in
between the three. This is just to space them out a little to give some
room for the ESC connectors. The male connector is 90 degrees to the
others and at the end. See the second picture below. I wrapped the
terminals with electrical tape and glued the 3-way splitter to the
bottom board of the frame using 5 minute epoxy. I then drilled two
small holes beside the male connector and ran a zip tie through the
frame board and around the male connector. This will take the force of
plugging and unplugging the battery to the 3-way splitter.
you look between the ESC's I drilled a hole for the battery wires. This
needs to be large enough for the connectors to go through. They will
connect to the 3-way splitter on the bottom. I mounted the ESC's using
Radio is just a standard basic setup. You can put the radio model in
airplane mode. I have mine in helicopter mode. No
advantage one way or the other. If you put it in heli mode be sure you
have the radio set for 1 Servo type swashplate. No 120 degree setup like
with the older Tri-Copters.
At this point the only wire left is to run a servo extension from the
tail servo to the remaining plug going to the Arduino. Refer to <this>
diagram for the wiring. Use one of the 30cm extension to connect the
tail servo. Also at this point you should have the motors mounted but
no props installed. On the computer run the MultiWiiConfig program and
connect the Arduino to the computer. Next turn on your radio (set to
the correct model) and plug up the main flight pack. As you move the
sticks you will see the bars at the top-right group will move in
relation to your stick movements. Here you need to set the directions
and travel amounts. Start with the throttle. If you move the throttle
stick up and the bar labeled Throttle goes down then you need to go to
the reverse function in your radio and change the throttle setting.
Move the elevator stick forward and you need to see the Pitch bar move
up. Aileron right will make the Roll move right. Right rudder will make
the Yaw move right. Now that you have the channels moving the correct
direction you can move on to the travel adjust. Move the throttle all
the way up and look at the number on the bar. It needs to be 1920. If
not go to the travel adjust (ATV, EPA, End Point) function in the radio
and adjust it. Throttle down needs to be 1080. Do this for each
channel, adjusting for 1080 and 1920. When you are done you can click
Stop on the MultWiiConfi then disconnect the flight battery and
Disconnect the 3-wire plug from the throttle channel of the receiver.
Connect one of the ESC's to the throttle channel on the receiver. And
for that ESC, disconnect it from the 3-way splitter.
Throttle Range == With the radio on and throttle stick at the top,
connect the flight battery do the ESC. You will hear a beep-beep, when
you do, move the throttle stick to the bottom. You will hear several
beeps then a long beep. You have now taught the ESC what the high and
low points are from the radio. Disconnect the flight battery.
Programming Options == With the radio on and throttle stick at the top, connect the flight battery do the ESC.
a.Wait for a musical tone to be played then
b. listen for a single beep, move the throttle down
c. listen for a single beep, move the throttle up
d. listen for two beeps, move the throttle down
e. listen for a single beep, move the throttle up
f. listen for three beeps, move the throttle down
g. listen for a single beep, move the throttle up
h. listen for four beeps, move the throttle down
i. listen for two beeps, move the throttle up
j. listen for a long beep, move the throttle down
k. listen for two beeps, move the throttle up
l. listen for a long beep and a short beep, move the throttle down
m. listen for two beeps, move the throttle up
n. listen for a long beep and a long beep, move the throttle down
Here are the settings in case the software in your ESC is different:
Brake - Off
Battery type - Li-on
Cutoff mode - Reduce power
Cutoff threshold - Medium
Startup mode - Soft
Timing - Medium
You just did one ESC, do the other two and when you are done connect everything back where it was.
With the radio on and throttle low, connect the flight pack battery.
You will see some lights blinking on the Arduino and eventually go to a
Initialize the gyros == Pull the elevator stick all the way back and
hold the rudder stick full left. If you see the green light start
blinking then let go of the sticks. You just initialized the gyro. If
you did not see this blink then one of the channels is off, possibly
because you adjusted the trim. It will be one of the elevator, rudder,
or throttle travel (ATV, EPA, End Points) is off. Try the rudder first.
If you have the travel adjust for the left at 100, try 105. If that
does not work, try 110. If not then put it back and do the same test
for the elevator.
motor direction - Check that each motor is turning the correct
direction based on the prop you have. Normally that will be
counter-clockwise as viewed from the top. If it is turning the wrong
way then pick any two of the three wires going to the motor and swap
Blade Balance = if you have a way to balance these then do this before you mount them to the motors.
Adjustments - PID's can be complicated but if you are experienced with
the gy401 gyro then it will help. If one of the controls is wagging
then the P value is too high. P (Proportional) is like the gain. The I
(Integral) is similar to heading hold mode versus standard gyro. I = 0
would be like non-heading hold. The D (Derivative) is like the delay
setting for slower servos. If the control is not wagging until you make
a sudeen control movement then you should lower the D.
Alternative construction techniques:
The uses a graphite tail boom support rod. The plastic washers are main
rotor blade spacers. The pin is what holds a RC car body on.
Motor mount - I used Delrin to make plates and weather stripping tape
for absorbtion of the vibration. The idea was to reduce the vibration
at the source, that would be the motor/props.
The Trex 600n tailbooms are 625mm in lenth.At the back the wooden dowel
rod extends out of the tail boom by 50mm. And the wood that the tail
motor is on is 50mm. The CG is 33% back from the front tailboom, 260mm.
ESC's are Turnigy Plush 18A, Props are APC 11x4.7, Motors are
HobbyPartz Optima 400 Brushless Motor 2215-740KV. I'll eventually get a
webpage made on the construction of it. BTW: The skids are from a TT
miniTitan and the tail fin is too. The clamps holding the tailboom are