Estación meteorológica

Proyecto en el que a través de un barómetro y un termómetro se puede realizar una predicción del tiempo.

Arduino y Nokia 5110

Mediante un arduino y una pantalla de un Nokia 5110, se consigue crear cosas muy curiosas.

Tipos de Arduinos

Información acerca de los distintos Arduinos que podemos encontrar en el mercado.

Definiciones y Conceptos

Aquí se pueden aprender conceptos básicos sobre la plataforma Arduino.

Dónde adquirir productos (Proximamente)

En esta sección se podrá obtener información de las distintas páginas donde se puede comprar hardware.

domingo, 5 de mayo de 2013

Comunicación entre Arduinos mediante XBEE

Montaje

El módulo XBee de MaxStream prevé 2 formas amigables de comunicación: Transmisión
serial transparente (modo AT) y el modo API que provee muchas ventajas. Estos módulos
pueden ser configurados desde el PC utilizando el programa X-CTU o bien desde tu
microcontrolador. Los Xbee pueden comunicarse en arquitecturas punto a punto, punto a
multi-punto o en una red mesh.

Los módulos Xbee son económicos, poderosos y fáciles de utilizar. Algunas sus principales
características son:
  • Buen Alcance: hasta 300ft (100 mts) en línea vista para los módulos Xbee y hasta 1 milla (1.6 Km) para los módulos Xbee Pro.
  • 9 entradas/salidas con entradas analógicas y digitales.
  • Bajo consumo <50mA cuando están en funcionamiento y <10uA cuando están en modo sleep.
  • Interfaz serial.
  • 65,000 direcciones para cada uno de los 16 canales disponibles. Se pueden tener muchos de estos dispositivos en una misma red.
  • Fáciles de integrar.
Los módulos XBee son módulos de radio frecuencia que trabajan en la banda de 2.4
GHzcon protocolo de comunicación 802.15.4 fabricados por Maxstream.

Los módulos tienen 6 convertidores análogo-digital y 8 entradas digitales además de Rx
y Tx. Trabajan a 2.4 GHz y generan una red propia a la que puedes conectarte o
desconectarte. Entre otras características a tener en cuenta hay que decir que son
módulos microprocesados con lo cual tienes solucionados los problemas de fallo de
trama, ruidos, etc. Los módulos, se comunican con un dispositivo RS232 a niveles TTLcon lo
cual la comunicación necesita un adaptador intermedio en el caso de un PC, pero
pueden conectarse directamente a una placa de desarrollo como es Arduino.
Los módulos ofrecen una velocidad de comunicación desde 1200 hasta 115.200
baudios pasando por todos los valores convencionales, también disponen de varias I/O
que pueden ser configuradas para diferentes funciones.
Una vez explicado lo que es cada módulo lo siguiente será acoplarlo a nuestro Arduino
y empezar a configurarlos.

¿Qué es X-CTU?

En la imagen se puede observar la ventana del software X-CTU, con el cual se
programan los módulos XBee y XBee PRO de la manera más fácil, basta con hacer click
sobre cualquiera de los parámetros para introducir el valor deseado.



Para una mayor explicación de X-CTU, seguir el tutorial de Álvaro Neira Ayuso:

Comandos AT y Cómo configurar

A pesar de tener la comodidad del programa X-CTU, hemos decidido programar los
nodos mediante comandos AT.
Hay múltiples parámetros que necesitan ser configurados correctamente para que los
módulos puedan comunicarse entre ellos. Necesitan estar en la misma red (ID), mismo
canal (CH) y conocer la dirección destino de cada módulo (DH y DL). Esto último puede
aparecer de varias formas:
  • Si el DH de un módulo es 0 y su DL es menor de 0xFFF, los datos transmitidos por ese módulo serán recibidos por cualquier módulo cuyos 16 bits de dirección de lparámetro MY sea igual al DL.
  • Si el DH es 0 y el DL es igual a 0xFFFF, las transmisiones del módulo serán recibidas por todos los módulos.
  • Si el DH no es cero o el DL es mayor de 0xFFFF, la transmisión solo será recibida por el módulo cuyo número de serie sea igual a la dirección de destino del módulo transmisor. Por ejemplo. cuyos SH es igual al DH del módulo transmisor y cuyo SL sea igual a su DL).
Todas estas correspondencias sólo funcionaran si los nodos están en la misma red y en el
mismo canal.

Aquí hay algunos de los parámetros más útiles para configurar un módulo. Siempre
antes de cada comando hay que escribir AT antes de enviarlo. Por ejemplo si vamos a
cambiar el ID de un nodo sería:

+++ (Y esperar a que devuelva OK), y luego ATID3332 (volver a esperar a que
devuelva OK, y se habrá cambiado el ID de nuestro módulo.
“0x” indica que los valores son hexadecimales, pero a la hora de indicarlos en los
parámetros no hay que ponerlos.

Comando
Descripción
Valores válidos
Valor por defecto
ID
El ID de la red del módulo Xbee.
0 - 0xFFFF
3332
CH
El canal del módulo Xbee.
0x0B - 0x1A
0X0C
SH y SL
El número serie del módulo Xbee (SH devuelve los 32 bits superiores, SL los 32 inferiores). De solo-lectura
0 - 0xFFFFFFFF 
(para ambos SH y SL)
diferente para cada módulo
MY
La dirección de 16-bit del módulo.
0 - 0xFFFF
0
DH y DL
La dirección de destino para las comunicaciones inalámbricas (DH son los 32 bits superiores, DL son los 32 inferiores).
0 - 0xFFFFFFFF 
(para ambos DH y DL)
0 (para ambos DH y DL)
BD
La velocidad de transmisión usada para las comunicaciones con el Arduino o el ordenador.
0 (1200 bps) 
1 (2400 bps) 
2 (4800 bps) 
3 (9600 bps) 
4 (19200 bps) 
5 (38400 bps) 
6 (57600 bps) 
7 (115200 bps)
3 (9600 bps)


Otros comandos útiles son:

Comando
Descripción
RE
Restaura los valores por defecto (notar que como el parámetro cambia, esto no es permanente a no ser que está seguido por el comando WR).
WR
Escribe un nuevo valor para un parámetro configurado a la memoria no volátil (larga-duración). De otro modo, solo durarán hasta que el módulo sea desconectado de la corriente.
CN
Sale del modo de comandos. (Si no mandas ningún comando a un módulo durante unos pocos segundos, el modo de comandos saldrá tras un tiempo incluso sin el comando CN).

Configuración de cada nodo

Para nuestro desarrollo hemos tenido que configurar únicamente dos nodos. Para ellos hemos introducido los siguientes comandos a través del puerto serie con nuestro Arduino SIN microcontrolador.

Nodo 1:
ATID1111 para configurar que su red ahora será la 1111, y éste devolverá OK.
ATMY1234, cambiará su identificador a 1234 y devolverá OK.
ATDH0 y ATDLFFFF, configurará qué nodo es el destinatario de su información y en este caso será toda la red, ya que el modo es broadcast.
ATWR, para guardar los cambios realizados.
ATCE1, para poner el nodo en modo Emisor.
ATCN para finalizar la configuración.

Nodo 2:
ATID1111 para configurar que su red ahora será la 1111, y éste devolverá OK.
ATMY4567, cambiará su identificador a 4567 y devolverá OK.
ATDH0 y ATDLFFFF, configurará qué nodo es el destinatario de su información y en este caso será toda la red, ya que el modo es broadcast.
ATCE0, el nodo se configura en modo receptor aunque también puede mandar datos.
ATWR, para guardar los cambios realizados.
ATCN para finalizar la configuración.

Todo esto creará este un sistema de comunicación entre los arduinos pudiendo así transmitirse los datos desde un nodo a otro.