miércoles, 23 de mayo de 2012

Módulos de Arduino

Shields de Arduino



Los shields son placas que se colocan encima de la placa Arduino y que amplían una nueva función para que sea controlada desde Arduino, para controlar diferentes aparatos, adquirir datos para después procesarlos por la PC, etc.

Algunos compañeros de clase usaron algunos shields, la mayoría usaron el shield de Xbee. 

En esta entrada haré mención de algunos shields que se pueden montar a una placa Arduino.
.


Xbee Shield

 

Introducción

 

La Xbee shield permite a una placa Arduino comunicarse de forma inalámbrica usando Zigbee. Está basada en el módulo Xbee de MaxStream. El módulo puede comunicarse hasta 100ft (30 metros) en interior o 300ft (90 metros) al aire libre (en visión directa). Puede ser usado como reemplazo del puerto serie/usb o puedes ponerlo en modo de comandos y configurarlo para una variedad de opciones de redes broadcast o malladas. La shield tiene pistas desde cada pin del Xbee hasta un orificio de soldar. También provee conectores hembra para usar los pines digitales desde 2 hasta 7 y las entradas analógicas, las cuales están cubiertas por la shield (los pines digitales de 8 a 13 no están cubiertos por la placa, así que puedes usar los conectores de la placa directamente).
La Xbee shiel fue creada en colaboración con Libelium, quienes la desarrollaron para usarlo en sus SquidBee motes (usados para crear redes de sensores).

 

Configuración de los jumpers



La Xbee shield tiene dos jumpers (las pequeñas fundas de plásticos que están sobre los tres pines etiquetados como Xbee/USB). Estos determinan como se conecta la comunicación serie del Xbee entre el microcontrolador (Atmega8 o ATmega168) y el chip serie FTDI de la placa Arduino.
Con los jumpers en la posición Xbee (e.g. en los dos pines más cercanos al interior de la placa), el pin DOUT de el módulo Xbee está conectado al pin RX del microcontrolador; y el pin DIN está conectado a TX. Notar que los pines RX y TX del microcontrolador están todavía conectados a los pines TX y RX (respectivamente) del chip FTDI - los datos enviados desde el microcontrolador serán transmitidos al ordenador vía USB y a la vez enviados de forma inalámbrica por el módulo Xbee. El microcontrolador, sin embargo, solo será capaz de recibir datos desde el módulo Xbee, no desde el USB del ordenador.
Con los jumpers en la posición USB (e.g. en los dos pines más cercanos al borde de la placa), el pin DOUT del módulo Xbee está conectado al pin RX del pin del chip FTDI, y el DIN del módulo Xbee está conectado al pin TX del el chip FTDI. Esto significa que el módulo Xbee puede comunicarse directamente con el ordenador - sin embargo, esto solo funciona si el microcontrolador ha sido quitado de la placa Arduino. Si el microcontrolador se deja en la placa Arduino, solo será capaz de comunicarse con el ordenador vía USB, pero ni el ordenador ni el microcontrolador podrán comunicarse con el módulo Xbee.



Redes



La Arduino XBee shield puede ser usada con diferentes módulos XBee. Las instrucciones a continuación son para los módulos XBee 802.15.4.



Direccionamiento



Hay múltiples parámetros que necesitan ser configurados correctamente para que dos módulos puedan comunicarse entre ellos (de todos modos con la configuración por defecto, todos los módulos deberían ser capaces de hablar unos con otros). Necesitan estar en la misma red, definida por el parámetro ID (ver "Configuración" a continuación para más detalles sobre los parámetros). Los módulos necesitan estar en el mismo canal, definido por el parámetro CH. Finalmente, la dirección de destino de un módulo (parámetros DH y DL) determina que módulo en esa red y canal recibirá los datos transmitidos. Esto puede suceder de las siguientes formas:
  • Si el DH de un módulo es 0 y su DL es menor de 0xFFF (e.g. 16 bits), los datos transmitidos por ese módulo serán recibidos por cualquier módulo cuyos 16 bits de dirección del pará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 (e.g. cuyos SH es igual al DH del módulo transmisor y cuyo SL sea igual a su DL).
De nuevo, esta correspondencia de direcciones solo sucederá entre módulos en la misma red y canal. Si dos módulos están en diferentes redes o canales, no podrán comunicarse sea cual sea sus direcciones. 


Estos son unos cuantos comandos útiles para configurar el módulo Xbee (necesitarás anteponer AT). 


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ían hasta que el módulo sea desconectado de la corriente.
CN Sale del modo de comandos. (Si no mandas ningún comando a él módulo durante unos pocos segundos, el modo de comandos saldrá tras un tiempo incluso sin el comando CN).



Arduino Ethernet Shield

 

 
 
 



Este shield también fue usado por algunos compañeros de clase de Cómputo Integrado y Dispositivos Móviles.

La Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Está basada en el chip ethernet Wiznet W5100. El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Soporta hasta cuatro conexiones de sockets simultáneas. Usa la librería Ethernet para escribir programas que se conecten a internet usando la shield.



La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino.
Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet shield. Estos pines no pueden ser usados para e/s genéricas.
La shield provee un conectore ethernet estándar RJ45
El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.
La shield contiene un número de LEDs para información: 

  • PWR: indica que la placa y la shield están alimentadas

  • LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos

  • FULLD: indica que la conexión de red es full duplex

  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)

  • RX: parpadea cuando la shield recibe datos

  • TX: parpadea cuando la shield envía datos

  • COLL: parpadea cuando se detectan colisiones en la red

El jumper soldado marcado como "INT" puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.


Bueno, como ya algunos saben, yo estuve trabajando en mi proyecto de la casa inteligente (módulo de ilumincación), así que intenté hacer mi propio módulo para Arduino :p.

Puse a mi tarjeta electrónica pines para poder ensamblarla sobre el Arduino, pero debido a las características de mi tarjeta no quise montarla para evitar cortos circuitos o que la alta tensión de mi tarjeta (110v) pase al Arduino y se dañe.


Les adjunto algunas imágenes de mi módulo, contiene el circuito de potencia para activar los focos que son alimentados con un voltaje de 110v (127v en realidad).

 





El espació donde están conectados los cables que salen del plástico gris es un puente de conexiones similar al de Arduino, terminé poniendo ese puente debido a las características de mi proyecto que comenté anteriormente, si ponía una hilera de pines para ensamblarlo al Arduino corría el riesgo de unir la parte del circuito de potencia con el circuito de control y el alto voltaje dañaría la placa Arduino.







En esta última foto se puede ver la modificación que hice en mi tarjeta para poder comunicarme con Arduino, esos cables verdes (con blanco) y naranjas llevan los estados de switcheo de los focos y también la polarización del circuito de potencia (respectivamente).

Me hubiera gustado ensamblar mi tarjeta sobre Arduino pero corría mucho riesgo debido a las características de mi proyecto antes mencionadas.


 





Saludos!




 

1 comentario: