No estoy seguro de que este sea el lugar adecuado para formular esta pregunta, pero si alguien está familiarizado con XBee y puede ayudarme con este problema, aprecio mucho su ayuda.
Tengo dos XBees, uno configurado como API coordinador y otro configurado como enrutador API.
He adjuntado esos dos XBees con dos arduinos solo para probar la comunicación entre ellos. El código para cada uno es muy simple.
Código en arduino conectado al coordinador XBee
Descripción: Esto simplemente presionará el botón presionando. Al presionarlo se enviará el cuadro de solicitud de transmisión ZigBee.
int BUTTON1 = 3;
void setup()
{
pinMode(BUTTON1, INPUT);
Serial.begin(9600);
}
void loop()
{
if (digitalRead(BUTTON1) == HIGH)
{
sendData();
}
}
void sendData()
{
Serial.write(0x7E);
Serial.write(0x00);
Serial.write(0x16);
Serial.write(0x10);
Serial.write(0x01);
Serial.write(0x00);
Serial.write(0x13);
Serial.write(0xA2);
Serial.write(0x00);
Serial.write(0x40);
Serial.write(0x8C);
Serial.write(0xC6);
Serial.write(0xD4);
Serial.write(0x20);
Serial.write(0x01);
Serial.write(0x00);
Serial.write(0x00);
//data start
Serial.write(0x54);
Serial.write(0x78);
Serial.write(0x44);
Serial.write(0x61);
Serial.write(0x74);
Serial.write(0x61);
Serial.write(0x30);
Serial.write(0x41);
Serial.write(0x13);
delay(10);
}
El siguiente es el código para arduino conectado al enrutador XBee.
Descripción: Esto simplemente escanea el byte "0x54" y, si está allí, se enciende un LED. Como puede ver, el coordinador envía este byte 0x54 junto con otros bytes.
int BELL = 5;
void setup()
{
pinMode(BELL, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(Serial.available() >= 25)
{
if(Serial.read() == 0x7E)
{
for(int i=0;i<24;i++)
{
if(Serial.read() == 0x54)
{
digitalWrite(BELL, HIGH);
}
}
}
}
}
Me gustaría agregar que, cuando enciendo el monitor de serie, y luego presiono el botón, el monitor de serie muestra correctamente qué datos se pasaron. También se enciende el tx. Así que mi suposición es que el problema está en que el enrutador no obtiene los datos, en lugar de que el coordinador no los envíe. He estado tratando de resolver este problema durante un par de horas sin éxito. Cualquier ayuda es muy apreciada!