PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Beispielcode für die Datenübertragung mittels XBee-Modul beim Nibo2



RoboFreak++
22.04.2011, 17:38
Hi!

Ich bin gerade echt am verzweifeln: Ich versuche seit 2 Tagen schon eine Übertragung zwischen dem XBee-Modul an meinem Nibo und dem PC herzustellen.
Ich möchte dafür die XBee Lib nutzen welche ja extra hierfür zur Verfügung steht.
Nur leider ist die Dokumentation hierbei seeeeehr dürftig...
(Schlichtweg nicht vorhanden :mad: ......)

Ich habe weder Beispielcode noch sonstiges gefunden.
Was bis jetzt zu funktionieren scheint, sind die Befehle "xbee_enable()" und "xbee_setbaudrate()".

Und weiter weiss ich einfach nicht.
In der "Doku" ist der Befehl "xbee_tx_start ( uint8_t size )" (welcher anscheinend zum Senden von Daten dient) ausgewiesen.
NUR: Welche Daten denn?? Wo sollen die stehen bzw. wo muss ich die reinschreiben?

Der .c-Code zur Header ist mir leider keine Hilfe, da kein(!) einziger aufschlussreicher Kommentar zu oben beschriebnen Funktionen existiert....

Zu den 2 XBee Modulen: Diese finden sich problemlos und auch das Senden an sich scheitn zu funktionieren. Ich bekomme aber lediglich Datenmüll der Form "~............." im Terminal von X-CTU zu sehen.

Für Antworten und Hilfestellungen wäre ich sehr dankbar.

MfG

RoboFreak++
22.04.2011, 19:39
Hi!

Also ich bin jetzt ein klitzkleines Stückchen weiter gekommen:

Beim Durchstöbern dieses Forums, bin ic hauf den Ordner "demo2" aufmerksam geworden und hab mir die "main.c" mal angeschaut.
Darin gibt es folgenden Ablauf beim Senden per XBee:

xbee_set_baudrate(38400);
xbee_enable();
.
.
.
xbee_tx_address = 0xffff;

xbee_tx_buf[0] = 1; // type

// position
xbee_tx_buf[1] = HIBYTE(pos_x);
xbee_tx_buf[2] = LOBYTE(pos_x);
xbee_tx_buf[3] = HIBYTE(pos_y);
xbee_tx_buf[4] = LOBYTE(pos_y);

xbee_tx_start(5);

(Vereinfacht!!)

Ich habe dieses Beispiel benutzt um einen einzigen Buchstaben (nämlich 'E') zu verschicken und zwar durch:

xbee_tx_address = 0xffff;
xbee_tx_buf[0] = 0x45;
xbee_tx_start(1);

Das 'E' kommt auch tatsächlich an ABER: mit dabei sind wieder viele komische Zeichen wie z.B.: "~.......E." hier wundert mich einmal, dass das 'E' überhaupt von anderen Zeichen umgeben ist, und andereseits auch noch die völlig untypische Anzahl von 10 Zeichen.
Wenn man das ganze so ca. 30 Sekunden laufen lässt, scheint das ganze irgendein Byte sogar noch hochzuzählen. Es passiert nämlich folgendes:
~...!...E.
~..."...E.
~...#...E.
~...$...E.
~...%...E.
~...&...E.
~...'...E.
~...(...E.
~...)...E.
~...*...E.
~...+...E.
~...,...E.
~...-...E.
~.......E.
~.../...E.
~...0...E.
~...1...E.
~...2...E.
~...3...E.
~...4...E.

Es wird anscheinend die Ascii Tabelle abgelaufen....
Keine Ahnung warum, weil die Adresse jedesmal aufs neue dirket vorm Senden auf "0xffff" gesetzt wird.

Kann mir nun vielleicht jemand sagen, was ich da noch alles falsch gemacht habe, bei meinem Versuch?

MfG

RoboFreak++
22.04.2011, 23:11
Sooo, ich bin der Lösung auf die Spur gekommen:

Diese Bytes die den Buchstaben 'E' umgeben sind (wenn man das ganze auf "Hex" umstellt) Rahmendaten, welche das XBee-Modul automatisch mitsendet.
Also Infos wie "Start delimiter", "Option byte", die eigentlichen Daten die man übertragen möchte und zum Schluss eine Checksum.

MfG

TobiKa
22.04.2011, 23:28
Wenn man so ein Muster sieht, immer das gleiche Zeichen am Anfang, immer die selbe Länge, das mitlere Zeichen fortlaufend, ... dann kann es auch eigentlich nur gewollt sein.

Achim S.
23.04.2011, 09:32
Hallo
Ich kenne da jemand der mit Xbee und Nibo 2 arbeitet und es geht ....
Achim

Hero_123
23.04.2011, 20:36
Hi Robofreak

mein NIBO2 kommuniziert auch mit XBEE Modulen mit meinem PC, habe mein XBEE Modul aber am Stecker X6 angeschlossen (habe für den X6 mir so ein Ding von watterott gekauft und dann den X6 entsprechend benutzt) und mir selbst Sende/Empfangsroutinen für den UART1 geschrieben (da der NIBO2 am Stecker X6 auch die UART1 -Schnittstelle zur Verfügung stellt.)

Nehme an, Du hast das Ding von nicai, oder?

Die Doku der XBEE-Lib ist sehr dürftig, sie unterstützt z.B den UART1 nicht korrekt (habe mir dann diese XBEE umgeschrieben), arbeite aber trotzdem weiter mit dem von mir selbst gestrickten Sende/Empfangsroutinen.

Hero_123

sourcecode
06.11.2011, 12:43
Hallo.

Wie der Thread-Ersteller habe auch ich Probleme mit dem Nibo2 per XBee
mit dem PC zu kommunizieren. Im Sommer habe ich damit bereits schon
einmal rumgespielt und getestet. Da funktionierte es und ich konnte
über Funk mit dem Nibo einige Zeichen an den PC senden. Jetzt kriege
ich es einfach seit ein paar Tagen nicht mehr hin.

Ich habe und hatte es damals mit folgendem Code versucht:

#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <nibo/copro.h>
#include <nibo/delay.h>
#include <nibo/iodefs.h>
#include <nibo/bot.h>
#include <avr/interrupt.h>
#include <nibo/i2cmaster.h>
#include <nibo/spi.h>
#include <stdio.h>
#include <nibo/leds.h>
#include <nibo/pwm.h>
#include <nibo/xbee.h>

int a = 0x4E;

void transmit(){
xbee_tx_address = 0x3fff;
xbee_tx_buf[0] = a;
xbee_tx_start(1);
}

int main(){
sei();
bot_init();
display_init();
gfx_init();
pwm_init();

xbee_enable();
xbee_set_baudrate(38400);

while(1){
if (xbee_tx_idle()){
transmit();
}
delay(10);
}
}

Die Kommunikation beider XBee Module untereinander funktioniert. Also Arduino-XBee-Shield -> USB-XBee-Explorer.
An der Konfiguration beider Module dürfte es also nicht liegen. Unter X-CTU kann ich mit beiden Modulen _chatten_ :-)
Leider weiß ich nicht mehr wirklich weiter. Ich bin mir auch nicht sicher, ob die NXB2-Adapterplatine in Ordnung ist.
Beim Einschalten leuchten beide Dioden (grün/gelb). Ich kann auch nicht feststellen, ob versucht wird etwas zu versenden.
Leider kann ich mich auch nicht mehr zurück erinnern, ob beim Senden eine Diode geblinkt hat, als es mal funktionierte.

Für jede Hilfe und jeden Denkanstoß wäre ich dankbar :-)

Gruß
sourcecode

sourcecode
28.11.2011, 12:43
Hallo.

Irgendwie verzweifel ich noch immer und ich weiß einfach nicht, wo der Wurm drin ist.
Hat keiner Erfahrungen mit dem Nibo2 und der NXB2 Erweiterungsplatine ?.
Mich würde es gar nicht so sehr wurmen, wenn ich nicht wüßte, daß ich es vor
ein paar Monaten schon mal zum Laufen gebracht habe :-(
Leider kann ich auch dazu nicht wirklich weitere Infos dazu finden. Unter Wiki ist die
NXB2 zwar aufgeführt, aber bis Dato gibt es dazu noch keinen Text. Mir als unerfahrener
Elektroniker ist auch nicht ganz klar, wofür die beiden Jumper nützlich sind.
Die beiden LEDs sind wohl einmal eine Status LED (grün) und eine LED für Übertragung (gelb).
Als Beispielcode dazu finde ich leider auch nur die Schnipsel aus der main.c des demo2 Beispiels.
Leider gibt es auch noch keine Dokus für die ganzen Erweiterungsplatinen, die Nicai herausgebracht
hat. Irgendwie schade. Vielleicht sollte man sich dort mal angewöhnen die Dinge, die man auf den
Markt bringt mit einer vernünftigen Dokumentation und Beispielen auszuliefern. Ansonsten heißt
es wohl nur abwarten und hoffen, daß sich im Laufe der Zeit diesbezüglich etwas tut.

Falls also jemand Erfahrungen mit der NXB2 gemacht hat und mir auf die Sprünge helfen könnte,
möge sich bitte melden :-)

Vielen Dank und liebe Grüße

sourcecode

Achim S.
28.11.2011, 19:14
Hallo
Es gibt Leute die sich damit auskennen und hier mitlesen. Musst nur die richtigen fragen ...
Achim

sourcecode
28.11.2011, 22:11
Hallo Achim.

Danke für Deine Antwort. Ich habe immer gedacht der Zweck eines Forums wäre die Allgemeinheit zu fragen und das Leute die sich
mit den jeweiligen Sachverhalten auskennen, sich dann dazu eventuell melden und äußern, oder muß man nun die Leute persönlich
fragen und ansprechen ?. Wenn mir keiner antworten möchte oder kann, kann ich das durchaus verstehen, aber warum man nun Leute erst persönlich
ansprechen muß ist mir leider etwas schleierhaft :-(
Aber gut - Dinge ändern sich ;-)

Lieben Gruß
sourcecode

Achim S.
29.11.2011, 18:02
Hallo sourcecode
Ich hatte dir bereits früher geantwortet. Steht auch noch ein anderer drin. Egal, ein Forum will und soll helfen. Leider sieht es mit den Antworten manchmal schlecht aus. Ich weiss, das noch mehr Freunde vom Nibo hier im Netz sind.
Was hast du den bisher gemacht? Welche Beispiel nimmst du? Hast du dir schon mal die Schaltung vom NDS3 angesehen?
Ich habe selber das Modul. Zu Anfang hatte ich richtig Probleme damit. Wenn es läuft ist die Anzeige richtig toll.
Achim

sourcecode
29.11.2011, 22:44
Hallo Achim und alle anderen :-)

Probleme mit dem NDS3 hatte ich Anfangs auch. Wir hatten diesbezüglich ja auch mal miteinander gemailt. Mittlerweile funktioniert das ganz gut.
Ich bin gerade dabei den Nibo _autonom_ in meinem Wohnzimmer herum fahren zu lassen. Funktioniert eigentlich bisher soweit ganz gut. Mehr
oder weniger :-) Den NDS3 Distanzscanner habe ich dabei auch in Benutzung. Wenn der Nibo sich irgendwo in einer Ecke befindet und nicht mehr
so richtig von allein aus der Ecke kommt, wird ein 180 Grad scan vorgenommen ( 3 Messungen - rechts, mitte, links ). Der Nibo fährt dann in die
entsprechende Richtung, wo ein Hindernis am weitesten entfernt ist. Klappt im Groben eigentlich auch ganz gut.

Mein Problem ist jetzt, daß ich das Ganze nun mit nem XBee erweitern wollte.
Wie ich bereits nun mehrfach erwähnt habe, hat das im Sommer schon mal funktioniert, als ich angefangen habe mich damit zu beschäftigen.
Ich konnte vom Nibo zum PC zumindest Zeichen senden - die auch ankamen :-) Leider konnte ich mich längere Zeit nicht mit dem Nibo beschäftigen.
Dann wollte ich vor einigen Tagen fröhlich drauf los _programmieren_ und mußte feststellen, daß die Kommunikation zwischen Nibo und PC über XBee
irgendwie gar nicht mehr funktioniert. Aus mir bis Dato unerklärlichen Gründen. Den Code hatte ich hier ja bereits gepostet. Alle möglichen Fehlerquellen,
die mir so eingefallen sind, habe ich bereits dutzende Male ausprobiert. Deshalb kam mir der Gedanke, daß die NXB2 Platine vielleicht auch defekt ist, obwohl
ich auch hier nicht wüßte, wodurch das passiert sein könnte, da sie bei meiner letzten Nutzung noch funktioniert hat. Da ich mich mit meinen Versuchen der
Sache irgendwie auf die Schliche zu kommen anscheinend nur im Kreis drehe und man manchmal vor lauter Bäumen den Wald nicht mehr sieht, dachte ich hier mal nach zu fragen, ob jemand eine Idee haben könnte, woran das liegen könnte.
Die Anschlußeinstellungen für den USB Serial Port (XBee-Explorer) sind: 38400,8,keine,1,keine.

Soviel zu der Problematik :-)

Bin für Tipps und Ratschläge noch immer offen - natürlich auch für Fragen :-)

Lieben Gruß
sourcecode

sourcecode
10.12.2011, 16:13
Hallo,

nachdem ich nun nach ein paar Tagen meinem Problem noch immer nicht auf die Schliche gekommen bin,
habe ich mir nun einen zweiten NXB2 Bausatz gegönnt. Zusammen gelötet. Code auf den Nibo übertragen.
Nibo eingeschaltet. Übertragung funktioniert. Also hatte meine alte Platine wohl doch eine Macke.
Bei der neuen Platine blinkt die gelbe LED nach dem Einschalten, auch während des sendens. Die grüne bleibt dunkel.
Bei der wohl defekten Platine leuchten beide LEDs nach dem Einschalten. Anscheinend wurde ein Bauteil in Mitleidenschaft
gezogen. Vielleicht hat mal jemand selbiges Problem und könnte dann vielleicht gleich davon ausgehen , daß irgendetwas
nicht in Ordnung ist, wenn beide LEDs nach dem Einschalten leuchten :-/

Gruß
sourcecode

Achim S.
11.12.2011, 15:35
Hallo
es freut mich sehr, wenn es wieder läuft. Der Fehler ist mir leider unklar. Vielleicht findest du ihn mal. Ansonsten berichte ruhig wie es läuft. Bin immer neugierig.
achim

aguhe
11.02.2012, 13:42
Moin,

ich habe heute meine xbee's und USB-Adapter geliefert bekommen, die ich mittels NXB2 mit dem NIBO2 verbunden habe.

Die Übertragung vom NIBO2 zum PC geht tadellos, aber ich weiss nicht, wie ich die Daten vom PC zum NIBO2 im NIBO2 abholen kann. Die lib von nicai-systems und die "Dokumentation" grenzen - harmlos ausgedrückt - an einer Frechheit. Kann mir jemand helfen? Danke im voraus!

Gruß Andreas

sourcecode
12.02.2012, 21:54
Hallo und Willkommen :-)

Ich habe leider bisher auch erst nur die Übertragung Nibo2 -> PC getestet.
Funktioniert auch tadellos. Die Übertragung PC -> Nibo2 habe ich bisher
noch nicht benötigt, was nicht heißt, daß sie mich nicht interessieren würde.
Die nicai Dokumentation ist untertrieben etwas dürftig. Das haben schon
mehrere, wenn nicht sogar alle Besitzer des Nibo2 bemängelt. Kann Dir bei
diesem Problem leider nicht weiter helfen. Vielleicht einfach mal bei nicai anfragen
und uns das Resultat mitteilen :-)

Gruß
sourcecode

aguhe
12.02.2012, 22:20
Moin sourcecode,

ich habe das ganze Wochenende 'rumgebastelt und jetzt geht's! Habe Datenverkehr zwischen PC <-> und NIBO2 hingekriegt. Jedoch nicht mit dem Schrott von nicai. Nimm (ganz einfach) UART0.c und bastele dir die Sende- und Empfangsmodule in dein main-modul hinein. xbee.h NICHT einbnden! Datenverkehr klappt gut, das Protokoll muss ich aber noch ausarbeiten. Wenn ich 'was Konkretes habe, komme ich gern wieder.

Gruß Andreas

Achim S.
13.02.2012, 07:55
Hallo
bis zu diesen Teilen bin ich noch nicht gekommen. Ist schon vorgesehen, aber noch nicht so weit. Habe aber tzrotzdem Interesse an deinem Code und Erfahrungen. Wenn es so weit ist, denk an mich.

Hero_123
17.02.2012, 23:51
Hallo Achim S.

Hatte Dir schon vor einiger Zeit die Konfiguration meiner XBEE-Module incl einem c-file geschickt, aus der ersichtlich ist, wie der Datenverkehr PC <-> NIBO2 zu programmieren ist....somit müßte Dir klar sein, wie's denn geht...

Hero_123

Achim S.
18.02.2012, 14:26
Hallo Hero
dein Code habe ich da, ist korrekt. Leider hatte ich mich in andere Sachen gestürzt, so wie Timer, Scheduler, Abstandsmessung und Bus. dadurch ist mir die Zeit vollkemmen weggelaufen. Habe nicht das geschafft, was ich wollte. Sorry.
achim

aguhe
03.03.2012, 22:55
Hi,

bin zwar (auch) nur blutiger Anfänger, aber guckt mal auf http://www.guhe.net/nibo2/. So hab' ich das gemacht. Meldet euch mal!

Gruß Andreas

Hero_123
04.03.2012, 17:34
Hallo aguhe

Ich habe auch meinen NIBO2 mit XBEE-Modulen ausgestattet, habe dafür aber X6 benutzt und mir ebenfalls eigene Sende/Empfangsroutinen geschrieben, da mir die in der NIBOLIB vorhandenen nicht zusagten. Ich verwende wie Du den UART1.

mfg

Hero_123

Hero_123
06.03.2012, 03:11
Hallo aguhe

habe mir mal kurz Dein Programm angesehen - warum nimmst Du zum Übertragen und Auslesen der Daten nicht hterm? Oder willst Du die vom NIBO2 gesendeten Daten auf dem PC weiter verwerten (z.B. Darstellen der Fahrkurve etc)?

Ich steuere meinen NIBO2 auch mittels XBEE-Modulen per hterm - ich lasse mir die Drehzahlwerte, Odometriewerte usw auf dem hterm ausgeben und gebe mittels hterm Steuerkommandos (neue Drehzahlsollwerte, Anzahl der Ticks etc) - das geht ganz einfach.