Pages: 1 [2] 3   Go Down
Author Topic: Transferir bastantes datos de forma inalambrica.  (Read 6787 times)
0 Members and 1 Guest are viewing this topic.
Barcelona
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sigo....

Si utilizas el modo API tienes que construir un paquete con un formato concreto que envías desde el Xbee de origen, el paquete contiene el nodo de destino, indicadores si quieres que te mande un acknoledge, etc. es bastante más complicado, pero una vez implementado puedes comunicar con cualquier nodo de la red simplemente indicando la dirección en el paquete.

Una cosa importante es que tu pones la dirección del nodo de destino (normalmente el coordinador) y el mensaje pasa por todos los nodos que sean necesarios hasta llegar al nodo de destino, si se apaga un nodo la propia red buscaría otra ruta de forma tranparente.

Es un poco más complicado, pero en cada Xbee puedes leer el valor de RSSI, que es la potencia con la que le llega la señal de un determinado nodo, de forma que podrías saber si está cerca del coordinador o no y en función de eso decidor enviar o no. De hecho si no tienes más nodos en la red que estos dos si el que envía está a más distancia de la que cubre la red no estará enganchado, cuando te metas en el área de cobertura se enganchará y puedes enviar los datos.

Los productos que has puesto son correctos, yo personalmente utilizo la shield de Libelium, pero te vale cualquiera. Los módulos tienen 4 tipos de antena, yo suelo usar la cerámica.Hay además módulos con dos niveles de potencia diferentes, los de potencia más baja te cubren 30 metros en interiores y 100 en exteriores, si tienes un nodo móvil consumen bastante menos.

http://www.zigbe.net
Logged


0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

impresionante aportación zigbe !!!
no entiendo como un producto como Zigbee no tiene mas tutoriales, documentación, ejemplos, etc por internet.
hay cosas pero no veo mucha calidad. lo mejor que encontre fue este video tutorial, que junto con vuestras recomendaciones me han animado a usar ZigBee



en relación a lo de los tutoriales o la escasa información, una pregunta.
es posible utilizar ZigBee y ademas tener el arduino conectado al PC para tener un hiperterminal en modo diagnostico. algo asi...

void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println("linea debug enviada al ordenador por el cable usb");
ZigBee.println("datos transferidos de un arduino a otro mediante ZigBee");
delay(5000);
}

si esto no es posible, entonces se pierden todas las opciones de poder introducir codigo de debug en los programas??? seria catastrofico!

gracias una vez mas
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Barcelona
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gixxer,

El Arduino duemilanove o uno solo tiene una UART, pero puedes emular por software por ejemplo con la librería New Soft Serial. Las shiedls de Xbee suelen utilizar la UART, por lo que se vuelve un poco "rollo" el tema de cargar los sketchs al Arduino, tienes que desconectar el módulo para cargarlos (o en la de Libelium hay unos jumpers para desconectarlo cuando usas el USB)

A cambio, como el Xbee está conectado a las mismas patas del micro que el puerto USB si montas una placa con la shield y el Xbee habiendo sacado el microprocesador del Arduino tienes un adaptador del Xbee al puerto USB. Eso facilita mucho la depuración.

Si cojes dos Arduinos sin micro, con la shield del Xbee, los configuras como te indiqué y conectas cada placa a un PC con el Putty o el hiperterminal (o a dos sesiones del putty en el mismo PC con dos puertos USB diferentes) podrás ver como lo que escribes en un terminal te aparece en el otro, esa es la forma más fácil de verificar que los Xbee están conectando entre ellos y emulando un puerto serie de forma transparente.

Hay bastante información del tema en la web de Digi, de hecho tanta, sobre tantos productos que se hace complejo. Casi toda es accesible desde el ftp, pero los nombres de los ficheros no son muy explicativos.

http://www.zigbe.net
Logged


0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zigbe, veo que hay información pero esta todo expuesto de forma muy comercial/profesional. yo me referia a ejemplos sencillos de programas. diferentes ideas plasmadas en codigo, tutoriales de como hacer esto o lo otro.

entiendo lo que dices del newsoftserial, vere que se puede hacer en este caso. pero una vez mas veo que no hay mucho en la web, siendo xbee tan famoso, como es que no se encuentran ejemplos de algo tan sencillo cmo lo que he dicho?

todavia no entiendo muy bien como funciona la red de xbee's .
si yo tengo 2 clientes xbee con arduino y 1 arduino con xbee que actua de estación base en casa. los clientes estan configurados para comunicar sus datos al xbee estación base. pero como contesta la estación base? porque si esta quiere pedirle un dato al cliente 1, y luego un dato al cliente 2...como se especifica ? porque supongo que algo tan basico podra hacerse,no?

respecto al PC+Xbee he entendido...
usar comunicación normal -> Arduino1+XBee para comunicar con Arduino2+XBee
usar newsoftserial para - > arduino1+XBee para comunicar por usb al ordenador
es correcto?

no tengo problema en desconectar el xbee del shield para cargar el sketch, tampoco es que esto vayas a hacerlo muy amenudo cuando terminas un proyecto y lo dejas funcionando,no?
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buff tantas preguntas...
otra mas...

es posible determinar si dos XBees estan en rango?? he intentado Serial.available pero claro de este modo tengo que tener el arduino base enviando por serial constantemente.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Barcelona
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gixxer,

El modo API está más pensado para comunicaciones en red con varios nodos, el modo AT es un sustituto excelente de una conexión serie para una comunicación punto a punto. Hay un proyecto en sourceforge o en google code paa comunicar con Arduino y Xbee via API.

Si lo que quieres es leer un sensor analógico y enviarlo a intervalos regulares te ahorras el arduino en el nodo que envía, porque el propio Xbee tiene varios puertos AD (mira en nuesto blog el esquema del mote de temperatura y humedad), puedes programar el Xbee para que envie a intervalos regulares al coordinador.

Tambien puedes hacer esto en modo AT, aunque para una red de varios nodos no es la mejor manera, pero te ponho un ejemplo:
Nodo1-> Dirección del Xbee ->1; Dirección de destino -> 3
Nodo2-> Dirección del Xbee ->2; Dirección de destino -> 3
Coordinador-> Dirección del Xbee->3; Dirección de destino -> 1 (o 2, la que prefieras)

Cualquier cosa que envie cualquier nodo irá aparecerá por la UART del coordinador, porque la dirección de destino es la tres.

Si quieres hablar desde el coordinador con el nodo1 envias al Xbee la cadena "+++" para entrar en el modo de configuración y el comando para cambiar la dirección de destino "ATDH[Destino1]ATDL[Destino2]", lo que envies a partir de ahora aparecerá en el nodo configurado, si quieres cambiar de nodo envías de nuevo el comando con la dirección del otro nodo.

Sigo en otro mensaje, porque no me funciona bien el cuadro de texto del forum...
Logged


Barcelona
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Continuo...

lo que te he descrito es la forma de comunicar con varios nodos en modo AT, en modo API simplemente cuando envías el paquete ya estás poniendo la dirección del destino, por lo que no tienes que cambiar configuraciones.

Si vas a hacer una red de dos o tres nodos te sirve hacerlo de la forma que te indico, si tienes pensado integrar más nodos busca la librería Xbee para Arduino que te comentaba arriba, es de Rob Faludi, que tiene un libro (descargable creo) sobre el tema bastante interesante.

Para saber si están en el rango puedes entrar en modo comando enviando "+++" y enviar el comando ATAI (asociation indication), o enviar el comando ATDB (RSSI of last packet), el primero te dirá si está asociado, el segundo te dirá la potencia con la que se ha recibido el último paquete (lo cual te puede incluso dar la idea de la distancia).

Si tu objetivo final es enviar la info al PC para manejarla puedes poner un USB Dongle de Zigbee, lo que salga por la UART del Zigbee se envía al puerto del PC (lo mismo que si pones la tarjeta Arduino son micro)

Ánimo, te garantizo que cuando te pones en ello es más sencillo de lo que parece.

http://www.zigbe.net
Logged


0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

eres un fenomeno !!
que cantidad de informacion super util
seguro que cuando me ponga sera mas sencillo de lo que parece, como tu dices, pero como hasta dnetro de 10 dias no tendre el hardware disponible pues estoy intentando documentarme al maximo ahora.

Entonces si que hay solucion para lo que yo mas temia. Tener 2 clientes (ard+xbee) y 1 servidor(ard+xbee) y que los clientes puedan hablar con el servidor y el servidor con AMBOS clientes. estupendo. no puedo esperar para probarlo.

entonces desde el cliente 1 puedo comprobar si el servidor esta en rango asi...
Code:
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);    
}

void loop()
{
int servidor_enrango = 0;         // incoming serial byte
int servidor_potencia = 0;

Serial.println("+++");
Serial.println("ATAI");      //te dirá si está asociado
servidor_enrango = Serial.read();    // get incoming byte:
Serial.println("ATDB");      //te dirá la potencia con la que se ha recibido el último paquete
int servidor_potencia = Serial.read();    // get incoming byte:

if (servidor_enrango == 1)
{
  digitalWrite(13, HIGH);   // set the LED on
}
else
{
  digitalWrite(13, LOW);   // set the LED on
}
}

eso es a lo que te refieres con modo comando? porque despues de escribirlo todo no estoy seguro.


y para enviar a los dos clientes
Code:
/*
modo AT
Nodo1-> Dirección del Xbee ->1; Dirección de destino -> 3
Nodo2-> Dirección del Xbee ->2; Dirección de destino -> 3
Coordinador-> Dirección del Xbee->3; Dirección de destino -> 1 (o 2, la que prefieras)

Cualquier cosa que envie cualquier nodo irá aparecerá por la UART del coordinador, porque la dirección de destino es la tres.


Si quieres hablar desde el coordinador con el nodo1 envias al Xbee la cadena "+++" para entrar
en el modo de configuración y el comando para cambiar la dirección de destino "ATDH[Destino1]ATDL[Destino2]",
lo que envies a partir de ahora aparecerá en el nodo configurado, si quieres cambiar de nodo envías de nuevo
el comando con la dirección del otro nodo.

*/

void setup() {               
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop()
{
// enviar mensaje desde coordinador hasta cliente1
//ATDH[Destino1]ATDL[Destino2]
Serial.println("+++");
//[Destino1] = coordinador
//[Destino2] = cliente1
Serial.println("ATDH[000]ATDL[001]");
Serial.println("mensaje enviado desde coordinador hasta cliente1");
// enviar mensaje desde coordinador hasta cliente2
//ATDH[Destino1]ATDL[Destino2]
Serial.println("+++");
//[Destino1] = coordinador
//[Destino2] = cliente2
Serial.println("ATDH[000]ATDL[002]");
Serial.println("mensaje enviado desde coordinador hasta cliente2");

}

« Last Edit: March 06, 2011, 02:18:25 pm by Gixxer » Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Barcelona
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gixxer,

en realidad no es bien bien así...

Cada xbee tiene un identificador de 64 bits, que está escrito en dos parámetros de 32 bits, una especie de MAC address. Los datos del Xbee al que estás conectado son el SH y el SL (Serial High y Serial Low),los datos del Xbee de destino son DH y DL (Destination High y Destination Low). Destino 1 y destino2 son dos palabras de 32 bits que se refieren a un único nodo. La dirección lleva un identificador del fabricante (como las MAC ethernet), por lo que la SH o la DH siempre son la misma para cualquier Xbee, porque todas son de Digi.

He encontrado un documento en español http://www.scribd.com/doc/34935976/XBee-Guia-Usuario, olvídate de toda la parte de red, es más complejo, pero se lo gestionan las radios.

Por otro lado el firmware de Digi implementa en una patilla una salida digital para un LED, uno de los parámetros que puedes configurar es la frecuencia del led en función de si está en la red o no (creo que hay algo más o menos normalizado, medio segundo si está enganchado y es un nodo, el doble si es coordinador, etc). Poniendo un pulsador en la patilla 20 del Xbee implementas un circuito de comisioning, con el que puedes forzar la conexión a la red, etc.

La verdad es que no tengo demasiada experiencia con los modos AT, pero con los módulos y el XCTU verás que es fácil. OJO!!! porque todo lo que te estoy indicando son comando basados en las direcciones de HW, al formarse la red se les asigna una dirección de red más corta que luego se puede traducir a la de HW, hay direcciones de broadcast, etc.

En este link tienes algunos de los comandos más usuales, no te he comentado nada, pero hay uno para grabar la configuración de forma permanente ATWR, uno para salir del modo comando ATCN, etc.

http://www.zigbe.net
Logged


0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola zigbe, ya que me has solucionado tantas dudas, llega la hora d ela compra.

iba a comprar esto...
XBee® Shield V1.1 by seeedstudioXBee® Shield V1.1 by seeedstudio
   $13.50    $27.00

XBee® RF Modules ZNet 2.5 - 1 mW, Chip Antenna
   $24.95    $49.90


pero me he dado cuenta que no son ZB si no ZNet, los de la pagina me dicen que se puede hacer lo mismo.
"The XBee module you asked can create a network and the topology structure is called cluster tree.
Data can be sent from one device to any device if there is a route path between them. If you have any other questions, please feel free to ask me."

pero no quiero meterme en un producto (ligeramente) distinto al que usa todo el mundo y que luego pueda darme problemas, o que el codigo q encuentre por internet no sea exactamente igual.

hago bien en olvidarme d elos ZNet y buscar los ZB en otra tienda? alguna preferencia de donde son mas economicos y tienen buen shield?

muchas gracias !!
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Los ZNet y los ZB son iguales, lo único que cambia es el firmware con el que vienen cargados, y se puede pasar de uno a otro sin ningún problema.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

entraba justo ahora al foro para cambiar lo que habia puesto, porque he leido eso justamente en una pagina.
entonces puedo cambiar de ZB a ZNet yo mismo,no?

como es posible que haya esta diferencia de precios...
cooking-hacks
39+iva

y en seedstudio 38 dolares = 27 euros (y sn gastos de envio
http://www.seeedstudio.com/depot/index.php?main_page=advanced_search_result&search_in_description=1&zenid=e4ca78dcbb581b003f31e884025d7105&keyword=xbee&x=0&y=0&search_in_description=0

en sparkfun solo el modulo (sin el shield) ya vale 40 dolares

pensaba que habia algo mas que el firmware debido a esta diferencia de precios.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ten en cuenta que no estás comparando lo mismo:

- El de libelium lleva un XBee Series 2 con la placa incluida
- El de Seeedstudio es un XBee Pro Series 2 sin placa al igual que de Sparkfun
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

chivas m referia a 38dolares (24.95+13.50) del modulo y el shield junto,mira el link. Por lo tanto si que seria el mismo pero mucho mas barato,no?
En este caso serian version 2.5 es decir la misma que libelum pero diferente firmware.
Cual comprarias tu?
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pues entonces en Sparkfun has mirado el modelo Pro, ya que cuesta $25.95
Los módulos cuestan en casi cualquier lado lo mismo, donde más puede cambiar es en las shields

Yo lo compraría en http://www.nkcelectronics.com
La shield del xbee es aplilable no como la de seeedstudio o la oficial de Arduino y cuesta la mitad que la de Sparkfun.

Aunque si no te importa comprar los componentes por separado tienes la placa sin más del adaptador XBee que está casi regalada
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=19_21&products_id=298

Un saludo
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Pages: 1 [2] 3   Go Up
Jump to: