Hola, estoy trabajando con 1 arduino uno, 2 xbee series 2, 2 adaptadores usb para el xbee. Estoy intentando medir el valor de RSSI entre los 2 xbee. Uno de ellos esta en modo coordinador API (conectado al arduino) y el otro en modo AT y conectado directamente a mi pc. He probado el código que adjunto a continuación:
#include <SoftwareSerial.h>
SoftwareSerial Xbee(11,10);
char Data;
void Router();
void Dato_Xbee();
void setup() {
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Xbee.begin(9600);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
if (Xbee.available()>21){
Data=Xbee.read();
if (Data=='A'){
digitalWrite(LED_BUILTIN, HIGH);
Router();
delay(150);
Dato_Xbee();
}
}
digitalWrite(LED_BUILTIN, LOW);
}
void Dato_Xbee(){
if (Xbee.available()){
Data=Xbee.read();
Serial.print(Data,HEX);
Serial.print(",");
if(Data==0x7E){
for (int i=0;i<19;i++){
Data=Xbee.read();
Serial.print(Data,HEX);
Serial.print(",");
}
Serial.println();
}
}
}
void Router(){
Serial.print("A,");
Xbee.write(0x7E);
Xbee.write((byte)0x0);
Xbee.write(0x0F);
Xbee.write(0x17);
Xbee.write(0x01);
Xbee.write((byte)0x0);
Xbee.write(0x13);
Xbee.write(0xA2);
Xbee.write((byte)0x0);
Xbee.write(0x40);
Xbee.write(0xE4);
Xbee.write(0x37);
Xbee.write(0x45);
Xbee.write(0xFF);
Xbee.write(0xFE);
Xbee.write(0x02);
Xbee.write(0x44);
Xbee.write(0x42);
Xbee.write(0x0D);
}
Sin embargo, a lo que pruebo el código y abro el Serial Monitor no aparece nada. Estuve probando cambiando el Serial y revisando las configuraciones de los xbee (configuro los xbee por XCTU), pero sigue sin aparecer nada en el Serial monitor.
Actualización: obtuve estas respuestas pero no me parece que sea lo que necesito. He revisado el código con los que hay en la web, pero no me arroja lo mismo que ellos. Así que si alguien tiene conocimiento sobre esto. Espero pueda ayudarme
if (Xbee.available()>21){
Data=Xbee.read();
if (Data=='A'){
digitalWrite(LED_BUILTIN, HIGH);
Router();
delay(150);
Dato_Xbee();
}
Entiendo que esperas 'A' pero al hacerlo envias Router() y luego vuelves a leer el puerto? Raro. Lo veo algo desordenado.
La lectura de datos debe ser unica, me refiero a concentrar las posibles llegadas de datos que tengan un comando inicial como 'A' por ejemplo y todo lo que llegue a continuación pero en tu caso tiense 'A' y luego tienes 0x7E.
Si, arreglé esa parte y quite lo de buscar “A” y deje únicamente el 0x7E. Estoy enviando una trama con tipo de paquete 17. Tengo entendido que si envío esa trama debería obtener como respuesta en la trama recibida un 97 que es la respuesta remota de AT. Pero obtengo un 92 en su lugar. No he encontrado una solución a eso.
Porque debes recibir un 97 y no 92. coloca algun documento (link mediante) que asi lo indique.
No uso XBEE, puedo aconsejarte leyendo los manuales y hojas de datos.
Sí, etsoy trabajando con tramas API y el emnsaje de respuesta ala petición que estoy haciendo que es 0x17 (AT request) genera un respuesta con tipo de trama 0x97. Ya logre obtener el mensaje. El problema que tengo es que quiero recibir dos tramas (1 de un xbee y otra de otro xbee). Y cuando pongo este código
#include <SoftwareSerial.h>
SoftwareSerial Xbee(2,3);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Xbee.begin(9600);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
if (Xbee.available()>21){
R3();
delay(2000);
if(Xbee.read()==0x7E){
for (int x=0; x<21; x++){
delay(500);
Serial.print(Xbee.read(),HEX);
Serial.print(",");
}
Serial.println("Fin de la Trama");
Serial.println();
}
}
}
void R3(){
Serial.print("R3,");
Xbee.write(0x7E);
Xbee.write((byte)0x0);
Xbee.write(0x0F);
Xbee.write(0x17);
Xbee.write(0x01);
Xbee.write((byte)0x0);
Xbee.write(0x13);
Xbee.write(0xA2);
Xbee.write((byte)0x0);
Xbee.write(0x40);
Xbee.write(0xE8);
Xbee.write(0x2B);
Xbee.write(0xAF);
Xbee.write(0xFF);
Xbee.write(0xFE);
Xbee.write(0x02);
Xbee.write(0x44);
Xbee.write(0x42);
Xbee.write(0xAB);
}
Cuando ese código para amnos las tramas me aparecen mezcladas. Además, la respuesta que estoy obtiendo no es muy buena. A veces aparece la trama, otras no. Este código lo he visto en varios documentos. Y les ha funcionado a las personas que usan. Pero a mi realmente me esta dando problemas. Espero una respuesta, muchas gracias. Estoy muy preocupada por este inconveniente que estoy teniendo