This project was started in , electronics and control loops. Because I always need a cool project to learn new things, it was clear that something that can fly had to be built.
The project started as a "tricopter-only" project, but as I wanted to build smaller vehicles with more payload capacity, I decided to make some quadrotor, hexacopter and Y6 hexacopter firmwares too. My main interest is to build very small MAVs that fly as good as larger ones (or even better) and that can be controlled by wireless video link. I also experimented with autonomous flight in GPS-denied areas (video), and with GPS assisted autonomous hover (video).
-- William

Contact: Shrediquette @ g m x . d e --- All content published under CC Attribution-Noncommercial-Share Alike 3.0 Germany

GUI released and some other things

Okay, today there are some more news on the project:
First of all, I can release the GUI. It was tested on Windows Vista and Windows XP. I hope that the GUI is at least partially self-explanatory, but I'll write a tutorial soon.
TriGUI v1.0 features:
  • COM ports 1-30 selectable
  • Saving and loading parameter-sets to/ from hard disc
  • Stick sensitivity (roll & nick, yaw) for acro and hover mode
  • Exponential agility boost for acro mode
  • Minimum throttle (idle up)
  • Free channel assignment (CH. 1-4) for throttle, nick, roll, yaw
  • Motor deactivation (safety feature)
  • Inversion of the directions of the gyro's and the ACC's
  • Modify parameters for the complimentary filter
  • Hover and acro mode PID parameters
  • Voltage warning threshold
  • Display problems with reception
  • Realtime display of sensors, transmitter and voltage level
  • Firmware update via RS232 with a single button click
If you're using windows XP, you might have to install the .NET framework 3.5 prior to using the GUI:
http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en

The newest release will always be available from the link in the right column of this blog. There, you'll also find the latest firmware (.bas and compiled as .hex).

I built a second Shrediquette for Eric, a nice guy from Paris/ France. This gave me the opportunity to check the setup again. I had no problems during construction at all, everything worked very fine. As soon as I did some outdoor test, the tricopter will be shipped to Eric.


I am thinking about making a I²C -> PWM converter, to enable the use of standard ESCs (a number of people requested this possibility). I already designed a PCB, I would like to use an ATtiny45 (one µC for each ESC). The converter is only 17 x 17 mm (0.7 x 0.7 inch). The converter will be powered by the BEC of the ESC. Using two solder jumpers, the user can select PWM refresh rate (like 50Hz, 100Hz, 200Hz, 400Hz or so). Now for the problems...: As you might have noticed, my personal Shrediquette flies very good with I²C ESCs. Therefore, I don't need this converter. I don't have any standard ESCs, so I can't test the converters (my programming skills always require extensive testing to find all the errors I made ;-D). I am not willing to buy three ESCs because I simply don't need them. So, if anyone out there is planning to build a Shrediquette with standard ESCs, it would be very nice if he or she would borrow me the ESCs for testing purposes.


The last news is that I succeeded in doing a double and a triple flip. The double flip is not critical, but the height loss for the triple flip is quite high... I will keep on trying to improve my flying skills...

6 comments:

  1. Very Impressive. Can't wait to start on my setup.

    I have one questions.
    Will the I2C-PWM cause any performace issues? i always thought that the reason why everyone went to an i2c control was for the increased response.
    PWM was to slow...
    Are we thinking that the Cheap super simple PWM Esc from Hobbing would work with these.
    (http://hobbyking.com/hobbycity/store/uh_viewItem.asp?idProduct=656&Product_Name=TowerPro_w18A_Brushless_Speed_Controller ----or even ----http://hobbyking.com/hobbycity/store/uh_viewItem.asp?idProduct=2168&Product_Name=TURNIGY_Basic_18A_v3.1_Speed_Controller)

    ReplyDelete
  2. I know that some standard PWM ESCs work with update rates of 400 Hz. My copter calculates it's attitude with 500 Hz, so I²C won't be much faster than PWM. It is worth trying. I decided to use I²C because it is a fully digital signal (PWM is only "half digital" in my opinion). We'll see if my converter works when I have three standard ESCs.

    ReplyDelete
  3. ciao william
    o trovato questo programma per arduino
    e possibile inserire nel programma principale
    naturalmente aggiungendo le altre 3 porte
    che mancano. poi nel programma di configurazione
    del tricottero scegliere PWM/IC2.
    ------------------------------------------------

    // MK I2C receives I2C power levels and converts that to a standard 490 hz pwm output on pin 9.
    // connect ground, data (orange on mine) to Arduino analog pin 4, clock (brown on mine) to Arduino analog pin 5.
    // connect ground, esc signal output to pin 9.
    // Saleae reports 29, 2A, 2B, and 2C which are hex numbers. The wire.begin() command expects decimal numbers, so
    // Motor number 1 (Front) is 29 hex or 41 decimal
    // Motor number 2 (Rear) is 2A hex or 42 decimal
    // Motor number 3 (Right) is 2B hex or 43 decimal
    // Motor number 4 (Left) is 2C hex or 44 decimal
    // Motor number 5 is 2D hex or 45 decimal
    // Motor number 6 is 2E hex or 46 decimal
    // Motor number 7 is 2F hex or 47 decimal
    // Motor number 8 is 30 hex or 48 decimal
    // Motor number 9 is 31 hex or 49 decimal
    // Motor number 10 is 32 hex or 50 decimal
    // Motor number 11 is 33 hex or 51 decimal
    // Motor number 12 is 34 hex or 52 decimal

    #include

    int x=0; // this is the value sent by the MK
    int y; // this is a value that is mapped from 0-255 MK to 126-250 pwm
    int pwmout = 9; // using analog pin 9 for the pwm output to the esc

    void setup()
    {
    Wire.begin(41); // join i2c bus with address #41
    Wire.onReceive(receiveEvent); // register event
    // Serial.begin(9600); // start serial for output

    }

    void loop()
    {
    y = map(x, 0, 255, 126, 250); // this takes the 0-255 MK number (x) and changes it to 126-250 (y) for the Arduino pwm mode
    // Serial.print(x); // prints the MK value
    // Serial.print(" MK "); // prints the MK value
    // Serial.print(y); // prints the esc output pwm value
    // Serial.println(" PWM"); // prints the esc output pwm value
    analogWrite(pwmout, y); // sets the value (range from 126 to 250 for esc)

    }



    // function that executes whenever data is received from master
    // this function is registered as an event, see setup()
    void receiveEvent(int MKpower)
    {
    x = Wire.receive(); // receive byte as an integer
    }

    ReplyDelete
  4. Very good job
    A question: will you release the source for GUI that way some of us can learn a bit more about PC-AVR exchange of information (modern or contemporary way)
    Thank you for sharing your knowledge

    ReplyDelete
  5. I don't know yet, I'll decide that in the near future. So far you can have a look at this article:
    http://translate.googleusercontent.com/translate_c?hl=de&sl=de&tl=en&u=http://www.rn-wissen.de/index.php/Windows_Programm_zum_Steuern_des_AVR%27s

    ReplyDelete
  6. William
    I am looking that link, will read. Thank you a lot for your time, and for the link ...
    You are right, nice start.

    ReplyDelete