Go Down

Topic: Problemas enviando datos Xbee (Read 2710 times) previous topic - next topic

dhanny

Hola Amigos, hace poco hice que un Xbee + Arduino me enviaran al PC la temperatura con un LM35 y funciono espectacular.
Ahora lo que quiero es enviar datos del PC al otro Xbee por lo cual no he podido hacer funcionar un sencillo ejercicio, aqui se los subo para que me ayuden a ver donde esta el problema.
Tengo uno como end Device y otro como Coordinador

Xbee con el Arduino que Envia el Valor que le paso atravez de Visual Basic 2008

Code: [Select]
int val;

void setup()
{
    Serial.begin(9600);
    Serial.flush();
}

void loop()
{
        val = Serial.read();
        Serial.println(val);
        delay(50);
}



Xbee con el Arduino que recibe el dato enviado desde VB .NET
Code: [Select]
int outPin = 13;
int dato = LOW;
int val;

void setup()
{
    pinMode(outPin, OUTPUT);
    Serial.begin(9600);
    Serial.flush();
}

void loop()
{
    if (Serial.available())
    {
        val = Serial.read();
        Serial.println(val);
        if (val == 'A') dato = HIGH;
        else if (val == 'B') dato = LOW;
    }

    digitalWrite(outPin, dato);
}


enciendo y apago un led con dos botones desde VB .NET

dhanny

Nadie ha hecho algo con xbee y comunicacion Bidireccional?

Mrebollob

Buenas dhanny,
Yo lo estoy intentando con el bluetooth bee puesto en el arduino con una base de xbee pro y el bluetooth del pc, la idea es enviar es la misma que la tuya enviar cosas desde el pc al arduino y que este actue, pero no lo he conseguido.
El bluetooth del pc lo tengo uno un puerto serie y envio los datos por hay pero nada.

Si consigues algo comentalo. :D

Un saludo

Juantreras

hola Dhanny mira prueba esto: Serial.print ('T');
    lcd.setCursor(0,0);
    lcd.print("Humedad relativa");
    if (Serial.available()) {
      lcd.setCursor(5,1);
      while (Serial.available() > 0) {             // lee los caracteres disponibles
        lcd.write(Serial.read());
      }
    }
como puedes imaginar en el otro lado tienes que hacer la funcion que "escucha" y si oye una T te envía el dato que quieres.
Otro asunto es el delay que usas , me parece muy poco , vas a saturar el buffer del xbee.
Tambien puedes usar la Librería Easy transfer que yo creo que es mejor solución que la funcion que envio arriba.
Adaptala a tus necesidades y veras como encuentras una solución facilmente
Un saludo.

shayrusen

amigo yo tengo un problema similar pero necesito ambos codigos para entenderlo bn estoy  haciendo un sistema meteorologico con xbee con sensores dht11
he conseguido recibir los datos pero quiero poder mandar una señal por el monitor serie en el coordinador para q me los envie cuando yo le mande por ejem una t desde el monitor serie ayúdame porfavor

surbyte

Cual es el problema? XBee tiene que ser un enlace serie transparente.
Cualquier código donde dos arduinos se comuniquen por puerto serie te tienes que guiar/servir.


SantiagoRP37

Hola , Soy nuevo manejando Xbee y estoy intentado leer un sensor de temperatura con el arduino  enviarlo al PC usando XBee, tengo la shield para el arduino y el programador con otro Xbee pero tengo problemas en la comunicación, el revisar XCTU que le llega al puerto del pc no me muestra la temperatura, muestra uno caracteres errones
Code: [Select]
#include <XBee.h>
#include "DHT.h"
#define DHTPIN 11 
#define DHTTYPE DHT22   
XBee xbee = XBee();
uint8_t payload[]={0,0,0,0,0,0,0,0};
XBeeAddress64 addr64= XBeeAddress64(0x13a200,0x415c9211);
ZBTxRequest tx = ZBTxRequest(addr64,payload,sizeof(payload));
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(9600);
  xbee.setSerial(Serial);
 

}

void loop() {
  delay(500);
 payload[0]='t';
 payload[1]='e';
 payload[2]='m';
 payload[3]='p';
 payload[4]=':';
   
   
   int t = dht.readTemperature();
   int h = dht.readHumidity();
   
    payload[5]=t;
   payload[6]=t%10+48;
    payload[7]=h/10+48;
    payload[8]=h%10+48;
    Serial.println(t);
     xbee.send(tx);
     delay(1000);

}



no entiendo que estoy haciendo mal, si me pueden ayudar se los agradecería mucho

Go Up