Kommunikation

Kommunikation

Obwohl das IPS selbst mit NRF24 Funkmodulen ausgestattet ist beschloss das Team die Kommunikation der Gondel und deren Sensoren (IMU) über Xbee-Module zu verwirklichen. So funktioniert einerseits die Kommunikation mit dem Navigationssystem, d.h. das Erhalten der verschiedenen Ultraschalllaufzeiten der Bodenstationen, über die NRF24 Funkmodule und andererseits das vermitteln der am Rechner errechneten Kurswinkel und Reglervorgaben mit dem XBee (vgl. "Gemeinsames IPS" -Überblick- Bild2)  Mit einer Reichweite in Räumen von 40m und einem geringen Stromfluss an RX und TX von 40 mA @3,3Volt und Leistungsverbrauch von 1mW sind die XBee's für die Zwecke des Praktikums geeignet. Das XBee PRO im Vergleich, hätte eine Reichweite von bis zu einer Meile, aber dementsprechend auch einen erheblich höheren Stromverbrauch von bis zu 300mA an RX/TX und 60mW Leistungsverbrauch.

Hilfreich um erste Erfahrungen zu sammeln waren das von daedalus zur Verfügung gestellte XBee – Arduino Shield von Sparkfun und der XBee-USBExplorer. Um zwei Module kommunikationsfähig zu machen muss man diese vorher konfigurieren. Gleiche ID, Baudrate und Kanal werden vorausgesetzt. Die Standardeinstellung ist:

  • ID:3332

  • CH: 0x0C

  • MY: 0

  • DL: 0

  • baud rate: 9600

  • data bits: 8

  • parity: None

  • stop bits: 1

  • hardware flow control: None

Für unsere beiden Xbee Module gelten folgende Einstellungen:

  • ID: 800

  • CH: 0x0C

  • MY: 4/3

  • DL: 3/4

  • baud rate: 9600

  • data bits: 8

  • parity: None

  • stop bits: 1

  • hardware flow control: None

Um diese zu ändern kann man dies unter Windows mit X-CTU machen  oder unter Mac mit Coolterm. Das Team verwendete unter Linux das Pythonskript „xbee-configure.py“ das man wie folgt verwendet:

1. Ports und Baudrates im Code festlegen !

2. In der main #cfg.configure( **settings ) auskommentieren und vorher settings festsetzen zum konfigurieren

3.Bei saving changes... bleibt Programm stehen hat aber schon Einstellungen geändert. Über Steuerung+C abbrechen.

4.Zum erneuten aufrufen der print.config oder zum festlegen neuer Einstellungen die evtl. geänderte Baudrate verändern!

Bei den Tests mit den Modulen fiel auf, dass die Einstellung der Baudraten mit Vorsicht vorzunehmen ist. Bei Tests bei denen das Serial mit der höchsten Baudrate von 115200 arbeitet, kam es zu fehlerhaften Übertragungen. Aus diesem Grund wurde vorerst mit der Baudrate von 9600 weiter gearbeitet, die fehlerfreie Übertragung lieferte.

Als erstes fand das Xbee Verwendung bei der Übertragung der Regelparameter und zum Starten und Stoppen der Regelung per Funk. Dazu wurden ein Xbee_Base.ino Arduinoprogramm geschrieben, welches das Senden von Befehle an den Zeppelin mit Hilfe des SerialMonitor der Arduino IDE ermöglicht. Der Xbee_Base.ino Code ist aber nur nötig, wenn man mit dem Arduinoshield arbeitet.  Einsparung von zu übertragenden Bytes wurde erreicht indem die Datentypen nicht als Zahlen im ASCII-Format übertragen wurden sondern als Byte. Zum Beispiel für die Zahl -1.234235 statt neun Byte Charzeichen nur vier Byte und für die verwendeten Int16_t-Werte 2 Byte. Eine einfachere Möglichkeit bietet die Verwendung des XBee USB-Explorers. Hier kann man wiederum über den Serialmonitor des Arduino Programms Befehle senden solange der Port des XBee-Explorers ausgewählt wurde.

Auf der anderen Seite wurde der Regler/IMU-Sensor Code IMU-Control#.ino um Funktionen zum Empfangen der Daten und dem Übernehmen der Daten erweitert. (siehe Gondel Software)