TriWiiCopter design


This article is now hosted on its own site:
http://www.multiwii.com


The TriWiiCopter is a tricopter that uses Nintendo Wii console gyroscopes and/or accelerometers. We find these sensors in the extensions of the Nintendo WiiMote . This tricopter was an opportunity to develop my own software on an Arduino platform. The achieved stability is excellent for FPV and allows any kind of acrobatics.

The software can also be used to control a quadricopter or a hexacopter.



The tricopter mentioned in this article is mainly a project of electronics and programming. The structure of my first tricopter was reused and reinforced with carbon/kevlar fiber. Some LEDs were also added for a better flying visibility.

Wii Motion Plus

A Wii game controller is composed of three accelerometers to determine an angular position, and measure lateral accelerations.

It is enough for most games, but an accelerometer is not very accurate for measuring small variations. For the most demanding games, Nintendo developed the Wii Motion Plus (WMP) extension which uses three gyroscopes and plugs at the extremity of the game controller. These three gyroscopes coupled with three accelerometers can determine more precisely the attitude of the controller.

There is extensive information on all the extensions here:

http://wiibrew.org/wiki/Wiimote/Extension_Controllers

On a multicopter, the use of accelerometers is a plus but not necessary if you do not want to keep strictly to its angular position in space.

The measurement of angular velocity is sufficient to ensure good stability.

The extension Wii Motion Plus has numerous advantages compared to other gyroscope sensors:

1) its cost

Invensense is a manufacturer of electronic components, particularly gyroscopes.

Usually, these components are distributed independently and are relatively expensive.

Example from Sparkfun:

http://www.sparkfun.com/commerce/categories.php?c=85

Invensense manufactures (at least 1 of 2) gyroscopes of the Wii Motion Plus: IDG600 or IDG650. They seem to have been designed specifically with a probably very low wholesale price.

We benefit directly from this situation in the cost of the extension, especially since there are many Chinese copies that can be found for $10 or $15

2) its dimensions

The Wii Motion Plus extension is made up of two pairs of 2-axis gyroscopes, (only one axis being used on one gysroscope). Finally, once the PCB is extracted from the WMP case, there is a set of 3-axis gyroscopes in a small space. More importantly, they are all mounted on a plane surface without additional PCB. Copies are not all identical, but the dimensions remain the same.

3) its integrated ADC

When we want to interpret the value of sensors, we use an analog input and then convert it into a digital format usable by a program. Wii Motion Plus extension includes a 14-bit analog-digital converter.

4) its communication protocol

This extension communicates with the controller on a I2C bus in fast mode at 400kbit/s. It’s interesting because this bus coupled to the integrated ADC allows for performing conversion that will not be addressed later by the micro controller.

Moreover this bus uses only 2 data wires.

4) its performance

At that price, performances are not the best among the existing modern gyroscope. Noise (spurious signals in the absence of movement) is important, but we can find 3 MEMS sensors that outperform the piezo gyros still found in many RC gyroscopes.

Properly filtered, the signal is pretty accurate.

FYI, the must have gyro seems to be the ADXRS610, and at that price it has only one axis :

http://www.sparkfun.com/commerce/product_info.php?products_id=9058

Nunchuk

The Nunchuk (NK) is an extension of a WiiMote which is is composed of three accelerometers to determine an angular position, and measure lateral accelerations.

On a multicopter, the use of accelerometers allows to know precisely the angular position of the model.

With some mathematic used to associate gyroscopic sensors (DCM or Kalman like), it is possible to determine very quickly a PITCH and a ROLL angle.

This feature is used to have an auto stable mode which keeps the model in a horizontal attitude.

Like the Wii Motion Plus, the Nunchuk has also numerous advantages:

1) its cost

It is even cheaper than a Wii Motion Plus extension. We can find the NK extension for around $10 on ebay.

2) its dimensions

The PCB size of a Nunchuk is a little bit more important than a Wii Motion Plus one. But the component are still mounted is a flat position.

On some versions, it is also possible to cut the button circuit (unused for this project)

4) its I2C bypass mode

When a Wii Motion Plus is already connected to a WiiMote, the Nunchuk can be directly connected to the Wii Motion Plus in a « half bypass mode ».

It also communicates with WMP via a I2C bus.

In this mode, the Wii Motion Plus handles the communication and supply sensor values (from gyroscopes and from accelerometers) in an interleaving alternate way.

One benefit: the arduino has to handle only one extension, the Wii Motion Plus.

Arduino Pro Mini

Arduino Pro Mini card is a very small version of the well known classic Duemilanove Arduino. However, all possibilities remain the same. It now integrates an Atmel 328p and exists in several versions 3.3V/5V and 8MHz/16MHz. I chose the most convenient and powerful version : 5V / 16MHz

http://www.sparkfun.com/commerce/product_info.php?products_id=9218

There is no more the USB connection for injecting a program, but it’s always possible to program it with a small USB-Serial adapter sold separately.

http://www.sparkfun.com/commerce/product_info.php?products_id=9115

This board is the heart of the multicopter. It runs the software and interacts with everything: RC, ESCs, sensors.

Note that is is also possible to use other Arduino cards if they include an Atmel 328p running at 16MHz: Arduino nano , Arduino pro, Arduino Duemilanove.

Most Arduino clones should also work.

Arduino Pro Mini + Wii Motion Plus

Dimensions of the Wii Motion Plus are quite similar to Arduino Pro Mini card’s one.

This is useful for designing a small and homogeneous card.

The 2 PCBs are simply connected by four wires.

Wii Motion Plus extension is powered by the regulated 5V of the Arduino Pro Mini.

Digital PIN 12 of the Arduino is connected to VCC Wii Motion Plus.

This PIN is commuted just after the Arduino boot sequence in order to fiabilize the WMP initialization and in order to fast reboot the WMP in case of a blocking state.

(This power option is  mandatory for some WMP which enter sometimes in a blocking state. It is still unexplained for the moment.)

The analog inputs A4 and A5 are connected via the I2C pins SDA and SCL.

(the photo describes the old way to power WMP via VCC and not PIN 12)

Arduino Pro Mini + Wii Motion Plus+ Nunchuk

Note that it is not mandatory to use a Nunchuk to operate the Multicopter described in this article.

It is mandatory only if you want to have an autolevel feature.

The software recognizes automatically the presence of a nunchuk connected.

Only 4 wires need to be connected between the WMP and the NK.

The relative orientation of the 2 PCB must be respected.

The WMP is connected to the Arduino exactly as described above.

Connecting elements

The software is now able to handle also quad+ and quadX.

The configuration has just to be define by changing a line in the Arduino sketch (see source&code part)

Tricopter configuration

Quadricopter+  configuration

QuadricopterX configuration

Y6 configuration

HEX6 configuration

Pure stabilized gimbal system

Orientation of the card must be respected (blue arrow)

To build a powerful multicopter, it’s best to feed the controllers in a star delivery configuration from the battery with wires of the same section and same length. Otherwise, they might not be fed uniformly, especially in case of high amperage.

A simple 4-channel receiver (no mixing) can be used for a gyro-only multicopter. The code is robust enough to support all brands.

Connection diagram

(thanks to Berkely)

more information on Berkely blog here: http://www.rcgroups.com/forums/showthread.php?t=1340771

Configurable flight parameters

Once downloaded in the Arduino board, the software set the default settings during the initial start.

These settings are appropriate for a configuration similar to mine (motors / ESCs / propellers / weight)

However, another configuration will probably require other parameters to be optimal.

For instance, if you want to use a larger tricopter for FPV.

The multicopter uses a closed controlled loop to ensure its stability and manoeuvrability.

Like most multirotors, it is a Proportional-Integral-Derivative (PID) regulator.

This controller is translated into software code lines in the Arduino and tries to correct the error calculated between a measurement at the controller output (measured by the gyros) and an input set point (position of the stick), using appropriate action to adjust the output of the process (command to motors).

PID controller involves three separate parameters: the term Proportional, the term Integral and the term Derivative. The variation of each of these parameters alters the effectiveness of the stabilization.

Applied to a multirotor, the coefficients of these parameters can be translated by their behaviour:

  • Proportional coefficient: alone, it may achieve stabilization. This coefficient determines the importance of action on the engines in relation with the values measured by the gyroscopes. The higher the coefficient, the higher the tricopter seems more « rigid » versus angular deviation. If it is too low, the multicopter will appear soft and will be harder to keep steady. One can « feel » this setting by handling the tricopter and trying to change its orientation: the higher the parameter, the higher the opposition is important. In practice, this parameter must be set alone and increased up to be the limit for obtaining small oscillations. If too high, the system becomes unstable by amplifying the oscillations.
  • Integral coefficient : this coefficient can increase the precision of the angular position. In practice, when the tricopter is disturbed and its angle changes, the term Integral remembers the disruption and apply a correction to the engines to get the right angle. We can see this term as an heading hold factor. Typically if you take handfuls the multicopter and try to force it into a position, the engines will continue for some time to counteract the action. Without this term, the opposition does not last as long. This way, the angular position can be steady and accurate even with irregular wind, or during ground effect. However, the increase of this ratio often involves a reaction speed decrease and a decrease of the Proportional coefficient as a consequence. Compared to the conventional PID algorithm, I decided to cancel this term in the presence of strong angular variations. This strategy allows a safer behaviour in case of looping or hard shaking.
  • Derivative coefficient: this coefficient allows the tricopter to reach more quickly the requested attitude. In practice it will amplify the reaction speed of the system, and in certain cases an increase of the Proportional term. By cons, this parameters induces more noise.

By default, at the first startup, the tricopter is initialized with coefficient values that should be quite ok:

P:  4

I:  0.035

D:  -15

The multicopter uses 3 PID loop with their own P I D coeeficients.

There are 2 ways to modify the values:

  • The use of a specific combination of stick movements allows a sequential reconfiguration of these parameters with the help of a small LCD display. With this method, it is possible to quickly reconfigure the settings on the field, without even having to turn off the tricopter.To see the modified values, a small LCD screen can be connected.http://www.sparkfun.com/commerce/product_info.php?products_id=9394The LCD is not necessary when you know (and memorize) exactly what you are doing (advanced users only)

  • With a GUI running on a computer and a conventional USB connection between the multicopter and the computer.

operating the multicopter

The following explanations  are agnostic to the mode used. So it is relevant for both mode 1 and mode 2, the most commons.

Starting the multicopter

The engine launch is done by tilting the yaw stick right while having the throttle stick in minimum position.

For security reasons, the throttle stick must be set to minimum.

Now motors turn at an idle rate and the tricopter is ready for flight.

It is not necessary for the multicopter to be positioned flat, the angle does not matter.

Motor shutdown

Motor shutdown is done by tilting the yaw stick left while having the throttle stick in minimum position.

Gyroscopes and accelerometers calibration

To calibrate the neutral of sensors, you must tilt the yaw stick left, tilt the pitch stick back while having the throttle stick in minimal position.

The multicopter should not move during this stage. However its inclination has no influence if you have only a WMP (no ACC)

If you have a Nunchuk (ACC), the multicopter inclination should be as horizontal as possible during this step. This step must be realized at least once, the acc calibration is then stored in the EEPROM.

Start the LCD configuration mode

Tilt the yaw stick right + tilt the pitch stick forward.

This initializes the LCD if present, the LED flashes and the parameter P is then ready to be configured.

Parameter selection

In setup mode, tilt the pitch stick back.

The selected parameter then changed sequentially and the number of blinking LED indicates which parameter is pointed.

1 blink = parameter P

2 blinks = parameter I

3 blinks = parameter D

The choice of parameter is indicated on the LCD by a highlighted character.

Change the value of one parameter:

In setup mode, tilt the roll stick right (increment) or left (decrement).

For the P parameter: the variation is in steps of 0.1, with a minimum value set to 0.

For the I parameter: the variation is in steps of 0.005, with a minimum value set to 0.

For the D parameter: the variation is in steps of 1, with a maximum value set to 0.

At each change the LED blinks

If we « count » operations, we can know the value of the parameter settings without LCD connected..

But we can quickly be lost if we made too many changes.

End of configuration mode

Tilt the yaw stick left + tilt the pitch stick forward.

The LED blinks again and tricopter returns in a state ready to fly.

GUI

It is now possible to configure and visualize main parameters with a GUI.

1) You must connect the arduino board to your PC via the USB connection (the same used to inject the software via Arduino IDE)

2) Once it’s done, you can launch the GUI, and then select the good PORT COM (the same used by arduino IDE).

3) Once it’s done, you have to wait some seconds to let the arduino boot and run the soft.

4) once the status led is OK (it should blink), you can press the STARTbutton to see the evolution of values.

5) you must READ the current parameters in the arduino before configuring it. Default values are set at the beginning.

PID variation:

For a very stable multicopter with a solid attitude, the PID settings must be set high. But if you want to do some acrobatics with these settings, the multi starts to wobble in fast translation or when you decide to shake it to much. One solution is to decrease the PID, but it is to the detriment of static stability.

So instead of implementing a switch between 2 PID settings, there are now 2 options in the GUI to define the way we should decrease PID, depending on ROLL/PITCH/YAW stick deviation

  • The first boxes defines the rate of cancellation of the nominal PID (the one which is used on neutral ROLL/PITCH/YAW stick position) in relation with ROLL/STICK/YAW deviation. In fact only P and D parameters are impacted in the transformation. The purpose of this curve is not really to gain more stability, but to gain more maneuverability. 0 = soft rate (for FPV or beginners); 0.4 = soft acro ; 0.7 = fast acro ; 1 = insane rate
  • The second curve is defined by 3 segment: [1400;1600] [1600-1800] and [1800;2000] and defines the rate of cancellation of the nominal PID (the one which is used on neutral ROLL/PITCH stick position) in relation with Throttle stick. The purpose of this curve is to gain more stability when you are in a situation to use more throttle than needed to just maintain a lift. This is typically the case in fast translation.

If you are not familiar with this, just keep the default values.

Some pictures of the first TriWiiCopter

RC equipment

What Reference
Motor 3x Hobbycity Turnigy 3020 Brushless Outrunner Motor 1200kv
– alternative motor 3x Hobbycity Turnigy 2204-14T 19g Outrunner
controller 3x Hobbycity Hobbyking SS Series 8-10A ESC
– alternative controller 3x Hobbycity Turnigy Plush 10amp 9gram Speed Controller
LED 1x Hobbycity Turnigy High Density R/C LED Flexible Strip-Green
Propeller 3x Hobbycity GWS EP Propeller (DD-7035 178x89mm)
Servo 1x Hobbycity Turnigy MG90S Metal Gear Servo 1.8kg
Battery 1x Hobbycity Turnigy 1300mAh 3S 25C Lipo Pack

We can of course take a different configuration for a larger tricopter.

Internet is full of examples.
One example of several working setup: http://warthox.bplaced.net/?page_id=76

Here is a consumption/thrust  measurement realized by Joël on the current setup:

Video

Source Code & GUI

MultiWiiCopter Arduino code and GUI (source + exe):MultiWiiV1_5

One directory contains the Arduino sketch, and the other contains the GUI.

This code won’t compile, you have to uncomment first one of this two lines depending of your ESC type:

//#define MINTHROTTLE 1310 // for Turnigy Plush ESCs 10A
//#define MINTHROTTLE 1120 // for Super Simple ESCs 10A

The servo correction can also be reverted for tricopters by editing this line:

#define SERVO_DIRECTION 1 // if you want to reverse the gyro yaw servo direction
//#define SERVO_DIRECTION -1

Compatibility between options/setups:

Thanks to numerous examples found on the Internet, I developed this app.
To my knowledge, there are some new and reusable parts (radio interface, LCD interface, the servo control).

I would like to share this code and spread it under the GPL licence so that it serves other, directly or indirectly in a tricopter or for other projects.

It’s thank to this approach that the open source community Arduino has developed so fast.

The limits of memory and power the Arduino used here are not reached, and the number of I/O remains large enough to integrate a lot of other sensors, magnetometer, accelerometers, GPS, altimeter, ultrasonic sensor, …

My goal here was to make a minimalist tricopter, acrobatic oriented.

I also hope that one day someone will publish an algorithm that is able to adjust the optimal settings automatically. I know it already exists, but it’s not in public domain.

Where to find the components

The arduino pro mini, USB interface card and the LCD are available at sparkfun.

Wii Motion Plus extensions are widely available on ebay.

The RC elements are all available at hobbycity.

FAQ/related problems

1) Some times, the gyros seem to be inefficient or erratic

There are a lot of copies of WMP in circulation on ebay. (at least 4 different types) They are working pretty well, however the electronic used to handle Invensense gyros differs.

There are several things that can be done to decrease bad inits:

  • add pull up resistances on the I2C wires. There are already pull up resistances in the atmel 328p, but in some case (long distance, noisy environment) they are not low enough.
  • decrease the voltage. WMP are normally powered under 3.3V. 5V is ok because there is an internal regulator, but at 3.3V, it seems to work better
  • WMP uses fast I2C mode at 400kHz. In some cases, especially for original WMP, this increase the rate of bad inits. A corrective way is to leave I2C rate in normal mode: comment/uncomment  the line in the sketch dealing with I2C speed.

Hopefully, in many cases, there is no problem at all regarding the WMP initialization.

2) Why it is important to define the minimum running value for the ESCs

The motors should always run whatever the situation in flight:

  • ESCs and motors are not perfect and does not synchronize every time at the beginning. If this happens in the air, one motor won’t be able to spin and I let you imagine the situation 😉
  • Gyro-induced corrections can put a ESC in a situation where it is under its running limit (motor stop). It should not be important because it lasts a fraction of second and propellers have some inertia. But I observed a very annoying behavior with  Turnigy Plush ESCs: once it is below the running limit, the ESC reaction time to return into the running range is very high, causing crashing oscillations.

If you choose another ESC, you have to tune this “minimum spinning value”. Once armed, if tricopter motors are not running, this value must be changed.

This parameter is very important and has to be edited to compile arduino code.

3) I can’t arm the motors

Each channel on the TX should be configured to have a full range (for a PPM signal, that is to say [1000;2000] miccro seconds). For Graupner/JR radio, it implies an ATV of 125% for all channels. If this value is too low, the arming level value can’t be reached on the yaw channel, and it’s not possible to arm the tricopter.

4) Be sure your ESC can support PPM with 490Hz refresh rate.

It is the case for low cost SuperSimple and Turnigy Plus ESCs. Note the refresh rate is not tied to the cost of ESCs 😉

5) Choosing another ESC/motor/propeller

  • the propeller should be are light as it can be. GWS SF is a good choice in every dimension
  • for a given consumption, the proportion pitch/diameter should be the lowest (10×3.8 is better than 10×4.7. And 10×4.7 is better than 8×6)
  • motors KV should be low. It’s better for the efficiency and for the spinning resolution.

6) Arduino seems to operate well (LED blinking), but impossible to connect the GUI

If you are using windows, the port COM needs something to be reconfigure to run at 115200Hz.

7) Nothing happen at all

It is maybe because you are using an Arduino clone which does not have exactly the same characteristics as the pro mini.

8) One motor stops suddenly in a flight

It may occur if your are using Turnigy Plush ESCs in soft mode. These ESCs must be set in MEDIUM or HIGH mode.

9) I’m not a programmer nor an electronics. Is it difficult to build and setup ?

My job is not related to this too.

If you have a PC, you can do it and understand the main things in few hours.
Arduino is very documented, especially for people who are not specialists at all.
You can first read this page to begin in this environment and learn how to upload a code in a board.
http://arduino.cc/en/Guide/Windows

I advice every beginner to read the excellent blob of kinderkram here:
http://www.rcgroups.com/forums/showthread.php?t=1332876
It’s a « step by step » construction approach

10) There is a post on rcgroups forum here:

http://www.rcgroups.com/forums/showthread.php?t=1261382
Don’t be shy, your MultiWii video are welcome 😉

You can also read the MultiWii addtional FAQ’s wrote by berkely:
http://www.rcgroups.com/forums/showthread.php?t=1340771#post16587954

, , , , ,

  1. #1 by Sid Baldwin on 17 juin 2010 - 09:57

    Excellent work ! I would like to explore a Tricopter for Aerial Imaging. I have RC experience with Heli’s but have very limited experience in building models and programming for flight. Is this Tri a possibility for a novice and what is the potential payload for a scaled up version? Many thanks.

  2. #2 by AlouetteIII on 18 juin 2010 - 01:34

    Alex – Nice idea to launch into the public domain! A WiizArdTricopter. Also very interesting use of a monocoque body. I am signed up and starting to plan construction. Congratulations.

  3. #3 by AlouetteIII on 18 juin 2010 - 04:30

    All components ordered and awaiting delivery.

    Alex please tell me more about the construction of your Kevlar/Carbon/Aluminium body. Is it based around 3 x Trex tailbooms wrapped in fibre then the centre EPS melted away with fuel? what weight did you achieve for the frame? What is the crash-worthiness status so far in yours and weakest point? No protection for the LiPo yet it is underneath – so it separates in a crash?

    Regarding the 3D flying. Without negative pitch or variable pitch props it’s going to restrict the manoeuvres to +ve G and rolls. Have you considered if we can use a 5th channel for RPM and use the 3 axis for variable pitch systems?

  4. #4 by Alex on 18 juin 2010 - 14:15

    @Sid Baldwin
    I think a Tri or a quadri could be a very good alternative for aerial imaging. I you are novice in building / soldering / electronics, the setup of this tri is maybe a little bit complicated. There are still some small adjustments that need to be done, depending of the RC equipment choice. I hope it will rapidly change so that we could describe a nearly RTF tricopter.
    A scaled up option is possible, and a setup for a payload of 1kg should be easy to build with standard RC equipment.

    @AlouetteIII
    I’m impatient to see the construction of your fiber structure.
    You can see every step of the my construction in a previous article:
    http://radio-commande.com/international/tricopter-conception/
    (not very well English traduced, but a lot of pictures)
    It is quite crash resistant and light, and easy to repair with fiber and epoxy.
    The lipo is not specially protected because as you said, it separates in a crash.

    I thought about a variable pitch propeller to do 3D flying, but it’s much more complicated to build and to $$$ in case of crash. However , the soft should not be very complicated to adapt.

  5. #5 by Hasufel on 23 juin 2010 - 02:25

    Hi Alex, thanks for your wonderful feedback and example. I like your « carbon » body very much, it feels like you’re a real surf board shaper 🙂
    Your videos awed me (loops+general feeling of power from machine). I was to build a quadrotor, and feared the servo part from the tri, but you convinced me to go your way.
    I am starting to build one wii-tricopter. I ordered the parts (+1 motor and esc more in case quad way), they shall arrive pretty soon i hope. I already got the arduino and WMP working together, hacked a bit of the code you provide, it seems to work pretty well so far in 400khz using 5V, although it didnt pass the « if ( gyroRawData[5]&0x02 ) » test (got it another way, but can’t really figure for now why it doesn’t).

    Questions:
    – Relating the Radio transceiver/receiver: I saw you’re using an assan X8 receiver. I’m wondering: if i get a transceiver FUTABA 6 EXP 2,4Ghz with its receiver would that suit the job too ? I still dont quite get the story with PPM encoding and such for getting the signal on arduino. Wondering, too if a simple Futaba Skysport 4YF Sport with its receiver might do the job. I ordered an assan X8 9ch receiver for precaution but i fear i’ll end up not using it if i get a combo FUTABA 🙁 Help me please on that 🙂
    – I was thinking about getting the acceloremeters board from the wii nunchuck and plug it to the wmp. I saw that one can direct plug it on the wmp and still use only the 2 wires only output for both boards. Would the addition of the accelerometers board add something truly ? How hard would it be to include the code of that combo ? I saw kalman filters around using this combo and was wondering.
    – What kind of fly time you get with a 1300 3s battery with your carbon very light setup ?
    – Last question: can we init/calibrate the escs without a remote control, solely by code ? And get rid of the transceiver/receiver combo (and to finally make it an autnomous « drone ») ?

    A lot of questions … I thank you in advance.
    Thx from Paris, french fellow 🙂

  6. #6 by Yun on 23 juin 2010 - 06:11

    Hi Alex
    I have a Question about ESC.
    All ESC must have the same throttle range? manually adjusted or not?

  7. #7 by Alex on 23 juin 2010 - 14:32

    @Hasufel
    Hi,
    I was just a surf board user in the past 😉
    – For the receiver, you can use every standard receiver in PPM mode. The code should be able to understand every brand. There is no constraint about PPM sum signals, interleave channels, of things like this. => both your futaba radio will be ok
    – I will probably integrate the nunchuk in a special version for autolevel functionality just because everyone is asking this. The code is not very hard to integrate. I did not integrate it because I still think it is useless for an acrobatic tricopter. If your objective is to do some FPV or photos, the autolevel functionality could be a good thing. It could also be a good thing for rescuing the tricopter if you loose its orientation. But again, it won’t improve its ability to steady keep an angular position. gyro-only tricopter can be considered nearly as stable as a collective pitch heli.
    – The fly time can varie a lot. I would say more than 12-13 min for a cool fly, and 7-8 min for a more aggressive fly like in the last video.
    – The way ESCs are controlled is independent of the RC signals. ESCs signal are generated by the arduino. If you add the needed sensors the code could be in theory adapted (and much more complicate 😉 ) to make a drone.

    @Yun
    The 3 ESCs must be the same, and must be configured with the same settings.
    They must have the same throttle range, the calibration is done automatically at the startup, no need to worry about it.
    (Super Simple and Turnigy ESC can’t be mixed, they are too different)

  8. #8 by jun on 23 juin 2010 - 15:37

    Thanks, Alex!

  9. #9 by Hasufel on 23 juin 2010 - 20:20

    Thanks, Alex, too! I will get a transceiver then.
    Will start soon to build 🙂

    A question:
    I saw shrediquette’s design in the latest video (very cool, http://vimeo.com/6766174), and he is using a counter rotating blade on the rear. I saw that you had in your first video, Alex, the rear bent at some quite obvious angle to counteract as you used the same rotation way on the 3 props, but couldn’t notice it in the triwiicopter videos. Did you do something ? What would be the best solution ? Bend the front motors axis to counter even more ?
    Thank you.

    Jun, good luck!

  10. #10 by Yun on 24 juin 2010 - 01:57

    Hasufel, Good luck too! ^^
    I am using Arduino nano V3.0.
    so, I’ll supply WPM with 3.3V
    I’ll try spektrum 2.4G receiver AR7000 It’s ok?
    My Tx is FF9C with Spektrum 2.4G module.

    Now, I am struggling for making servo mount and linkage.

  11. #11 by Alex on 24 juin 2010 - 09:48

    @Hasufel,
    I always used 3 identical propellers on every versions of my tricopter. So, the angle you noticed is still present on the triwiicopter. You could effectively tilt a little the front motors to decrease the need to tilt to much the rear motor. I never compared the two options, but for sure it is easier and cheaper to find 3 identical props.
    @Yun,
    Your receiver should be ok, the receiver code is able to handle every type of PPM signals without exceptions. (sequential, interleave of concomitant pulses)

  12. #12 by Hasufel on 24 juin 2010 - 11:41

    Alex,
    all right 🙂 I’ll stick to your design for now.
    I received the parts today. Apparently the Assan X8 receiver can be directly connected via wire for bonding on the transceiver, so I will still be able to use it. I miss a few connectors (this should be also documented), will try to fetch some in Paris later on.
    Still missing a proper arduino mini pro and a transmitter, and I’m all set. Now the question is: am i a surf boarder also and try your carbon fiber design ? Heh…

  13. #13 by Yun on 1 juillet 2010 - 02:32

    I’m waiting for ESC from hobbyking.
    It’s a little bit annoying.

    I did almost done except connting ESC.
    Alex BEC is needed or not To supply 5V to board and servo ?
    ESC has BEC also.

  14. #14 by Alex on 1 juillet 2010 - 07:46

    good news 😉
    BEC functionality is needed to power servo/board/receiver.
    But a separate BEC is not needed, you can use the BEC of the ESC.

  15. #15 by Piermaria on 2 juillet 2010 - 23:12

    Why i can’t open the source code with my Arduino alpha 0018 software?

  16. #16 by Alex on 2 juillet 2010 - 23:52

    Hi,
    It’s because there is a . in the file name at the end: 1.2
    You should replace 1.2 by 1_2 for instance.
    I will correct it for future versions.

  17. #17 by jun on 3 juillet 2010 - 03:04

    Hi, alex
    I made triwii copter. Thanks
    but could you help me something?
    1. how to servo reverse? when I rotate triwii to the right, servo rotate to CCW so triwii spin up.
    I think servo command change like below? am I right.
    from:
    servoYaw = 1500 + axisPID[YAW];
    to:
    servoYaw = 1500 – axisPID[YAW];
    2. sometimes when I armed triwii left alone several minutes, triwii did not response to my Tx.
    so I reset again.

    Yun

  18. #18 by jun on 3 juillet 2010 - 13:29

    3. My WM+ is over there you attached picture like the same.
    but it’s working and sometimes triwii did not response to my Tx and moving triwii
    is it cause of bad WM+? Alex

  19. #19 by Alex on 3 juillet 2010 - 13:56

    Hi Yun,
    For the servo, you are right, it’s just a sign to change.
    For the WM+, I think you’ve got also a bad fake.
    It seems to work fine at the beginning, but suddenly I2C stops working and it freezes everything, and the motors continues to spin.

  20. #20 by Hasufel on 4 juillet 2010 - 03:55

    Congrats Jun! I went to see if you had any pics/video on your website but found none so far (actually a bit difficult to read for me 🙂 Too bad for the WM+ 🙁
    I’m on my way to complete mine also … I’ll keep you updated 🙂

    Alex, a noobish question: on the transceiver, what mode/sticks are u using for Throttle (right stick, up/down?) Same for all the others … Could we get a pic ? Thank you very much.

  21. #21 by jun on 4 juillet 2010 - 13:01

    Hi, Hasufel
    here is my blog
    http://blog.naver.com/wland/80109132567
    It’s korean language so using google translate.

    I did not first flight cause of bad fake WMP.
    I ordered another one alex recommended.

    Yun

  22. #22 by Hasufel on 4 juillet 2010 - 18:33

    Hi Jun. I read your blog, although the korean translation is approximative on google translate, i enjoyed reading 🙂
    Pretty good stuff what you did on the wiring/soldering (plugs on the motors, enabling quick reuse without desolder from esc’s).
    The choice to put servo beneath the motor directly … I don’t know about it. Seems a bit fragile. I’m sticking to Alex’s design to put the motor on the frame itself (dealing with the carbon fiber frame with lost mold way…).
    You also answered my noobish question, about the throttle channel: my futaba t7c has the « throttle » dented stick on the right side (not on the left as you all seem to have). I was confused by that fact when trying to init and see how in flight i could control the triwiicopter, hence my noobish question, but then checked to put the dented part on the throttle on left side, but missing a component to do so … So I inverted the #define THROTTLE and ROLL and will use throttle, roll on right side for now. I’m looking forward to flight videos from you soon. I’ll try to get some on my side also within the next few weeks.
    Also, the nano is a pretty good alternative from the mini pro (no ftdi dealing). Thanks Jun and keep posting !

  23. #23 by Hasufel on 4 juillet 2010 - 18:39

    Also, question Jun: I saw you used an UBEC. Why ? To unload the ESCs 5v work delivery and still have control on a parachute in case of fail (heh)? I have a battery for the receiver, was wondering if i’d sacrifice its 80 grams on the total payload of the triwiicopter and have independant receival/transmission power, but if the triwiicopter fails in flight, well, no matter how aerodynamic it is, it will just drop to ground and make a tiny crater.

  24. #24 by Yun on 5 juillet 2010 - 06:32

    Hi! Hasufel
    I am happy you enjoyed my blog.
    I just drew diagram of UBEC for reference.
    I supply 5V through ESC.

    Jun

  25. #25 by Alex on 5 juillet 2010 - 09:11

    Hi !
    @Hasufel
    I’m using mode 1
    http://www.ef-uk.net/manuals/mc-20/rc-control-modes.jpg
    You’ll have to transpose the stick logic if you use mode 2
    @Yun
    I hope you will have more success with a new WM+.
    I looked at your blog too, google translation doesn’t help at all, but I can understand at least the pictures 😉

  26. #26 by Jon on 12 juillet 2010 - 01:06

    Hi Alex, would it be possible to use an arduino nano for this controller? I’m going to have a go at baronpilot controller , but would be interested in seeing how well it works with just the wmp as in your project. I really like your tricopter frame by the way 🙂

  27. #27 by Yun on 12 juillet 2010 - 06:10

    Hi! jon
    I’m using Nano V3.
    no problem.

  28. #28 by Alex on 12 juillet 2010 - 22:11

    Hi,
    It is posible to use any arduino or clone if they host an Atmel 328p operating at 16MHz.
    It is the case for pro mini, nano or even the classical duemilanove.

  29. #29 by jun on 13 juillet 2010 - 16:22

    Hi! Alex
    I got original WMP.
    but servo jitter occured sometimes when low throttle. my servo is blue bird max bms-380

  30. #30 by jun on 17 juillet 2010 - 02:08

    Hi Alex!!
    Thanks for your efforts.
    I got an error message in the process of running triwiicfg- javaw.exe not found
    any ideas ?
    I’m using vista.

    Yun.

  31. #31 by Alex on 17 juillet 2010 - 09:42

    Hi Yun,
    If your windows version does not already include java,
    you can download and install it directly from sun site.
    Select the JRE (Java runtime) here:
    http://java.sun.com/javase/downloads/index.jsp

  32. #32 by tazdevil on 18 août 2010 - 10:25

    cool V3.0 is out , need o test it,

    defintively stop Baron pilot research
    please modify the mix routine option for a quad or tri 🙂

    very good job Alex

  33. #33 by tazdevil on 18 août 2010 - 10:30

    is aux1 active stable mode ?

  34. #34 by philip on 14 septembre 2010 - 13:31

    Hi.
    Great work!
    Looks very promising. I have a duemilenove arduino. Can i use this instead the pro mini? I just connect the cables to the corresponding pins? No need to change the code? ( As i dont know anything about programming…)

    Thanks

  35. #35 by Alex on 14 septembre 2010 - 14:27

    You can use your duemilenove. It’s 100% compatible PIN to PIN + USB support.
    It’s exactly the same Atmel inside, just is a bigger format.

  36. #36 by philip on 14 septembre 2010 - 15:00

    Thanks
    Already ordered a wmp. I will try it on my existing 4 gyro tri
    ( http://www.youtube.com/watch?v=4LeCjHxp3Fw )

  37. #37 by alejandro on 4 novembre 2010 - 06:48

    very good this tutorial, buy arduino mega quick, my idea is to take this as a basis, but not used by radio control to manage, I will use wifi to deal with my android phone.
    tend news soon.
    Thank you very much Alejandro from Argentina.

    muy buenos este tutorial, por apresurado compre arduino mega, mi idea es tomar esto como base, pero no usare radio control para manejar, utilizare wifi para manejar con mi teléfono android.
    pronto tender noticias.
    Muchas gracias Alejandro desde Argentina.

  38. #38 by Nanopilot on 4 novembre 2010 - 07:30

    Hello,
    Greetings from Vietnam.
    Nice work. Looks easier to me (no electronics expert) than the Schrediquette.
    Is it possible to use the new Arduino Uno?

  39. #39 by Alex on 9 novembre 2010 - 08:36

    Yes, you can use the new Arduino Uno if you want.
    PINs are the same

  40. #40 by Claudio Miklos on 10 novembre 2010 - 17:45

    Hello, Very good work.

    What modifications have to be made on the code to use a quadricopter + configuration?

    Another silly question is about the propellers…in a quad + configuration normal and counterclockwise propellers are used ?

  41. #41 by mihai on 11 novembre 2010 - 22:11

    Hello alex

    can this be extended for hexa or octo configuration?

    From connection schematic i see pins 8 and 13 are free so is it possible to easy do the hexa configuration?

  42. #42 by Alex on 11 novembre 2010 - 22:22

    For a quad, it’s possible to use:
    – 4 identical propellers is you give an angle to motors
    – or 2CW+2CCW if you mount the 4 motors without angle

    To choose the right setup, the modification must be done at the beginning of the sketch (#define section)

    A hexa Y6 version is coming (see rcgroups forum for details), first tests are successful. No hexa or octo conf for the moment.

  43. #43 by mihai on 12 novembre 2010 - 17:25

    Thx

    To acchieve octo conf it is possible to use a demuxer circuit?

    pinC ——-> demuxer clock
    (pinA, pinB) -> demuxer_input -> control 4 esc

    its just an idea…no shooting please 🙂

    I am interested in oct for the redundancy and power

  44. #44 by Alex on 12 novembre 2010 - 20:46

    ESCs are driven via hardware PWM. It’s not really possible to tuned the PWM output and demux them.
    But if you want an octo, you can just double each motor of a QUAD+ via a Y connection to each ESC.

  45. #45 by mihai on 13 novembre 2010 - 19:19

    I understand now. I guess in this case there are 3 solutions i see.
    1. Either make another device which can provide more PWM signals (like I2C to PWM, i saw some discussion about this on rcgroups)
    2. Conect another board arduino pro mini which can provide aditional PWM ports. (im not sure if won’t be a problem with synchronization or something)
    3. use of arduino mega 🙂

    Which one do you think is the most down to earth solution?

(ne sera pas publié)