PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboter Kommunikation - Design Fragen (mit XBee oder I²C Bluetooth Alternative)



skg-rob
25.09.2011, 13:45
Hallo liebe Leute,

Für meine Fußball Roboter möchte ich eine Funklösung einbauen, um verschiedene Aufgaben sinnvoll zu verteilen (R1 hat den Ball, dann soll R2 nicht dem Ball hinterherfahren wie er es mit einem herkömmlichen Design ohne Funk machen würde sondern im Tor warten und nur dann aktiv werden, wenn R1 den Ball wieder verloren hat, etc.).

Ich habe jetzt mal die XBees ins Auge gefasst, da die eigentlich weit verbreitet sind. Einige Dinge sind mir aber noch nicht klar:
a) Können die XBees Serie 1 auch konfiguriert werden wie sie es bei Serie 2 gemacht werden müssen? Oder rennen die nur out of the box?
b) Wie wird sichergestellt, dass R1 nur von R2 Daten empfängt und nicht von einem dritten Roboter? Werden dazu "IDs" bzw. Namen vergeben oder läuft das nur über den gewählten Frequenzkanal (da sind ja 16 wählbar). Das bringt mich gleich zu:
c) Können simple Konfigurationen wie Frequenzkanal wechseln auch vom MCU (in diesem Fall ein ARM Cortex M3) gewechselt werden oder muss die Konfiguration zwingend über den PC laufen?
d) In einigen Beiträgen habe ich gelesen, dass die Daten alle x ms übertragen werden. Kann dies nur so laufen? Ich bin mir nicht sicher ob ein ständiges updaten der Umgebungswerte sinnvoll wäre oder nur bei Bedarf die Daten an den entscheidenden CPU zu senden und auf die Antwort zu warten bzw. vom verarbeitenden CPU einen Befehl empfangen falls er veränderte Umstände feststellt (also in etwa Master und Slave Betrieb).

Wenn ihr alternative Vorschläge habt wie ich mein Problem lösen könnte, gerne raus damit. Am einfachsten fände ich ein Bluetoothmodul Class 2 (steht so in den Regeln, bezieht sich aber denke ich eher auf das Frequenzband als auf die Technologie) der einfach eine I²C Leitung darstellt, sodass ich das Modul nur an den Strom anschließe und sonst nichts mehr mache. Kennt jemand so etwas?

Falls ich etwas unverständlich formuliert habe, bitte sagen, kommt leider öfters vor ;)


Vielen Dank und mit freundlichen Grüßen skg-rob

Richard
25.09.2011, 14:39
http://plischka.at/Funk_XBEE.html

Gruß Richard

Chypsylon
25.09.2011, 16:00
Bei den meisten anderen Teams habe ich die bluetoothmodule btm122 bzw. 222 gesehen. Die kann man einfach als Kabelersaz fuer den Uart konfigurieren (also so als ob sie ueber die serielle schnittstelle mit kabeln verbunden werden). Preislich sind die auch ganz in Ordnung, kosten so um die 10 euro...

Es gibt auch noch andere varianten zb mit usb oder i2c

skg-rob
25.09.2011, 16:36
Hallo Richard,
Vielen Dank, die Seite kannte ich schon. Auch wenn es so scheinen mag, dass ich zu faul bin zum Datenblätter studieren bzw. Literatur aneignen, so ist dem nicht so. Hätte ich entsprechendes zu meinen Fragen gefunden, würde ich nicht fragen.

Hallo Chypylon,
Kennt man sich? Von welchem Team bist?
Edit: Das Bluetoothmodul ist Class 1. Hat es da Probleme mit den Regularien bei euch gegeben?

Frage a) hat sich mittlerweile erledigt, Series 1 können auch konfiguriert werden. Frage b) hat sich auch erübrigt. Der Rest ist mir noch nicht klar.


Mit freundlichen Grüßen skg-rob

Valen
25.09.2011, 16:55
Hallo liebe Leute,

Für meine Fußball Roboter möchte ich eine Funklösung einbauen, um verschiedene Aufgaben sinnvoll zu verteilen (R1 hat den Ball, dann soll R2 nicht dem Ball hinterherfahren wie er es mit einem herkömmlichen Design ohne Funk machen würde sondern im Tor warten und nur dann aktiv werden, wenn R1 den Ball wieder verloren hat, etc.).

Ich habe jetzt mal die XBees ins Auge gefasst, da die eigentlich weit verbreitet sind. Einige Dinge sind mir aber noch nicht klar:
a) Können die XBees Serie 1 auch konfiguriert werden wie sie es bei Serie 2 gemacht werden müssen? Oder rennen die nur out of the box?Sicher! Sende +++ zum XBee, und dan warte biss er OK<cr> zuruck sendet. Dann ist er im Command-modus und kannst du der AT-Commandos verwenden. Mit ATCN geht es wieder aus den Command-modus. Im API-modus kann mann eben ein andere XBee uber Funk configurieren.

b) Wie wird sichergestellt, dass R1 nur von R2 Daten empfängt und nicht von einem dritten Roboter? Werden dazu "IDs" bzw. Namen vergeben oder läuft das nur über den gewählten Frequenzkanal (da sind ja 16 wählbar). Das bringt mich gleich zu:Außer den Frequenzkanal die man konfigurieren kann, gibt es auch noch PAN-IDs. Wann XBees nicht auf das gleiche Kanal und PAN-ID eingestellt sind werden sie einander nicht erreichen können. Das ist aber nicht ein Geheimnis. Die XBees können einander suchen mit das ATND Kommando, und dan 'abstimmen' auf das Kanal und PAN-ID. Damit eine bestimmte gruppe von XBees vertraulich kommunizieren können sie die Daten verschlüsseln mit dat ATKY Kommando. (128bit AES) Alle Funk-paketen die empfangen werden und nicht sinnvoll dekodiert werden können, werden ignoriert.

c) Können simple Konfigurationen wie Frequenzkanal wechseln auch vom MCU (in diesem Fall ein ARM Cortex M3) gewechselt werden oder muss die Konfiguration zwingend über den PC laufen?Einstellen von den XBee geht über UART Kommunikation. Deshalb macht es nichts aus was diese Einstellungen sendet. Das MCU Programm sollte aber intelligent genug sein die XBee antworten zu verstehen.


d) In einigen Beiträgen habe ich gelesen, dass die Daten alle x ms übertragen werden. Kann dies nur so laufen? Ich bin mir nicht sicher ob ein ständiges updaten der Umgebungswerte sinnvoll wäre oder nur bei Bedarf die Daten an den entscheidenden CPU zu senden und auf die Antwort zu warten bzw. vom verarbeitenden CPU einen Befehl empfangen falls er veränderte Umstände feststellt (also in etwa Master und Slave Betrieb).Ich bin nicht sicher ob du den Digitale/Analoge Messungen von den Pins meinst, oder den Kommunikation über UART. Beiden arten von Daten werden gesammelt bis sie versendet werden. Zeichen reinkommend am UART-stelle werden mit Standard Einstellung (ATRO) gesammelt bis es in einer Zeitperiode von 3 Zeichen nichts bekommen hat. Das kann man aber auf 0 einstellen womit die Daten gleich über Funk gesendet werden. Auch gemessen Digitale/Analoge Werten an dem Pins können gesammelt werden, bis sie gesamt über funkt versendet werden. (ATIT)

(Verzeihung, vergessen: ) Wichtig ist das du die Anleitung gut durchgelesen habst:

http://ftp1.digi.com/support/documentation/90000982_D.pdf

Chypsylon
25.09.2011, 17:04
Hallo Chypylon,
Kennt man sich? Von welchem Team bist?
Edit: Das Bluetoothmodul ist Class 1. Hat es da Probleme mit den Regularien bei euch gegeben?


Ich bin bei den Androids aber ich glaube wir kennen uns nur vom sehen her (in singapur und istanbul).

Wir haben die Module bis jetzt noch nicht verwendet aber das btm112 hat class 2, was ja in den Regeln ausdrücklich erlaubt ist. Eine Übersicht über die ganzen Module gibts übrigens hier (http://www.tme.eu/html/DE/bluetooth-class-1-und-class-2-module/ramka_4074_DE_pelny.html)

skg-rob
25.09.2011, 17:22
Hallo Valen,
Vielen Dank! Das hat mir über so manches Aufschluss gegeben. Ich hätte jetz nur noch eine kleine Frage: Wenn ich von R1 an R2 was senden will, kann ich dann meine Daten einfach über das übliche UART Kommando senden oder muss ich dazu den XBee vorher ansprechen? Bekomme ich sozusagen etwas mit von den Funkmodulen?
Dann noch zu UART: Ich bin dann auf 9 bit beschränkt? Das wird ganz schön schwierig wenn ich alle Daten in ein Sendekommando packen will :/ Wie kann ich dann eigentlich Werte über 512 übertragen? Oder habe ich da etwas falsch verstanden?

Hallo Chypsylon,
Vielen Dank für die Liste. (Btw. ich wollte dich auf Twitter endlich mal adden aber ich kann gerade keine requests akzeptieren).


Mit freundlichen Grüßen skg-rob

Valen
25.09.2011, 20:56
Hallo Valen,
Vielen Dank! Das hat mir über so manches Aufschluss gegeben. Ich hätte jetz nur noch eine kleine Frage: Wenn ich von R1 an R2 was senden will, kann ich dann meine Daten einfach über das übliche UART Kommando senden oder muss ich dazu den XBee vorher ansprechen? Bekomme ich sozusagen etwas mit von den Funkmodulen?Es gibt 2 arten von Daten-übertrage. Die sogenannte 'Transparante Modus', und die API Modus. Bei die erste gehen die UART-daten gleich von UART-Eingang zum Funkstelle, oder von Funkstelle zu UART-ausgang. (oder bleiben solange im Daten-puffer bis der Funkstelle wieder bereit ist, weil nicht gleichzeitig senden und empfangen kann) Dazu muss R1 ERST in seinen DL und DH register die Adresse von R2 eingestellt haben. Dass muss er im Command-modus tun. Wieder zuruck im Transparante Modus kann er senden so lange als er möchtest. Den Daten-puffer ist aber nicht so riesig und du sollst es nicht voll laufen lassen sonnst gehen die Daten verloren. R2 wird kein Ahnung haben ob die Daten von R1 kommen, oder vielleicht von R3, R4 usw.

Bei die API Modus werden alle Kommandos und Daten zwischen MCU/PC und XBee in API Paketen erfasst. Das Kopf-teil enthält Start-byte, Paket-lange, Paket-art, Paket-ID, gefolgt durch Kommando Art und Kommando Parameter/Data. Es endet mit ein Checksumme zur Fehlererkennung. Auch den XBee sendet sein Status zurück als API Paketen. Diese enthält dann auch die Adresse von den XBee das die Daten gesendet hat. Also kann man die Daten von mehrere Robotern auseinander halten. Kostet aber etwas mehr Programm-aufwand.


Dann noch zu UART: Ich bin dann auf 9 Bit beschränkt? Das wird ganz schön schwierig wenn ich alle Daten in ein Sendekommando packen will :/ Wie kann ich dann eigentlich Werte über 512 übertragen? Oder habe ich da etwas falsch verstanden?Wieso 9 bit? Alle UART Daten sind 8 Bit groß. Dein 9-te Bit ist vielleicht das Parität bit oder ein extra Stop-bit. Das ist aber nicht notwendig, kann jedenfalls kein Daten-bit enthalten, und ist nur zur Bit-fehler Erkennung und (2te Stopbit zur) Baudtakt-fehler Ausgleichung. Werten großer als 255 (also mehr als 8 bit lang) muss du aufteilen in Bytes in dein Programm, und dann wieder zusammen rechnen in den andere Robotern. Das geht so bei fast alle Kommunikationsarten die auf Bytes orientiert sind. I2C ebenso.

skg-rob
26.09.2011, 06:43
Hallo Valen,
Vielen Dank, sehr anschaulich erklärt! Leider bin ich was Protokolle angeht zu verwöhnt, I²C macht mein Board automatisch, ich habe da noch nie viel tiefer programmiert als was ich dann im täglichen Gebrauch nutze.

Nach dem was ich gelesen habe, wird für mich Series 1 ausreichend sein und der Transparente Modus dürfte auch ausreichend sein, da ich nur zwei Roboter habe.

Vielen Dank für die Hilfe! Mit freundlichen Grüßen skg-rob

Richard
26.09.2011, 15:03
b) Wie wird sichergestellt, dass R1 nur von R2 Daten empfängt und nicht von einem dritten Roboter? Werden dazu "IDs" bzw. Namen vergeben oder läuft das nur über den gewählten Frequenzkanal (da sind ja 16 wählbar). Das bringt mich gleich zu:
c) Können simple Konfigurationen wie Frequenzkanal wechseln auch vom MCU (in diesem Fall ein ARM Cortex M3) gewechselt werden oder muss die Konfiguration zwingend über den PC laufen?


b.) Das steht doch in den Link den ich Dir gesendet habe, Es wird eine ID vergeben (Standart 123), die muss natürlich für jeden "Mitspieler" unterschiedlich sein damit sie sich unterscheiden können.

C.) Über die rs232 Schnittstelle der M3 sollte das auf alle Fälle möglich sein wobei allerdings dann kein Funkbetrieb gleichzeitig möglich ist. Per Funk "sollte" das mittels AT Befehl +++ ( umschalten in den Kommando Modus) > AT (gewünschter Befehl) > +++ (Komand Modus aus) auch klappen bin mir dabei aber nicht wirklich sicher. Auch der Sender der dieses sendet muss danach ja selber auf die neue Frequenz gesetzt werden.....

Gruß Richard