Hallo,
bin gerade dabei, für meine geplante Garagentorsteuerung einige Experimente mit XBees zu machen.
Zum Testen habe ich erst mal eine einfache Variante gewählt, ich habe die XBees erst mal ganz ohne Arduino zu testen
-
Zwei XBee-Module in Verbindung mit jeweils einem XBee-Explorer-USB (http://www.watterott.com/de/XBee-Explorer-USB), auf zwei Computer habe ich dann mit CoolTerm die Verbindung getestet, das hat ohne Probleme funktioniert.
-
Als nächstes habe ich auf einem Breadboard einen der XBees mit einem Arduino verbunden (Arduino ist über USB angeschlossen, Arduino und XBee-Module sind mir 3,3 V, Ground, sowie Pin 3 und Pin 4 des Arduinos mit Data In und Data Out des XBee-Moduls verbunden). Das XBee-Modul ist auf einem Adapter (http://www.watterott.com/de/Adapterplatine-fuer-XBee-Module) montiert. Das andere XBee-Modul war immer noch anhand des Explorer-Boards mit einem anderen Computer verbunden.
Softwareseitig habe ich versucht, Daten zwischen den beiden XBee-Modulen hin- und herzusenden - hat ebenfalls wunderbar in beiden Richtungen geklappt. Dazu habe ich ein SoftwareSerial-Objekt mit Pin 3 + 4 gemappt.
Testweise habe ich die XBee-Module ausgetauscht, hat immer wunderbar funktioniert.
- Als nächstes habe ich versucht, auch das zweite XBee-Modul über ein Adapterboard mit dem gleichen Arduino zu verbinden.
Dazu habe ich wieder 3,3 V sowie Ground des Arduinos mit den entsprechenden Anschlüssen des XBee-Moduls verbunden sowie Pin 5 und Pin 6 mit Data In und Data Out des XBee-Moduls.
Softwareseitig sind nun zwei serielle SoftwareSerial-Objekte vorhanden, die auf die Pins 3+4 sowie 5+6 gemappt werden.
Jetzt funktioniert das Versenden der Daten interessanterweise nur noch in eine Richtung. Wenn ich Daten von XBee1 zu XBee2 schicke, klappt das wunderbar, in der Gegenrichtung kommt nichts an. Habe schon die Adapter-Boards vertauscht, ebenso zusätzlich auch die XBee-Module.
Hat da jemand einen Tipp für mich, woran das liegen könnte? Die Adapterboards für sich alleine funktionieren problemlos, ebenso die XBee-Module. EInen Defekt an der Hardware würde ich ausschließen, weil ich ja auch verschiedene Konstellationen getestet habe. Ich würde eher davon ausgehen, dass ich da einen logischen Fehler beim Anschließen der XBee-Module gemacht habe - darf ich die evtl. nicht gemeinsam an einen einzigen Arduino anschließen?
Ciao,
Rudi
PS: Anbei der Code:
#include <SoftwareSerial.h>
const int DEBUG_LED = 13;
const int OUTPUT_LED = 11;
SoftwareSerial XBeeSerial_1(2, 3);
SoftwareSerial XBeeSerial_2(6, 7);
#define SENDER1
void setup()
{
pinMode(DEBUG_LED, OUTPUT);
pinMode(OUTPUT_LED, OUTPUT);
Serial.begin(9600);
XBeeSerial_1.begin(9600);
XBeeSerial_2.begin(9600);
#ifdef SENDER1
XBeeSerial_1.println("Serial_1: Testprogramm zur Kommunikation mit XBEE");
#endif
#ifdef SENDER2
XBeeSerial_2.println("Serial_2: Testprogramm zur Kommunikation mit XBEE");
#endif
}
void loop()
{
unsigned char ch;
String s;
char buffer[10];
unsigned int count1, count2;
#ifdef SENDER2
count1 = XBeeSerial_1.available();
if (count1 >= 1)
{
while (XBeeSerial_1.available() > 0)
{
ch = XBeeSerial_1.read();
Serial.write(ch);
}
}
#endif
#ifdef SENDER1
count2 = XBeeSerial_2.available();
if (count2 >= 1)
{
Serial.print("Receiver Serial_2 from ");
while (XBeeSerial_2.available() > 0)
{
ch = XBeeSerial_2.read();
Serial.write(ch);
}
}
#endif
}