XBee Explorer Probleme

Hallo ihr lieben,

es geht um folgende Teile:

zwei XBee Module S2B
http://www.watterott.com/de/XBee-Pro-60mW-Series-25-…

ein XBee-Shield v1.1
http://www.watterott.com/de/Arduino-Xbee-Shield-with…

und ein XBee Explorer USB
http://www.watterott.com/de/XBee-Explorer-USB

Meine Überlegung ist folgende:
Ich will mit dem Explorer und einem Modul einen sender bauen, der über die Tastatureingabe gesteuert werden soll (GUI -> Java) das zweite Modul soll mit dem Shield und dieses mit meinem Arduino Mega 2560 verbunden werden, welches zum Schluss einen Servo Motor antreibt.

Als „Vorbild-Projekt“ nahm ich mir dieses Video:
https://www.youtube.com/watch?v=u6cQmGELbY0

Was schon funktioniert:
Ich habe mir die Software von Digi (X-CTU) runtergeladen und installiert, habe sowohl dem Sender als auch dem Empfänger die gleiche Baud-Rate (9600) zugeteilt, dem Sender habe ich außerdem die „Serial Number High“ und „Serial Number Low“ des Empfängers zugewiesen. Die PAN ID ist auch überall gleich, genau wie in diesem Video:
https://www.youtube.com/watch?v=HY-qIcKbB18

Nun zu meinem Problem:
Ich bekomme immer einen timeout-Fehler wenn ich den Sender beschreiben will.

Um die Verbindung zu testen, wollte ich eine LED über die Tastendrücke „0“ und „1“ aus- bzw. anschalten. Doch immer wenn ich den folgenden Code

// Serial = Arduino Mega (Empfänger)
// Serial1 = Explorer (Sender)
void setup(){
 Serial1.begin(9600); //(Sender anlegen)
}

void loop(){
 Serial.print('1');
 delay(1000);
 Serial.print('0');
 delay(1000);
}

dem Sender zuweisen will, kommt es zu einem timeout-Fehler, der Code müsste auch richtig sein, denn der Compiler meldet keinen Fehler und ein Laufzeitfehler kann ja noch gar nicht auftreten. Bei dem Empfänger habe ich folgenden Code:

int led = 12;

// Serial = Arduino Mega
// Serial1 = Explorer
void setup(){
 Serial.begin(9600);
 pinMode(led, OUTPUT);
}

void loop(){
 if(Serial.available()){
 byte daten = Serial.read();
 if(daten == '1'){
 digitalWrite(led, HIGH);
 }else{
 if(daten == '0'){
 digitalWrite(led, LOW);
 }
 }
 }
}

dort funktioniert auch alles, zumindest das updaten, testen kann ich es ja wegen dem nicht funktionierenden Sender nicht.

Hat jemand von euch eine Idee, was ich falsch mache?

Schonmal Danke im voraus und liebe Grüße,
Matthias

Hallo Brayn,

so ganz verstehe ich deinen Aufbau nicht, aber wie auch immer. Als erstes solltest du dir sicher sein, daß beide XBees richtig konfiguriert sind.

Hierzu kannst du den XBee-Explorer nutzen. Nach Feststellung des XBee-Modells, lesen der aktuellen Konfiguration etc. weist du deinem ersten XBee die Rolle eines ZIGBEE COORDINATOR ST zu (nicht ATI). Alle anderen Werte wie z.B. Destinitation-Adressess müssen natürlich auch korrekt gesetzt werden.

Diese Werte schreibst du jetzt (WRITE)-

Beim zweiten XBee gehst du ähnlich vor, wählst aber die Option ZIGBEE ROUTER AT, dazu Channel Verification (JV) auf 1.

Nun kannst du die Basisfunktionalität der beiden XBees überprüfen, z.B. per Putty o.ä.

Dann kann es weiter gehen.

Schick doch mal Bildschirmausdrucke des beiden XBees bei der Konfiguration unter X-CTU (Modul Modem Configuration).

Grüße

fribbe

Hallo fribbe,

vielen vielen Dank für deine schnelle Antwort. Ich habe mal einen Dropbox-Ordner erstellt indem ich ein paar Screenshots von Fehlermeldungen und andere Bilder abgelegt habe.

Die Funktion „ZIGBEE COORDINATOR ST“ existiert bei mir gar nicht, auch ATI gibt es nicht (siehe Bild „Funktionsübersicht.png“).
„ZIGBEE ROUTER AT“ hingegen gibt es bei mir auch.

Nun kamen mir noch weiter Fragen:
Kann es sein, dass ich die XBee Module über das Shield gar nicht konfigurieren kann sondern nur über den Explorer?
Bevor ich hier was machen will was gar nicht funktioniert, mal eine Frage vorab:
Kann ich den Explorer nutzen um Benutzereingaben an das „Sender-Modul“ weiterzuleiten? Mehr müsste es nach der Konfiguration eigentlich nicht können. :smile:

Hier noch der Link zur Dropbox:
https://www.dropbox.com/sh/1xydfgup2j4l6sy/FFvPUZ4m75

Danke schön nochmal, vielleicht hast du ja noch einen Rat.
Liebe Grüße Matthias

Hallo Brayn,

letztendlich kannst du mit den Dingern (vor allem mit den XBees II) alles machen.

Wie so ofrt muß allerdings erst einmal sicher sein, daß die beiden miteinander kommunizieren können.

Nach erfolgreicher Konfiguration der beiden sollte ein gesendet „Hallo“ eben beim Empfänger ankommen.

Erst wenn dies funktioniert, folgen die Feineinstellungen.

Hierbei spielt es keine Rolle, auf welchem Weg der XBee seriell kommuniziert. On du den Explorer oder ein einfaches FDTI-Modull benutzt: Hauptsache serielle Anbindung und nur 3,3 Volt (oder entsprechden Adapter).

Ich schicke dir morgen im Laufe des Tages mal entsprechdende X-CTU-Screenshots.

Grüße

fribbe

1 Like

Hallo fribbe,

nochmals vielen vielen Dank, dass du mir dabei so hilfst. Ich weiß gar nicht wie ich mich bei dir bedanken kann :smile:

Liebe Grüße Matthias

Hallo fribbe,

ich bin nochmal etwas weiter gekommen und habe auch ein Video gemacht. Die Videodatei ist leider etwas groß, daher habe ich mehrere Parts daraus gemacht. Die findest du alle unter dem angegebenen Dropbox-Ordner. Wäre schön wenn du dir das mal ansehen könntest.

Um es mal kurz zusammen zu fassen:
Mit X-CTU kann man ja die Verbindung zweier XBee’s testen. Lade ich auf den Arduino einen leeren Sketch und ich öffne X-CTU zwei mal und bei beiden Fenstern betätige ich in dem Reiter „Range Test“ den Start-Button dann steigt der prozentuale Anteil der Verbindungen auch schön an.
Lade ich nun auf den Arduino MEGA den folgenden Sketch:

int led = 12;

// Serial = Sender
// Serial1 = Empfänger
void setup(){
 Serial.begin(9600);
 pinMode(led, HIGH);
}

void loop(){
 byte daten = Serial.read();
 if(daten == '1'){
 digitalWrite(led, HIGH);
 delay(250);
 }

 if(daten == '0'){
 digitalWrite(led, LOW);
 delay(250);
 } 
}

kommt es bei dem Empfänger (im Video „Arduino MEGA 2560 (COM 3)“) durchgehend zu einer fehlgeschlagenen Verbindung, woran liegt das?

Der Sinn des Codes ist ganz einfach, X-CTU schickt bei dem Range-Test Standard mäßig 32 Zeichen das erste ist eine Null (0), das zweite eine eins (1) usw. Der Arduino soll prüfen, ob eine ‚1‘ oder eine ‚0‘ gesendet wird. Bei einer 1 schaltet er die LED an, bei einer 0 schaltet er die LED aus. Alle anderen Zeichen werden nicht beachtet, macht er also nichts.

Wenn man genau hinschaut, erkennt man, dass die LED länger an als aus ist. Zu beginn dachte ich noch es liegt an den restlichen 30 Zeichen, also habe ich nur die 0 und 1 versenden lassen (letzter Test des Videos) doch dann ist es immer noch, hast du eine Idee woran das liegt?

Zur Zeit ärgern mich aber viel mehr die fehlgeschlagenen Verbindungen.

Ich freue mich schon auf deine Antwort,
liebe Grüße Matthias

Hallo fribbe,

sry. dass ich dich so belästige. Ich habe gerade gemerkt, dass der Code falsch bzw. unvollständig ist. Denn wenn ich den „Range-Test“ nur mit dem Empfänger durchführe, blinkt die LED trotzdem.

Meine Vermutung ist, dass ich zwei Serials deklarieren muss, doch wie mache ich dann die Eingabe? Ich mache später nochmal ein bisschen weiter.

Liebe Grüße Matthias

Hi,

hier die aktuellen Links zu den Videos.

In diesem Video sieht man wie ich die LED über den „Serial Monitor“ an und ausschalte.
https://www.dropbox.com/s/9rb17xl07llzgbm/LED%20on%2…

Diese Grundidee ist ja eigentlich genau das was ich will, ich weiß aber nicht wie ich das mit dem Explorer machen soll, da ich dort keinen Code draufladen kann. Geht das überhaupt?

Hier noch ein zweites Video. Der erste Teil, sollte verdeutlichen, dass die zwei XBee’s sich finden und miteinander kommunizieren können.
https://www.dropbox.com/s/bymfrq2168ekeq2/Ganzes%20V…

Ich freue mich auf eine Antwort,
liebe Grüße Matthias

Bin immer noch nicht weiter
Hallo,

sry. aber ich bin immer noch nicht weiter gekommen. Ok ich bin jetzt schonmal soweit, dass ich mit den XBees über zwei unterschiedliche PC’s mit der X-CTU Software chatten kann.

Aber die LED’s kann ich komischerweiße immer noch nicht an oder ausschalten. Chatten geht auch nur dann, wenn ich eine Brücke zwischen GND und RESET am MEGA habe, so kann ich aber kein Code drauf laden…

Hat jemand noch eine Idee was ich versuchen könnte? Ich bin über jeden Tipp froh.

Liebe Grüße Matthias

Es geht :smile:
Hey Leute,

ich habe die verdrehte Einstellung gefunden. Unter dem Eintrag „I/O Settings“ bei X-CTU gibt es den Unterpunkt „D0“ der stand bei mir Standardmäßig auf „1 - COMMISSIONING BUTTON“ doch das ist der Input Pin. Daher musste man den auf „3 - DIGITAL INPUT“ umstellen.

Super gut jetz funktioniert es genauso wie ich es mir vorgestellt habe :smile:
Als nächstes folgt die GUI :wink: aber dazu komme ich zeitlich wahrscheinlich erst frühstens im Herbst.

Liebe Grüße Matthias

Re: Es geht :smile:
Hallo Matthias,

das ist doch mal 'be gute Nachricht.

Vielleicht noch zwei Hinweise. Solltest du dich intensiver mit den Möglichkeiten der XBees (ZigBees) beschäftigen wollen, lohnen sich mehrere Blicke in das Standardwerk von Robert Faludi (Wireless Sensor Networks):

http://www.oreilly.de/catalog/9780596807733/index.ht…

Auch immer wieder hilfreich:

http://www.faludi.com/projects/common-xbee-mistakes

eine Übersicht häufig auftretender Fehler.

Hab Spaß!

fribbe

1 Like