Bixler2 mit MultiWii-Autopilot & RTH

Chriss_:)

Erfahrener Benutzer
#1
Hallo zusammen,

heute möchte ich euch mal eins meiner Projekte vorstellen: Bixler2 mit MultiWii-Autopilot & RTH! :)
Hier werde ich versuchen, alle Schritte, möglichst detailiert, zu beschreiben, sodass auch Anfänger mit der Anleitung klar kommen.

1. verwendete Komponenten
...und natürlich noch Sender, Empfänger, Regler und Akku! ;) So landet ihr, nur für den Autopiloten, bei $56.56 wobei es auch noch günstiger geht, wenn ihr noch Komponenten rumliegen habt oder nen bisschen sucht. Hier z.B. eine Crius inkl. FTDI für $21.99.

Ich nutze zusätzlich noch ein BT-Modul um die Parameter einfacher zu verstellen, so kann man auch mit der entsprechenden App am Handy auf dem Feld Einstellungen vornehmen.

2. benötigte Software
Ich nutze derzeit die Version vom 04.02.2014, es gibt mittlerweile auch eine neuere, aber bei mir funktioniert diese hier ganz gut. Bei der MultiWiiGUI müsst ihr mal schauen, welche da am besten funktioniert, für mich ist es die 2.3pre4, die neuste (2.3pre8b5) habe ich noch nicht getestet.

3. Vorbereitungen
Ich gehe davon aus, dass die Bixler aufgebaut und flugbereit ist. Mein erster Schritt war es, die Bixler im 45° Winkel aus ca. 25m Höhe gen Boden zu bringen. Hierbei sind 2 Faktoren besonders wichtig: der Winkel und der Untergrund! Ich bevorzuge bei letzterem eine nicht behandelte Wiese. Wiesen mit einer Jaucheschicht könnten das Ergebnis verfälschen! ;) Die Nase der Bixler ist anschließend schön verbogen. Wenn ihr alles richtig gemacht habt, bricht hierbei auch der Carbonstab. :p

Nach dieser wichtigen Behandlung folgt die Vorbereitung der FC. Die Arduino IDE wird extrahiert und in einem, nicht zu tief verschachteltem Verzeichnis gespeichert. Bei mir war es "V:\MultiWii\Programme\arduino-1.0.5". Entpackt anschließend die Firmware in ein anderes Verzeichnis (bei mir liegt sie hier: "V:\MultiWii\Firmware\MultiWii_AP_RTH\140204"). Nun startet ihr die IDE und wählt unter "Datei" => "Einstellungen" => "Sketchbook Speicherort" euer Firmwareverzeichnis. Ihr solltet nach dieser Einstellung die IDE neu starten. Die Arduino IDE ist nun bereit. Steckt den FTDI Adapter an und lasst die Treiber installieren.

capture_011.jpg

Wenn diese Vorbereitungen abgeschlossen sind, geht es an den SourceCode. Zuerst kümmern wir uns um die Software auf der FC. Interessant dafür ist die "config.h" ("V:\MultiWii\Firmware\MultiWii_AP_RTH\140204\MultiWii\config.h"). Öffnet diese mit einem beliebigen Editor (ich nutze dafür gerne Notepad++).

Da die Zeilen je nach Version unterschiedlich sind, nenne ich nur kurz die Einstellungen. In der anhängenden Zip-Datei sind nochmal alle Quelltexte, dort könnt ihr euch die genauen Zeilen anschauen! Aktivieren heißt, die Zeile wird für den Compiler eingeblendet, dazu entfernt ihr die beiden "//" vor der Zeile. Beim deaktivieren einfach wieder "//" vor die Zeile schreiben. Nutzt ihr Notepad++ weden kommentierte Zeilen in grün dargestellt. (deaktivierte Zeilen sind auskommentiert, nur der Richtigkeit halber)

Z50 => "#define AIRPLANE" aktivieren
Z63 => "#define MINTHROTTLE 1000"
Z67 => "#define MAXTHROTTLE 2000"
Z126 => "#define CRIUS_SE_V2_5" (ich habe eine eigene Definition für die V2.5 erstellt, es geht auch die CRIUS_SE_v2_0!)
Z230 => "#define ONLYARMWHENFLAT"
Z394 => "#define RCAUXPIN8"
Z519 => "#define GYRO_SMOOTHING {20, 20, 3}"
Z669 => "#define I2C_GPS"
Z697 => "#define MAG_DECLINATION 1.52f" => Die Declination ist entsprechend dem Flugort zu setzen!

Das sollten erstmal alle Anpassungen in der config.h sein. Bitte schaut nochmal in meine angehängte config.h, ob ich was übersehen habe! :)

Als nächstes folgen die Anpassungen für das Nav-Board. Die Datei ist hier zu finden: "V:\MultiWii\Firmware\MultiWii_AP_RTH\140204\I2C_GPS_Pactched\I2C_GPS_v2_2\config.h"

Z11 => "#define FIXEDWING" aktivieren!
Z14 => "#define GPS_SERIAL_SPEED 115200" Baudrate einstellen (wenn ihr später die "u-blox-config.ublox.txt" nutzt, 115200 eingeben).
Z28 => "#define UBLOX" aktivieren!
Z41 => "//#define SONAR" deaktivieren!

So, nachdem wir nun auch diese Einstellungen vorgenommen haben, können wir mit dem Flashen beginnen! Steckt den FTDI-Adapter an die FC, anschließend an den USB-Port des Rechners. Es ist sonst KEINE weitere Komponente an der FC angeschlossen! Öffnet jetzt die Arduino IDE und anschließend das MultiWii Sketch ("Datei" => "Sketchbook" => "MultiWii"). Wählt unter "Tools" => "Board" => "Arduino Pro or Pro Mini (5V, 16MHz) w/ ATmega328" und unter "Tools" => "Serieller Port" den COM-Port eures FTDI Adapters. Beachtet bitte, dass das Menü "Tools" ein paar Sekunden braucht, wenn ihr BT am Rechner aktiviert habt, es wird erst versucht, alle gebundenen Geräte anzusprechen!

capture_008.jpg

Jetzt könnt Ihr mit dem Button "Upload" (oder "Datei" => "Upload") die Firmware auf eure FC aufspielen. Die Arduino IDE kompiliert zunächst den Code und läd sie anschließend via USB auf den Microcontroller eurer FC.

capture_010.jpg

Als nächstes kommt das Nav-Board dran, wählt nun als Sketchbook "I2C_GPS_Pactched" => "I2C_GPS_v2_2". Ihr müsst die Pinheader nicht umbedingt an das Nav-Board anlöten, wenn ihr die beiliegenden Pinheader in den FTDI-Adapter steckt, könnt ihr die andere Seite auch in das Nav-Board stecken und leicht verkanten, so das alle Pinne Kontakt bekommen. Hier müsst ihr aber aufpassen, dass nicht während dem Flashvorgang die Pinleiste verrutscht. Ich halte dazu das Board und den FTDI-Adapter in der Hand. Auch hier ist es wichtig, dass keine weiteren Komponenten angeschlossen sind! Die Board- und COM-Einstellungen können so verbleiben, der Upload erfolgt auch wieder mit dem Button "Upload".

capture_009.jpg

Nun sin die Vorbereitungen fast abgeschlossen. Es fehlen nur noch die Einstellungen für das GPS Modul über u-center! *folgt später*

4. Verkabelung
Empfänger
  • THR => D2
  • AIL => D4
  • ELE => D5
  • RUD => D6
  • Mode => D7
  • Arm => D8
Servos
  • D12 => AIL 1
  • D3 => RUD
  • D9 => THR (ESC)
  • D10 => ELE
  • D11 => AIL 2
Zusätzlich habe ich noch die Flaps direkt per Y-Kabel an den Empfänger angeschlossen (ein Servo muss dafür umgelötet werden, oder ihr nutzt einen Servo-Reverser).

Das Navboard wird an den i2c-Port angeschlossen:
  • FC => Nav-Board
  • SCL => SCL
  • SDA => SDA
  • +5V => VCC
  • GND => GND
GPS ans Nav-Board (beachtet hier bitte, dass TX & RX jeweils gekreuzt sind!)
  • Nav-Board => GPS
  • +5V => +5V
  • RXD => TXD
  • TXD => RXD
  • GND => GND

Hier ein Bild zur Übersicht:
Verkabelung.jpg

Ich habe hierbei die Stromversorgung der Komponenten weggelassen, sollten dazu noch Fragen bestehen, kann ich auch diesen Punkt noch erläutern! :)

5. FC in Bixler verbauen
Die FC sollte möglichst in Schwerpunktnähe angebracht werden. Am Anfang hatte ich die FC unter der Kabinenhaube, fand diese Lösung aber zu umständlich, da ich jedes mal mit dem Akku an die FC kam. Also schnitt ich kurzerhand eine Öffnung unterhalb der Tragflächen in den Rumpf:

20140304_184341.jpg

20140304_184520.jpg

Die FC habe ich auf einem Stück Bastelplatte montiert und mit doppelseitigem Schaumstoffklebeband im Rumpf fixiert! ;) Der Empfänger sitz im hinteren Bereich. Das Nav-Modul befindet sich im Durchgang nach vorn, von da geht das Kabel für das GPS nach oben. Um den GPS Empfänger zu montieren habe ich die Brücke über den Tragflächen an einer Stelle plan gemacht. Darauf den GPS Empfänger und mit einer Schicht transparentem Paketklebeband gesichert:

20140304_184559.jpg

Nicht schön, aber selten und passend zur Nase! ;)

6. Einstellungen
Als nächstes kommen die Einstellungen, hier musste ich nicht mehr viel anpassen, fast alle Werte sind Default.
capture_0010.jpg

capture_0011.jpg

capture_0012.jpg

capture_0013.jpg

capture_0014.jpg

Die Höhe für RTH wird mit dem Parameter PosHoldRate D eingestellt, 0,03 beteutet 30m.
Wichtig ist es noch, alle Kalibrierungen vorzunehmen. Dank BT-Verbindung und GUI kein Problem! ;)

Im Reiter "FC Config" können die Servo-Wirkrichtungen umgekehrt werden.

Die Zuordnung der Schalter im Reiter "RC Control Settings" kann beliebig erfolgen, ich habe mir ARM auf einen 2Pos-Schalter gelegt, der 3Pos-Schaltet 3 Funktionen: Passthru (normale Steuerrung, Befehle werden durchgereicht), Horizon (Stabi), GPS Home + Horizon (RTH inkl. Stabi).

7. Fliegen
Beim Akku anstecken muss drauf geachtet werden, dass der Flieger ausgelevelt liegt, sonst stimmen die Lagen nicht richtig! Dann sollte gewartet werden, bis ein GPS-Fix besteht. Sobald ihr armed wird die aktuelle Position als Home Position gespeichert. Kontrollieren könnt ihr eine gespeicherte Home Position ganz einfach, indem ihr am Boden auf RTH schaltet, ist eine Home position gespeichert, geht das Höhenruder nach oben (der Flieger will auf die eingestellte Höhe steigen).

In der Luft habe ich zunächst die Stabi-Funktion getestet (auf ausreichend Sicherheitshöhe achten!), der Flieger wirk in Kurven etwas träger, liegt aber sonst sehr sauber in der Luft! Danach auf RTH geschaltet. Soll während der RTH Funktion der Motor laufen, müsst ihr an der Funke etwas Gas geben, die FC regelt die Gasstellung dan automatisch, aber ein Impuls ist notwenig. Genauso geht der Motor wieder aus, wenn ihr den Gasknüppel auf 0 zieht.

8. Fazit
Trotz der "günstigen" Komponenten bin ich von der kleinen FC echt begeistert, Stabi, RTH und BT-Telemetrie, was will man für den Preis mehr. Demnächst kommt noch die Cam und der Sender drauf, danach überlege ich noch am KV-OSD, ich werde hier davon berichten! ;) Auch werde ich noch ein Video nachreichen! :)

Vielen Dank an PatrikE aus dem MultiWii-Forum, der viel Arbeit in die Firmware gesteckt hat! :)

Wenn Ihr Fragen zum Setup habt, einfach fragen! :)

Schöne Grüße aus dem Sauerland!
Chriss
 

Anhänge

Zuletzt bearbeitet:

Chriss_:)

Erfahrener Benutzer
#2
9. Ergänzungen

a) die jeweils aktuelle Version findet ihr hier: https://multiwii.googlecode.com/svn/branches/PatrikE/FixedWingNav_Dev/FixedWingNav.rar (auf Wunsch von Rangarid! ;)) Hierbei müssen jedoch alle Konfigurationseinstellungen selbst eingerichtet werden.

b) Minimale Konfiguration:
Code:
/*
Recommended minimum settings for GPS fixedwing
This settings in config.h
================================================== ==================

// Use the Patched I2C GPS for FixedWing and OSD
#define I2CPATCH

//#define FLYING_WING // Select model
#define AIRPLANE

#define MOTOR_STOP // Just for safety
#define MAXTHROTTLE 2000 // To get full power
#define NO_FLASH_CHECK

#define MAG_DECLINATION 3.6f // For your location.

#define CRIUS_SE // Select your FC

// Example of Gps setup
#define GPS_PROMINI_SERIAL // Setup your GPS
#define GPS_BAUD 115200
#define NMEA

================================================== ==================
In Gps.h
All settings for limiting maximum values during navigation.
Limit of throttle,Zones and altitudes.

================================================== ==================
Settings In Gui.
NavR_P,I,D => for navigation
ALT_P,I,D => P for altitude
POSR_D => Set RTH altitude 0.250 = 250 meter over home pos

================================================== ==================

Angle or Horizon mode must be active for Gps navigation.

================================================== ==================
c) MultiWii mit FrSky-Telemetrie von Rangarid
 
Zuletzt bearbeitet:

Rangarid

Erfahrener Benutzer
#3
Coole Sache, wusste garnicht, dass Multiwii inzwischen RTH für Flugzeuge kann. Wollte mir schon ein Board mit Mega Prozessor für ArduplaneNG bestellen...

Ob man das GPS wohl anstelle des BT Moduls anschließen könnte? Dann spart man sich das I2C Interface.
 

Rangarid

Erfahrener Benutzer
#5
Ich seh grad hier kann man auch noch einiges einstellen:
Code:
/* Maximum Limits for controls */
#define GPS_MAXCORR    25     // Degrees banking applied by GPS.
#define GPS_MAXCLIMB   15     // Degrees climbing . To much can stall the plane.
#define GPS_MAXDIVE    10     // Degrees Diving . To much can overspeed the plane.


#define CRUICETHROTTLE 1650   // Throttle to set for cruisespeed.


#define IDLE_THROTTLE   1300  // Lowest throttleValue during Descend
#define SCALER_THROTTLE  8    // Adjust to Match Power/Weight ratio of your model


#define FAILSAFE_RTH      true  // Enable RTH for failsafe incl Auto DisARM at home and autoland


#define SAFE_NAV_ALT        20  // Safe Altitude during climbouts Wings Level below this Alt. (ex. trees & buildings..)
#define SAFE_DECSCEND_ZONE  50  // Radius around home where descending is OK
Das sieht sehr vielversprechend aus.

Flaps kann man anscheinend auch konfigurieren:
Code:
  /***********************          Airplane                       ***********************/
    //#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle.


    //#define FLAPPERONS    AUX4          // Mix Flaps with Aileroins.
    //#define FLAPPERON_EP   { 1500, 1700 } // Endpooints for flaps on a 2 way switch else set {1020,2000} and program in radio.
    //#define FLAPPERON_INVERT { -1, 1 }    // Change direction om flapperons { Wing1, Wing2 }
    
    //#define FLAPS                       // Traditional Flaps on SERVO3.
    //#define FLAPSPEED     3             // Make flaps move slowm Higher value is Higher Speed.
 
Zuletzt bearbeitet:

Butcher

Bill the Butcher
#6
geil geil geil wusste gar nicht das es sowas mittlerweile gibt! suuuuper ich werd moin basteln hab noch n experimental bixler rumfliegen:)
 

Chriss_:)

Erfahrener Benutzer
#7
Hi zusammen! :)

Danke Kaldi! ;) Ich hoffe, ich habe nichts vergessen! ;)

@Rangarid: nein, leider kann man sich nicht das i2c-Board sparen, das liegt daran, dass die FC nur den "kleinen" ATmege328 drauf hat, der kann kein Serial-GPS, schafft der vom Code her nicht, daher braucht der zur Unterstützung den 2. 328 (der auf dem i2c-Board). Mit nem Crius AIOP und dem 2560er könnte es klappen! ;)

Ja, die Einstellungen sind umfangreich, aber ich wollte mich hier auf die Grundeinstellungen beschränken, sind ja doch viele Schritte und so hoffe ich, können auch Anfänger die MultiWii im Flieger nutzen! ;)

@Butcher: würde mich über ne Rückmeldung freuen, ob es bei dir auch so problemlos geklappt hat! :)

Achja, man kann, wenn man auf Mag und Baro verzichten kann, auch einen Arduino Pro Mini nutzen! :) Dazu noch nen MPU6050 und man hat ne sehr günstige FC! ;)

Schöne Grüße aus dem Sauerland!
Chriss
 
Zuletzt bearbeitet:

Rangarid

Erfahrener Benutzer
#8
Und hier sehe ich noch folgendes:
Code:
    //#define GPS_PROMINI_SERIAL   // Will Autosense if GPS is connected when ardu boots.
Wofür ist das dann? Ich hab selber schon mit einem kleinen Atmega GPS ausgelesen...
 

Chriss_:)

Erfahrener Benutzer
#9

Rangarid

Erfahrener Benutzer
#10
Ah super, ich habe gerade das hier gefunden:
http://www2.pmb.co.nz/blog/?page_id=2709

Wichtig dabei ist folgender Absatz:
You can disable the serial console (Multiwii Conf) by commenting out serialCom() in the file multiwii.cpp at about line 490. This would in theory allow the only UART to be used for GPS. But then how do you configure the rest of it? Enabling #define GPS_PROMINI_SERIAL allows auto-sense of GPS presence at reset. This allows switching between GPS and Multiwii Conf on the UART (port-0). This way, Multiwii Config does allow setup of GPS-Hold and RTL modes even though the GPS is not plugged in while the Conf program is connected.
Be careful to stop and disable the port in Multiwii Conf before uploading a new sketch. I didn’t and managed to corrupt the Arduino bootloader. Without an adaptor, I had to solder to the Atmega328 and use the AVRICSP programmer. About 45 minutes to set up and 1 minute to reload.
Aber so wie ich verstehe läuft das so:
1. GPS dran dann wird es erkannt und genutzt
2. kein GPS dran - es kann konfiguriert werden

Dann geht halt kein Bluetooth mehr wenn man das GPS direkt dranhängt...
 

Chriss_:)

Erfahrener Benutzer
#11
Ja, das scheint zu funktionieren! ;)

Wird übrigens von alleine umgestellt, wenn die Option gesetzt ist:
Code:
  #if !(defined(SPEKTRUM) && defined(PROMINI))  //Only one serial port on ProMini.  Skip serial com if Spektrum Sat in use. Note: Spek code will auto-call serialCom if GUI data detected on serial0.
    #if defined(GPS_PROMINI)
      if(GPS_Enable == 0) {serialCom();}
    #else
      serialCom();
    #endif
  #endif
Schöne Grüße aus dem Sauerland!
Chriss
 

Rangarid

Erfahrener Benutzer
#12
Klasse. Dann werde ich das auch benutzen. Was ist denn der kleinste Multiwii Controller mit ACC und GYRO und vllt sogar Baro (optional). Mehr braucht man ja nicht.

Bzw. hier wär interessant ob er sich die Höhe vom GPS holen kann oder nur vom Baro holt.
 

Kaldi

...es funktioniert!
#13
Klasse. Dann werde ich das auch benutzen. Was ist denn der kleinste Multiwii Controller mit ACC und GYRO und vllt sogar Baro (optional). Mehr braucht man ja nicht.

Bzw. hier wär interessant ob er sich die Höhe vom GPS holen kann oder nur vom Baro holt.
http://witespyquad.gostorego.com/flight-controllers/flip-2-0.html
http://witespyquad.gostorego.com/flight-controllers/flip-2-5.html

Ansonsten mal Johannes fragen, der hat noch was kleineres auf einem Copter... ;)
 

donandi

Well-known member
#15
Oh nee, nicht noch so ein geiles Projekt :p Wo nehm ich blos die Zeit her...
Ich hab ne Bixler im Keller liegen, das wäre die ideale Verwendung dafür.
 

olex

Der Testpilot
#16
Abonniert, sehr geil und vor allem schön detailliert das Wichtige beschrieben, sodass jeder der auch nur minimal Ahnung von der Sache hat das Ganze nachbauen kann. Vielen Dank für den Qualitätsthread!
 

Rangarid

Erfahrener Benutzer
#17
Oh nee, nicht noch so ein geiles Projekt :p Wo nehm ich blos die Zeit her...
Ich hab ne Bixler im Keller liegen, das wäre die ideale Verwendung dafür.
Geht auch mit allen andern Flugzeugen inkl. Nuris ;)

Hier gibt es übrigens auch ne Mini FC für 15$:
http://witespyquad.gostorego.com/flip-mwc-flight-controller.html

Ich versuche heute mal rauszufinden, ob dem Controller die Höhe vom GPS ausreicht, oder ob er unbedingt ein Baro braucht. Sonst würde diese 15$ FC locker ausreichen.

Falls ohne Baro geht wär das hier Ideal:

http://www.hobbyking.com/hobbyking/...2U4_Micro_Flight_Controller_USB_GYRO_ACC.html
 
Zuletzt bearbeitet:

Rangarid

Erfahrener Benutzer
#19
Du hast bei dir die Version 140204, aktuell ist aber die Version 140220.

Eventuell solltest du einfach die Version aus dem Multiwii Repository verlinken:
https://code.google.com/p/multiwii/source/browse/branches/PatrikE/FixedWingNav_Dev/FixedWingNav.rar

ich nehm an, das ist dann immer die aktuellste Stabile Version.

Zum GPS:
GPS_hold works.
It will save the pos in 3D where it's enabled and repetedly return to the same point.
Altitude from GPS is used.
Should keep around +/- 2m.
http://www.multiwii.com/forum/viewtopic.php?f=7&t=2456&start=420#p47559

Es scheint also tatsächlich die GPS Höhe genutzt zu werden.
 
Zuletzt bearbeitet:

Chriss_:)

Erfahrener Benutzer
#20
Hi Rangarid,

hab im #2 Post den Link zur jeweils aktuellen Version verlinkt. Hierbei muss man jedoch beachten, dass man alle Anpassungen noch selbst vornehmen muss! ;) Ist also eher für Leute, die schonmal ne MultiWii konfiguriert haben! ;)

Schöne Grüße aus dem Sauerland!
Chriss
 
FPV1

Banggood

Oben Unten