Domingo, 24 Marzo 2013 21:37

Comunicando el Arduino por wifi usando el XBee Shield + WiFly RN-XV

Escrito por 
Valora este artículo
(0 votos)

En esta ocasión vamos a ver como podemos conectar un módulo wifi a un Arduino.

Tenía en mente desarrollar algún sistema inalámbrico usando el Arduino y para ello pregunté a la gente de cooking-hacks que módulo sería mejor. Adquirí un módulo XBee Shield para poder colocar diferentes módulos de comunicación (wifi, bluetooth, radio, etc..) y para las primeras pruebas adquirí un módulo de Rovin Networks que es totalmente compatible con el shield de XBee.

Después de las pruebas he podido comprobar que este módulo funciona muy bien, es muy potente y tiene muchas funcionalidades. Os dejo el enlace por si os interesa verlo en detalle aquí.

El módulo se integra muy bien con el Arduino y se puede empezar a trabajar principalmente de dos forma con él. Una de ellas es programarle una configuración y otra es configurarlo en tiempo real desde el propio Arduino.

Al principio os aconsejo montarlo y utilizarlo sin el Arduino para ir familiarizándonos con él y para ello debemos seguir unos sencillos pasos.

Lo primero es que no nos podremos comunicar con el módulo WiFly si está por medio el Arduino ya que en este caso comparten el puerto serie. Solución, lo quitaremos de la placa :-)

ACTUALIZACIÓN

Ya no es necesario quitarlo de la placa ya que he descubierto que cargando en el Arduino un sketch vacío se puede acceder al WiFly directamente. El sketch es el siguiente:

void setup() { }

void loop() { }

funciona tanto para este shield como para el Wireless SD Shield. Puedes saltarte el paso de desmontar el micro de la placa.

Si aún así deseas desmontarlo o no te funciona el sketch anterior debes seguir las siguientes indicaciones:


demontando_arduino
Para ello, primero y muy importante acordarnos de la orientación del microprocesador y luego usando un destornillador plano y de manera muy suave haciendo palanca lo sacamos. En el caso de que el microprocesador venga directamente soldado en placa no podremos hacer las pruebas pero podremos igualmente programar el WiFly desde el propio Arduino.

Una vez extraído el micro podemos montar el WiFly en el XBee Shield


wifly_arduino
y montamos el shield en el Arduino sin el microprocesador.


modulo_wifi_montado
De esta manera la placa del Arduino y el shield harán la función de puente entre el ordenador y el módulo WiFly aunque nos queda un paso importante. El shield dispone de dos jumpers marcados como XBEE/USB. La posición XBEE es para que el microprocesador y el módulo se comuniquen entre sí, la posición USB hace que el módulo se conecte directamente con el puerto USB pero al compartir el RX/TX con el microprocesador es necesario quitarlo (que es lo que hemos hecho). Colocamos los dos jumpers en la posición USB y ya podemos conectar la placa Arduino con el ordenador.

Al conectarlo por primera vez el módulo WiFly intentará conectarse automáticamente a una red pero en nuestro caso lo haremos manualmente.

Para ello desde nuestro ordenador instalaremos el software que el fabricante suministra para la comunicación serie con el módulo WiFly llamado Teraterm (que es parecido al Hyperterminal pero que no recomienda usar el fabricante). Lo podéis descargar desde aquí.

Lo arrancamos, establecemos la comunicación por el puerto serie apropiado y debería salir algo así. Esto es el módulo intentando conectarse automáticamente.

 

 

Para entrar en modo comandos hay que enviar por el puerto serie la secuencia $$$

Al estar el ECO desactivado no veremos lo que escribimos y hay otro detalle importante. Si entre pulsación y pulsación pasan más de 250 ms el módulo interpretará estas pulsaciones como letras sueltas en lugar de la palabra de control. Ya sabéis, pulsad $ tres veces de manera rápida.

 

Si todo va bien, saldrá el texto CMD y estaréis en modo comando. El manual de usuario que podréis encontrar aquí (WiFly User Manual) dispone de multitud de comandos para juguetear un rato y os permitirán configurar muchísimos parámetros del módulo Wifi 

 

por ejemplo el comando "ls" muestra algunos ficheros que se encuentran dentro del sistema de archivos del módulo WiFly y podemos por ejemplo ejecutar el "wps" para invocar la aplicación para el modo WPS.

En el prompt aparece la versión del firmware instalado que en mi caso es la 2.30 (en la documentación hablan de la 2.32 por lo que tendré que destinar otro post para la actualización cuando averigüe como se hace ;-) 

Tambien podeis ver detalles de la versión del firmware instalado con la orden "ver". 

Un comando muy interesante para hacer pruebas es el comando "scan" con el que el módulo WiFly escaneará las redes wifi disponibles.

 

 

una vez que vemos nuestra red (en mi caso "ismcasa") vamos a pasar a configurar el WiFly para que se conecte a nuestra red. Para ello existen una serie de comandos para realizar esta tarea que podemos ver en el manual antes comentado aunque explicaré ahora los más importantes. 

Primeramente vamos a configurar el funcionamiento por dhcp para que dispongamos de una dirección ip de manera automática con "set ip dhcp 1" y configuraremos la forma en la que vamos a usar el protocolo IP con "set ip protocol 2" 

para el primer comando os dejo en la siguiente tabla las opciones que disponemos:

Mode Protocol

0 DHCP OFF, use stored static IP address

1 DHCP ON, get IP address and gateway from AP

2 Auto-IP, generally used with Adhoc networks

3 DHCP cache mode, Uses previous IP address if lease is not expired (lease survives reboot)

4 Reserved for future use

para elegir el tipo de protocolo ip tenemos que tener en cuenta que lo que se indica es la posición del bit que queremos activar por lo que el comando "set ip protocol 2" indica que activamos la posición 1 (en binario b0010) poniendo el módulo en tipo servidor y cliente TCP 

Bit Position Protocol

0 UDP

1 TCP Server & Client (Default)

2 Secure (only receive packets with IP address matches the store host IP)

3 TCP Client only

4 HTTP client mode

Una vez establecidos los parámetros ejecutamos "set wlan join 0" para que el WiFly deje de intentar conectarse automáticamente como lo hacía al principio, colocamos la clave WAP o WAP2 en este caso con "set wlan phrase " y ejecutamos "join ismcasa" para conectarnos a esa red. Si nuestra red es WEP usaremos "set wlan key ".

 

 

Si todo va bien veremos los anteriores mensajes que nos informan que todo está bien y cual es nuestra dirección IP. El led verde del WiFly comenzará a parpadear lo que indicará que está asociado a la red. Para comprobar que funciona, desde nuestro equipo podemos hacer un ping a esa IP y veremos como el WiFly nos contesta.

 

 

Si deseamos guardar la configuración podremos ejecutar la orden "save" y quedará ya configurado así la próxima vez con sólo hacer un "join SSID" nos conectaremos a la red Wifi.

Bueno, ya hemos jugado un poco con nuestro módulo WiFly, ahora toca apagarlo, montar el microprocesador y realizar todos los pasos anteriores pero esta vez desde un programa Arduino y que sea este el que configura el módulo y lo utiliza acordándonos de colocar los jumpers en la posición XBEE, pero esto, para el siguiente post. 

Visto 10259 veces Modificado por última vez en Miércoles, 07 Agosto 2013 14:29

¡Atención! Este sitio usa cookies y tecnologías similares.

Si no cambia la configuración de su navegador, usted acepta su uso. Saber más

Acepto