iKopter.png

iKopter ist eine iPhone-App um Aufgaben rund um den MikroKopter zu erfüllen.

Was kann die App?

Kommunikation mit dem MK. Hier sind bis auf die 3d Geschichte alle Kommandos der FC0.82f und NC0.22a eingebaut. Es ist so aufgebaut, dass verschiedene "Lowlevel" Module für die Verbindung zum Kopter möglich sind.

Zur Zeit habe ich eine WLAN-Anbindung, Unterstützung des DockConnectors (seriell), Bluetooth und eine Fake-Connection.

In der Oberfläche habe ich dann folgendes:

  1. Displayanzeige und zwar mit einfacher Möglichkeit zwischen NaviCtrl, FlightCtrl und 3DMAG umzuschalten.

  2. Debug-Werte auch hier mit Umschalten
  3. Settings
    • Die Settings sind allerdings noch für 0.82f

    • Auswählen des aktuell verwendeten Settings.
    • Anzeigen und Ändern der Settings
      • Channels
      • Compass
      • NaviControl

      • Stick
      • Altitude
      • Camera
      • Gyro
      • Coupling
      • Looping
      • Misc
    • Anzeige der Mixer-Werte (editieren geht auch aber speichern is nich)
    • Motortest
    • Anzeige der Funk-Channels
  4. Ein OSD.
  5. Wegpunkte

Voraussetzungen

Als erstes braucht ihr ein iPhone oder iPad mit der iOS Version 4.0.1 oder höher. Getestet ist allerdings nur mit 4.3.1. Dann der Knackpunkt: Für die meisten Anschlußarten muss zwingend ein Jailbreak (JB) vorhanden sein. Für WiFly und den Redpark-Adapter ist zwar kein JB nötig, allerdings wird die iKopter-App z.Zt. nur über die JB-App "Cydia" zur Verfügung gestellt, so daß man nur dann um den JB herumkommt, wenn man den Source-Code selbst übersetzt, was wiederum Programmierkenntnisse (mit Apples Xcode) sowie enen kostenpflichtigen Entwickler-Account bei Apple erfordert.

Die unterstützten Softwareversionen für den MK sind:

FC: 0.82 und 0.84

NC:0.22 und 0.24

Wo finde ich es?

Installation

Die neueste Version kann jetzt auch über die serielle Schnittstelle des DockConnectors mit dem Kopter reden. Dafür ist allerdings ein Jailbreak notwendig. Wer den schon durchgeführt hat kann die App über Cydia installieren. Dazu muss eine weiter Quelle eingetragen werden.

Die URL ist http://frankblumenberg.de/repo


IMG_0176a.png IMG_0177.PNG IMG_0178.PNG


Sourcecode

Den Sourcecode gibt es bei https://github.com/fblumenberg/iKopter. Man muss allerdings bedenken, dass für ein auf dem iPhone laufendes Programm eine Apple Developer-Lizenz notwendig ist oder es müsste in den App-Store. Zum ausprobieren kann man es aber auch im iPhone Simulator laufen lassen.

Wie schließe ich es an

Das Hauptproblem bei der Verwendung eines iPhones ist das Fehlen einer Seriellen Schnittstelle für die Kommunikation. Zwar ist elektronisch wohl alles notwendige vorhanden, aber Apple hält das ganze unter Verschluss. Daher geht nur ein mit einm Jailbreak versehenes Gerät.

Um das iPhone mit dem MK zu verbinden gibt es drei Möglichkeiten.

  1. WLAN
  2. Seriell über den DockConnector

  3. Seriell über Bluetooth

WLAN

Eine Möglichkeit ist die Verwendung eines WLAN-Moduls (z.B. von Avisaro). Die andere Möglichkeit ist die Verwendung eines Seriell zu LAN Proxy. Beispiele und ein Paar Ideen finden sich im zugehörigen Forumsthread.

http://forum.mikrokopter.de/topic-9730-2.html

Als Proxy hat sich serproxy-0.1.4.src_.zip als ganz praktisch erwiesen. Folgende Konfiguration hat schon funktioniert

newlines_to_nils=false

# Comm ports used
comm_ports=1

# Default settings
comm_baud=57600
comm_databits=8
comm_stopbits=1
comm_parity=none

# Idle time out in seconds
timeout=300

# Port 1 settings (ttyS0)
net_port1=64400

serial_device1=/dev/cu.usbserial-A2002Qzh

Beim Device-Namen muss man allerdings noch nachschauen, ob der wirklich so heißt.

Von der Version 0.1.3 gibt es auch schon fertige Executables für Windows serproxy-0.1.3-3.bin.win32.zip und Mac serproxy-0.1.3-3.bin.macosx.zip.

Um die einzelnen Parameter mal auszutesten ist auch der NCSimulator eine gute Alternative.

WiFly-Modul

Eine weitere Alternative sind die WiFly-Module von Roving Networks: RN-134 und RN-174 (z.B. bei Mouser.com zu bekommen). Die Module können mit 5V versorgt werden, sodaß man sie direkt an den Debug-Port vom FlightCtrl oder NaviCtrl anschließen kann. Diese Module können auch einen Adhoc-Accesspoint stellen, so dass man keinen extra Router benötigt, um sich vom iOS-Gerät mit dem Modul am Kopter zu verbinden.

Zur Reichweite: RN-134 (hat eine leicht größere Sendeleistung als RN-174) mit externer Antenne kam 85m weit bei direkter Verbindung (Adhoc-Modus des RN-Moduls) mit dem iPhone4, und 250m weit mit einem iPad2 - dann brach die Verbindung ab. Allerdings flog der Kopter beim iPhone-Test direkt über dem iPhone, und die Antenne am Kopter war fast senkrecht ausgerichtet, also in einem ziemlich ungünstigen Winkel zum Empfänger.

Bei dem Test wurde das RN-Modul auf 1Mbps eingestellt für max. Reichweite, und zur Steuerung eine 2,4GHz-Funke von Futaba (T8FG) eingesetzt - d.h., dass beides auf dem selben Frequenzband (2,4GHz) arbeitete und sich dennoch kaum störte). Um größere Reichweiten zu erhalten, müßte man wohl einen WLAN-Router einsetzen. Die meisten portablen WLAN-Router sind jedoch eher auf geringe Reichweite ausgelegt, man müßte also eher einen stationären Router verwenden.

Aufbau

Als eine relativ einfach Variante der WiFly Module hat sich das "Sparkfun RN-XV WiFly Module" in Kombination mit dem "XBee Explorer Regulated WRL-11373" erwiesen. Hier müssen nur vier Kabel angelötet werden und für den AdHoc Modus eine Kabelbrücke.

Anschluß an das XBee Shield:

MK

MK-Pin

 Shield

GND

7

GND

5V

2

5V

TXD

1

DOUT

RXD

9

DIN

http://gallery.mikrokopter.de/main.php/v/tech/XBeeExplorerRegulatedOberseite.png.html

Für den AdHoc Modus kann man eine Kabelbrücke zwischen "3.3V" und "RES" einsetzten. Es empfiehlt sich, hier einen Jumper zu verwenden.

http://gallery.mikrokopter.de/main.php/v/tech/XBeeExplorerRegulatedUnterseite.png.html

Danach muss man nur noch das Modul auf das Shield setzten.

http://gallery.mikrokopter.de/main.php/v/tech/IMG_0707.JPG.html

Im AdHoc Modus ist das Modul dann unter 169.254.1.1:2000 z.B. mittels Telnet zu erreichen und kann hier konfiguriert werden.

  telnet 169.254.1.1 2000

Die Dokumentation für das Modul findet sich unter Anderem auf der Produktwebseite.

Der wichtigste Punkt für die Konfiguration ist die Baudrate.

*HELLO*
$$$
CMD

set uart baudrate 57600

save

reboot

Das ""save"" Kommando am Ende ist wichtig!

DockConnector

Das iPhone hat eine serielle Schnittstelle und wenn man einen Jailbreak durchgeführt hat, dann kann eine App diese auch verwenden. Allerdings brauch man logischerweise einen Dock-Connector. Für die ersten Versuche kann man den PodBreakout verwendet. Man kann leichter Messen und es lötet sich einfacher.Wenn man direkt an die serielle Schnittstelle des FC/NC geht muss man aber aufpassen. Das iPhone verwendet 3,3V,man braucht einen Pegelwandler von 3,3V auf 5V.

ACHTUNG! Wenn man hier nicht aufpasst zerstört man u.U. die Schnittstelle im iPhone. Daher sind alle weiteren Angaben ohne Gewähr.

Das folgende Bild zeigt die Anschlüsse, die benötigt werden. Wichtig! die Nummern gelten für die Version 1.4 des PodBreakout. Bei den Versionen 1.0 - 1.3 und 1.5 sind die Nummern anders.

http://gallery.mikrokopter.de/main.php/v/tech/PodBreakout.jpg.html

Für die Version 1.0 - 1.3 und 1.5 gibt es dieses Bild

http://www.flickr.com/photos/finsprings/4403179910/

Hier nochmal die Belegung für den Stecker von PodBreakout: http://www.kineteka.com/PodBreakout-v1.aspx

V1.0 - 1.3 und 1.5

V1.4

3,3V

18

17

GND

15

16

Rx

12

11

Tx

13

14

Belegung Dockconnector Apple:

PIN

3,3V

18

GND

1

RX

13

TX

12

Offizielle Belegung nach Apple: http://pinouts.ru/PortableDevices/ipod_pinout.shtml Dieser Stecker stimmt 1:1 mit diesem Layout überein: http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=370467683410&ssPageName=STRK:MEWNX:IT#ht_717wt_1156

Redpark/SkyWire-Adapter

Eine Alternative ist die Verwendung eines fertigen RS232-Adapters für das iPhone, z.B. das SkyWire-Kabel oder Redpark-Kabel. So ein Adapter ist von Apple zertifiziert und kann ohne Jailbreak verwendet werden. Allerdings verwenden diese Adapter V24-Pegel, so daß man diese Pegel noch umwandeln muss, um es an z.B. ein Wi.232-Modul oder direkt an den Debug-Port des MK anschließen zu können. Weiterhin fehlt z.Zt. noch der Code zur Ansteuerung dieser Adapter in der iKopter-App.

Wi.232

Das Wi.232 Modul aus dem Shop kann man auch direkt an den Connector hängen, da es ja sowieso mit 3,3V läuft. Empfehlenswert ist, den iPhone Anschluss zusätzlich zum Flachbandkabel auszuführen. Das benötigt man sowieso für die Programmierung des Moduls.

Natürlich kann man sich auch einen tollen Stecker kaufen und das Ganze stylish verpacken. Es geht aber auch rustikaler.

http://gallery.mikrokopter.de/main.php/v/uploads/Wi_232_Adapter-iPhone.jpg.html

Folgenden Stecker kann man auch benutzen:

Die Belegung für den Anschluss ist dann wie folgt:

GND geht an Pin 1 Dockconnector, 3,3V geht an Pin18 am DC, RX geht an Pin12(TX), und TX an Pin13(RX)am DC. Achtung: dieses Pinout kann abweichend sein. Bitte vorher kontrollieren (Podbreakout etc)

http://gallery.mikrokopter.de/main.php/v/tech/wi232_bestueckt_c_001.jpg.html

Bluetooth

Die App unterstützt eine Verbindung zum BT-Modul aus dem Shop. Voraussetzung hierfür ist die Installation der BTStack Pakets über Cydia.

Wegpunktlisten und Wegpunkte erstellen

Zunächst wird entweder eine vorhandene Wegpunktliste bearbeitet oder duch Tippen auf das "+" (unten rechts) eine neue Wegpunktliste erstellt. Der Name der Liste ist beliebig.

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+16+47+03.png.html

Wegpunkte erstellen

  • Ist noch kein Wegpunkt in der Liste und wird der erste Wegpunkt durch das "+" (unten rechts) erstellt, so wird er standardmäßig auf der in den Einstellungen ("i"-Menü) definiterten Position erstellt. Gleiches gillt für den zweiten WP.
  • Wird ein Wegpunt per "+ mit Pfeil" erstellt, wird der Wegpunkt immer auf der Ist-Position des iDevice erstellt.
  • Ab zwei Wegpunkten in der Liste, wird ein über das "+" (unten rechts) erstellter Wegpunkt im Zentrum der anderen Wegpunkte erstellt.

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+16+47+12.png.html

Wegpunkte verschieben

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+16+48+59_001.png.html

Jeder Wegpunkt kann in der Kartenansicht verschoben werden. Dazu wird der zu verschiebende Wegpunkt angetippt, so dass die Wegpunktbezeichnung erscheint.

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+16+49+03_001.png.html

Dann wird der betreffende Wegpunkt erneut angetippt und fest gehalten - Die Stecknadel wird aus der Karte heraus gezogen und ist nun frei verschiebbar.

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+16+49+08_001.png.html Loslassen "befestigt" den Wegpunkt.

Wegpunkte manuell verändern

Durch antippen eines Wegpunktes in der Listenansicht, können die Eigenschaften mauell verändert werden.

http://gallery.mikrokopter.de/main.php/v/tech/Foto+14_08_11+17+17+01.png.html

  • Breite: Breitenkoordinate des Wegpunktes [Dezimal]
  • Länge: Längenkoordinate des Wegpunktes [Dezimal]
  • Typ: gibt an ob die Position ein Wegpunkt oder ein POI ist. (POI erkennbar an Lila Stecknadel)
  • Höhe: gibt die Höhe des Punktes an [Meter]
  • Radius: gibt den Radius an, in dem der WP als "getroffen" gillt. (Bei Angabe einer Höhe ist der Radius als Radius einer Kugel im Raum zu verstehen)
  • Richtung: gibt die Himmelsrichtung an, in die sich der MK ausrichten soll
    • Wert

      Zahlenwert

      Blickrichtung

      "--"

      0

      freie Richtung; bzw. letzte eingenommene Richtung

      1-360

      1-360

      feste Himmelsrichtung

      "POI"

      -1

      zeigt auf den POI

      WP1..WP9

      -2...-x

      zeigt auf einen Wegpunkt

      • Als Blickrichtung verwendet der MK die Kamerarichtung - wenn man ggf. die Kamera verdreht montiert hat (Setting: Camera-direction), gilt das als Blickrichtung.
  • Wartezeit: gibt die Wartezeit auf dem WP an, bevor zum nächsten WP geschaltet wird. [Sekunden]
  • Ereignis: WP-Event

  • Steigrate: gibt die Steig/ Sinkrate an, um die eingestellte Höhe des WP zu erreichen. WICHTIG: Dafür muss der Höhenregler eingeschaltet und auf "Vario-Höhe" stehen! [0,1M/s)
  • Kamera Nick Steuerung: Schaltet die Kamera-Nick-Steuerung für POI ein oder aus.


KategorieProjekte