PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rp6: Probleme mit der seriellen Kommunikation zwischen Rp6 und dem PC über Bluetooth



Morpheus1997
17.06.2012, 11:31
Hey Leute!
Ich habe mir nun auch das Btm-222-Modul zugelegt, zudem habe ich eine Fernsteuerung für den Rp6 über meinen PC in Java geschrieben. Nun möchte ich das Programm über Bluetooth laufen lassen. Allerdings habe ich ein Problem festgestellt: Die Kommunikation zwischen Rp6 und meinem Pc über Bluetooth funktioniert zwar, aber scheinbar ist die Baudrate von dem Rp6 und dem Bluetooth-Modul unterschiedlich. Ich habe zwar schon versucht, einfach im Main-Programm für den Roboter die Baudrate neu zu definieren, allerdings hat dies nicht funktioniert. Auch, wenn ich mit dem Rp6 über HTerm kommunizieren möchte, erhalte ich nur "Hyroglyphen", wenn man es in Dezimalzahlen umwandelt 252 und 028 obwohl ich eigentlich das Wort "Poch" erhalten sollte. Auch das verändern der Baudrate in HTerm hat nichts gebracht. Ps: wenn ich den Rp6 mit dem Usb-Interface verbinde und dann den Rp6 - Loader starte, erhalte ich das gewünschte Wort "Poch". Vielleicht wisst ihr ja eine akzeptable Lösung. Wenn ihr nähere Informationen braucht, lasst es mich wissen. Lg Marcel

fabqu
17.06.2012, 11:52
Hi, stelle doch das btm222 um. google mal AT-Befehle, das geht recht einfach mit jedem Terminal.
ich glaube, Standard ist die Baudrate im RP6 bei 38400, beim BTM irgendwas mit 9000, oder?
Grüße

chrisd
17.06.2012, 12:04
genau wie Fabqu schon geschrieben hat du musst die Baudrate des BTM222 Moduls umstellen die AT Befehle findest du auf Seite 5 im Datenblatt mit +++ kommst du in den CMD Mode.
http://www.taiwantrade.com.tw/resources/member/276716/productcatalog/b9ee22e4-e94a-45cd-8db0-ac88b3a11a75_BTM222%20DataSheet.pdf

Gruß Chris

robo_tom_24
17.06.2012, 12:10
Hallo
Ich hatte das selbe Problem!

1) Hast du deinen Quarz richtig definiert? also 16000000UL bzw (unsigned long)16000000
2) Nimm bitte ein "richtiges" Terminalprogramm: RealTerm, mit HTerm hab ich schlechte Erfahrungen gemacht
3) Hast du den ser. Port richtig konfiguriert?

Lade vielleicht dein Programm bitte hoch, oder mach einen Screenshot vom Terminalprogramm ;)

PS: Mein BTM222 läuft immer noch auf den Originaleinstellungen -> siehe Blog ;)

fabqu
17.06.2012, 12:21
Stimmt, mit hterm hatte ich auch meine Probleme...
aber dennoch sollte es auch damit klappen ;)

Morpheus1997
22.06.2012, 16:44
hm.. leider ist nun immer noch kein Erfolg in Sicht, hinsichtlich meines Problems. Hat vielleicht noch jemand eine Idee, wie ich mein Problem lösen kann?
Lg Marcel

robo_tom_24
22.06.2012, 17:28
Wie gesagt, lade bitte dein Programm hoch und mach einen Screenshot von den Terminal Einstellungen...

Max Web
22.06.2012, 19:40
Wenn Du nur seltsame Zeichen erhältst ist das mit großer Wahrscheinlichkeit eine falsche Baudrate-Einstellung im BTM222.

Schließe das BTM222 doch mal direkt (natürlich richtig ;) ) an den PC an - da Du einen RP6 besitzt kannst Du das z.B. auch mit dem USB-Modul des RP6 machen:
Einfach die 5V Stromversorgung vom RP6 beziehen, die Massen des RP6 und des USB-Moduls verbinden und den RX-Pin des BTM222 mit dem TX des Moduls verbinden, TX des BTM222 dann natürlich auf den RX des Moduls.
Dann startest Du das Terminalprogramm Deiner Wahl (ich bevorzuge HTerm) und verbindest Dich mit dem USB-Modul des RP6.
Jetzt kannst Du die AT Commands an das Modul senden - eine Übersicht wurde weiter oben schon gepostet, ansonsten hier: http://robotrack.org/BTM222/BTM-indexD09.htm
Um die Einstellungen des Moduls abzufragen musst Du den Befehl ATI1 an das Modul senden, eventuell musst Du etwas Zeit zwischen den einzelnen Buchstaben lassen, hier kann die "ASend"-Funktion helfen (rechts neben dem Texteingabefeld).
Eventuell musst Du auch ein "\r\n" am Ende senden, es ist schon eine Weile her seitdem ich das gemacht habe ;)
Anschließend sollte das Modul seine Einstellungen auf die Konsole schreiben. Besonders die Ausgabe ATL=Wasauchimmer ist hier interessant, das sagt aus, welche Baudrate eingestellt ist. Wenn Du 38400 verwendest sollte dort ATL=3 stehen.
Alternativ kannst Du auch einfach den Log hier posten.

Hoffentlich hilft Dir das, bei mir hat es damals funktioniert.

Edit: Natürlich kannst Du bei falscher Verkabelung Kurzschlüsse erzeugen... Dafür übernehme ich natürlich keine Verantwortung.

Max

Morpheus1997
23.06.2012, 18:11
Hey, Leute.
@Max Web: Ich hatte heute Zeit und habe deine Methode einmal ausprobiert, allerdings erfolgslos. Wenn ich einen Befehl sende, kommt bei dem Modul kein Befehl an ( siehe angehängtes Foto).
Falls es jemandem etwas bringt, hab ich nun das Rp6-Programm auch noch angehängt ( die für die Kommunikation wichtigen Sachen stehen in Library / Rp6Control/PC-Connection.c)
edit: Vom Vorbesitzer des Btm-222 hab ich heute noch erfahren, dass er vor ca. einem Jahr die Baudrate schon einmal verändert hätte, er wüsste jedoch weder ob er sie wieder zurück verändert hat, noch in welche Baudrate er sie verändert hat, noch wie er es gemacht hat :-/
Liebe Grüße Marcel
22637

robo_tom_24
24.06.2012, 11:45
Hallo
Hat das BTM222 vielleicht einen Hardware-Reset?
Also wirklich auf Werkseinstellungen zurücksetzen...
Per AT Befehl gehts...

Mir fällt grad was ein:
Es gibt am Modul einen Pin für eine Status LED, die leuchtet auf wenn was empfangen wird. häng dort mal eine Led dazu uns sende Daten per BT ans Modul...
Ergebnis: Wenns leuchtet funktioniert das Modul und es liegt somit an der Software, wenn nicht hast du ein Hardwareproblem ;)

Max Web
27.06.2012, 19:38
Da fällt mir noch etwas ein, wie Du die Baudrate rauskriegen kannst:
Schließe das BTM222 wie in meinem obigen Beitrag beschrieben an das USB-Interface des RP6 an und nimm das Terminalprogramm Deiner Wahl, um Dich mit dem USB-Interface zu verbinden.
(1) Einstellen einer Baudrate in der ersten Instanz des Terminalprogramms (die mit dem USB-Interface verbunden ist)
(2) Dann verbindest Du Dich mit einer zweiten Instanz des Terminalprogramms per Bluetooth mit dem BTM222.
(3) Wenn Du die Baudrate in der ersten Instanz des Terminals richtig eingestellt hast wirst Du dort beim Verbinden/Trennen der Verbindung den Text
"CONNECT..." bzw. "DISCONNECT" lesen können. Wenn nichts oder eine wirre Zeichenfolge ankommt musst mit der nächsten Baudrate wieder bei (1) anfangen.

Das machst Du so lange bis die Verbindungsnachricht richtig ankommt - und schon hast Du die eingestellte Baudrate.

Grüße,

Max

Morpheus1997
27.06.2012, 20:12
@Max Web:
Ich bin mir nicht sicher, ob es generell bei HTerm so ist, aber wenn du diese Statusmeldung unten rechts bei HTerm meinst ( siehe snapshot), die steht da scheinbar auch, wenn sich Hterm eigentlich gar nicht verbinden kann, weil gar nix angeschlossen ist, ganz zu schweigen von der baudrate.
@ robo_tom_24 (https://www.roboternetz.de/community/members/53900-robo_tom_24) Wie du dir das mit der Status-Led vorstellst hab ich noch nicht ganz verstanden. Also das Btm-222 Modul hab ich als fertiges Modul bekommen, das auch schon in der Fabrik komplett verlötet wurde. Darauf ist eine blaue Status Led, die im Normalzustand blinkt, jedoch nicht mehr blinkt wenn er sich verbinden konnte. Meinst du zufällig die?
LG

Max Web
27.06.2012, 20:26
Hallo,

nein, ich meine nicht diese Statusmeldung - das BTM222 sollte bei einer Änderung der Verbindung den Statuscode "CONNECT 'BT-ADDRESSE'" bzw. DISCONNECT senden. Das sollte dann im Empfangsfenster des Terminalprogramms stehen (also in dem Fenster, mit dem Du die Verbindung zum RP6 USB-Interface hergestellt hast). Versuche auch mal, RX und TX zu tauschen, die verbindet man schnell mal falsch herum... Und ganz wichtig: Die Massen des BTM und des USB-Interfaces müssen verbunden sein!

Zu den Status-LEDs: Manche Boards haben zwei Status-LEDs, eine für den Verbindungsstatus (die blaue LED bei Dir) und noch eine weitere, die genau dann blinkt, wenn etwas gesendet/empfangen wird.
Scheinbar ist diese auf Deinem Board nicht vorhanden.

Max

robo_tom_24
28.06.2012, 15:31
Jap...
Also bei mir ist eine LED oben, die blinkt wenn nicht verbunden ist, leuchtet dunkel wenn verbunden und hell wenn gesendet/empfangen wird...
Gelöst wahrscheinlich über einen OpenCollector Ausgang...

Was hast du für ein Board?

Nachtrag:
Bei meinem Board hängt die LED an PIO5 und PIO7, die sind zusammengeschaltet auf eine LED (Schaltplan (http://www.bluecontroller.com/index.php?cid=~cms~site~hardware~BCA8-BTM~sche))