logo

Wifi_Arduino

Hola amigos!

El equipo de Arduteka quiere dar la bienvenida a “Ilde”, un nuevo colaborador en Arduteka que se estrena ni más ni menos, que con un fabuloso tutorial acerca de cómo configurar nuestro módulo Wifi de Roving Networks para trabajar con Arduino, lo que amplía aún más las posibilidades de nuestro pequeño amigo!

Enhorabuena por este fabuloso trabajo, y bienvenido a la familia de Arduteka!!

Si más, os dejamos con este tutorial que esperamos que ayude a muchos a solucionar sus dudas! Pero si os queda alguna, os recordamos que ya tenemos abierto el foro de Arduteka, donde podéis plantear vuestras dudas, y el equipo de Arduteka intentará solucionarlas lo antes posible.

Arduteka Team – Bienvenido Ilde,

El proporcionar a nuestro Arduino de la capacidad de poder comunicarse con el exterior sin usar ningún tipo de cable es una de las mayores funcionalidades que le podemos proporcionar a nuestros diseños.

Para ello adquirí en primer lugar el módulo XBee Shield para poder colocar diferentes módulos de comunicación (wifi, bluetooth, radio, etc..) y para las primeras pruebas me decidí por un módulo de Rovin Networks que es totalmente compatible con el shield de XBee, el módulo RN-XV.

wifly_1


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 RN-XV es mi caso).

El módulo se integra muy bien con el Arduino y se puede empezar a trabajar principalmente de dos formas 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 micro de Arduino ya que en este caso comparten el puerto serie. Solución, lo quitaremos de la placa :-)

Para evitar esto, he encontrado un par de soluciones para no quitarlo de la placa. Podemos colocar un puente entre GND y Reset, por lo que quedará inhibido el micro, o bien,  cargamos en el Arduino un sketch vacío, lo que nos permitirá que se acceda a la configuración de WiFly directamente.

El sketch es el siguiente:

void setup() { }

void loop() { }

Funciona tanto para este shield como para el Wireless SD Shield.

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

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 (o siguiendo el procedimiento anterior de programar el Arduino con el sketch vacio).

desmontando_arduino

Una vez extraido el micro podemos montar el WiFly en el XBee Shield

arduino_wifly

y montamos el shield en el Arduino sin el microprocesador.

wifly_montado_arduino

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.

Aún 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 la red wifi que tenga configurada por lo que deberemos configurarla de manera manual al menos una vez para que cuando arranque se conecte a nuestra red automáticamente.

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 podeís descargar desde aquí (buscad por Teraterm).

Lo arrancamos, establecemos la comunicación por el puerto serie apropiado donde tengamos conectado nuestro Arduino y debería salir algo así.

p1

Esto es el módulo intentando conectarse automáticamente.

Para entrar en modo comando y así poder programar el módulo 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.

p2

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

p3

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 (os dejo aquí la referencia por si no tenéis muy claro en que consiste este estándar).

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 en otro post os contaré como actualizarlo.

También podéis 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.

p4

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

 

p5

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 “.

p6

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.

p7

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.

Os recuerdo que lo que hemos hecho es programar nuestro módulo wifi a mano, lo ideal sería que una vez montado en el shield del Arduino, este le fuese enviando los comandos anteriores para así configurarlo a nuestro gusto y que fuese nuestro programa el que realiza la configuración del mismo.

n siguientes entradas veremos como configurarlo desde un sketch y como conectarnos a Internet para intercambiar información con otros servidores o dispositivos. Hasta entonces no dejéis de investigar!!

Pablo Murillo. Técnico electrónico apasionado por la tecnología y el mundo de la impresión 3D. Comprometido en difundir el movimiento maker en cualquiera de sus vertientes. Fundador de Arduteka.com Colaborador en Arduino.cc

Déjanos un comentario!

*

captcha *