T-Wii Copter
T-Wii Copter v2
last updated 5-23-2011
I 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.

Parts List:
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, the 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.

shows wire through hole in WM+arduino and wm+zeal gel tape
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
pin 1
pin 2
pin 5
light blue
pin 6

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:
FTDI with 6 pin connector installed
Once this 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.
compiler settings
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 TRI
#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:
//#define LCD_CONF

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 compiler.
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 magnification.
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 around.

Frame construction:
shows ESC wires going through the tailbooms 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.

diagram with dimensions for motor mounts
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 with measurements for board
The 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 battery connector.

shows landing gear placement and blind nut 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.

mounted on T-Wii Copter
 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.

shows ESC wires going through the tailboomsall three holes for motor wiringThe 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 to 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 the wires.
ESC pushed near hole to connect motor
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 opposite direction.
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 connector on.
For 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.

Battery Connectors
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.
join connectors with brass coated nails3-way splitter

all three holes for motor wiringIf 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 velcro.

Radio Programming:
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 computer interface.

ESC Programming
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 solid green.
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 them.

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.

Troubleshooting Tips

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 from Lowes.