ESP8266 – WiFi para microcontroladores

No tiene mucho que salió el integrado ESP8266. Este chip es una buena alternativa (y bastante economica) para poder incorporar WiFi a nuestros desarrollos.

Compré por ebay un modulo para probar. Rapidamente hay muchas variaciones del modulo (con antena, sin antena, de montaje superficial, con antena de chip, etc). La version que compre (ESP-01) tiene la antena incluida en el pcb.

Archivo 07-03-15 14 57 14

El módulo requiere una fuente de alimentacion de 3.3V, por lo que si necesitamos incorporarlo a algun diseño a 5V podemos recurrir a algun traductor de voltaje.

El pinout para esta version es la siguiente:

Archivo 07-03-15 14 58 11

*Nota acerca de los pines. El pin marcado como CE/-PD sirve para seleccionar el chip y tambien para mandarlo a bajo consumo, pero al salir de bajo consumo, se resetea automaticamente el circuito.

Para hacer las pruebas, use un convertidor de usb a serial (TTL) con el chip ft232rl.

Archivo 07-03-15 14 55 16

El diagrama de conexión es el siguiente:

Archivo 07-03-15 14 58 20

Usé un regulador de voltaje LF33CV por la razón de que el regulador interno del FT232 no proporciona la suficiente corriente y podemos dañar ambos circuitos.

El modulo viene con un firmware basico que establece la comunicacion serial a una velocidad de 115200bps, que es un poco complicado de implementar en microcontroladores de gama baja (avr, msp430, pic, etc.), pero en la computadora no hay problema.

Cuando encendemos el modulo, este saca un “boot log” a 74880bps, por lo que podemos recibir “basura” al principio, despues cambia al valor de 115200 y vemos cuando el modulo esta listo con un “ready”:

boot

Cuando cambiamos la velocidad a 74880bps, podemos identificar el “boot log” pero el “ready” se vuelve ilegible:

bootlog

Este “boot log” sirve para definir el estado del modulo.

Pero bueno, como mecioné, el firmware que viene por defecto, pone muy alta (115200bps) la velocidad de la uart del modulo. Para poder usar esto a velocidades mas decentes para microprocesadores como el AVR ó MSP430 es necesario actualizar el firmware

Actualizacion de firmware

Para este proceso es necesario cambiar un poco el diagrama de conexion:

Archivo 07-03-15 14 58 36

Cuando el GPIO0 se pone a ‘0’ y se enciende el modulo, este entra en modo de programacion.

Ademas del modo de programacion es necesario contar con las siguientes herramientas:

El programa esptool.py es un script que por medio del puerto serie, graba el firmware al modulo, este programa es de linea de comandos.

Una vez que conectamos el modulo en modo programacion y tenemos las herramientas listas, ejecutamos el programa con la siguiente linea:

esptool_py

En mi caso el ESP esta conectado al puerto serial COM10. Tarda un minuto en cargar el firmware…

Una vez que esta actualizado, el nuevo firmware libera nuevas funciones y hace correcciones a las anteriores que mejoran el desempeño del modulo, como el cambio de velocidad de comunicacion:

baudios

En las siguientes partes, muestro como se probó el modulo como “estacion” (el modulo se conecta a un access-point/router) en modo servidor y modo cliente, tambien se uso la forma “AP” (access-point) para que otros dispositivos se conecten al modulo ESP.

Modo “estacion”

Para probar las configuraciones use el programa “realterm”. El modulo obedece comandos AT. Pueden encontrar una buena referencia aqui. Por razones de mantener este post lo mas corto posible, ademas de que depende de la version de firmware, no haré muchos comentarios (de hecho, nada 😛 ) sobre los comandos AT.

Primero, en la siguiente imagen, se puede ver la secuencia de configuracion, cada comando se termina con un [CR+LF] (si se usa un “printf”en uart, seria un \r\n). Lo que se envia desde la PC esta de color verde y lo que responde el modulo esp esta en amarillo.

log1

Hasta aqui, el uso es incluso bastante intuitivo. Se puede ver como incluso el modulo puede mostrar una lista de redes que estan a su alcance. Y ahora podemos conectarnos:

log2

Podemos ver que el modulo soporta el dhcp, lo que simplifica mucho el proceso (tambien podemos establecerla estatica).

Incluso si apagan el modulo cuando esta conectado, al momento de encenderlo de nuevo, guarda en memoria la red a la que estaba conectado y se conecta de nuevo:

restore

Podemos hacerle “ping”

Archivo 07-03-15 14 56 16

Archivo 07-03-15 14 57 02

Pero lo importante es comunicarnos. Hay dos formas, en modo servidor y en modo cliente.

Modo servidor

Cuando esta en el modo estación, es como un elemento mas de la red (pc/tablet/celular), y podemos montar un servidor (poner a la escucha de un puerto TCP y que cada entrada de datos a ese puerto se vea reflejado en la uart). Con esto, nuestro microcontrolador podra saber si hay alguna conexión entrante, y el mensaje que llega. Es muy util cuando tenemos un sensor remoto y desde la PC queremos leerlo. Para hacer eso hice un pequeño programa en C# que trata de conectarse al modulo ESP8266 por el puerto 9999. En la imagen se ve como el modulo se configura para la escucha de ese puerto. La computadora se conecta al modulo, envia un mensaje y espera una respuesta; contestamos por el puerto serie y el modulo envia la respuesta al dispositivo conectado (programa en c#).

esp como servidor

Modo cliente

En este modo, el modulo es el que busca conectarse con otro elemento de la red. Tambien para probar hice otro programa en C# que se pone a la escucha en el puerto 20002 de la PC. El modo cliente puede ser conveniente cuando por ejemplo el cliente (el procesador con el modulo ESP) necesita alguna autorizacion, o bien reporta al servidor algun evento inesperado.

esp como cliente

Modo Acces Point (AP)

En este modo de operacion el modulo puede servir como un punto de acceso y permitir/negar el acceso a la red de datos de modulos. Este modo trabaja muy bien incluso tiene varias formas de seguridad de conexion (WPA2 PSK por ejemplo). Incluso pude conectar mi iPad 😛 sin problemas, lo que nos brinda nuevas oportunidades para aplicaciones mobiles que requieran generar su propia red de datos.

esp como AP

Archivo 07-03-15 14 57 44

Archivo 07-03-15 14 57 54

Archivo 07-03-15 14 57 24

Archivo 07-03-15 14 58 02

Archivo 07-03-15 14 57 33

En fin, en lo poco que pude probar el modulo, me parecio que tiene aplicaciones y alcances bastante interesantes. En cuanto tenga un proyecto con este modulo, lo pondre aqui sin dudas…

Espero esta informacion les ayude a saber si les conviene este tipo de comunicaciones para sus proyectos.

Sin mas por el momento…

Argos

Anuncios

15 pensamientos en “ESP8266 – WiFi para microcontroladores

    • Oh, siento la molestia por eso, podrías ayudarnos? Nos enviarías al correo de electronomadas[at] Gmail.com algún screenshot? Ya que de donde lo veo no me ha aparecido algún problema y nos gustaría que fuera lo más accesible para todos 😉 gracias por el feedback 😀

  1. Hola,
    Primero de todo muy interesante todo lo que comentas.
    Quiero configurar un modulo igual al de tu post, pero no consigo que me salga “ready” siempre sale basura, he cambiado bautrate pero nada, aliemento a 3,3 con fuente externa y atraves de IDE arduino.
    Alguna idea de lo que puede pasar?
    Un saludo

    • Puede ser que venga con alguna versión diferente de firmware, de hecho lo primero que hice al comprar el módulo fue “actualizarlo”. También puedes probar con un osciloscopio o un analizador digital para determinar la velocidad real de transmisión, o ya de plano probar con las velocidades que tengas disponibles en tu puerto serial.

  2. hola que tal, tengo una pregunta, lo que pasa es que estoy usando el siguiente modulo :HF-A21 para un proyecto de comunicación con un servidor privado. sabes como puedo hacerlo?

    • Hola.
      No tengo un módulo de esos a la mano, pero por lo que puedo ver no habría mucha diferencia con la mayoría de los módulos de wifi que hay en la actualidad (incluyendo el que tengo).

    • Las conexiones dependen de la necesidad, generalmente. Para hacer la conexión de cualquier módulo con algún servidor, hay que ver primero que tipo de conexiones acepta tanto el servidor como el módulo. Muy seguramente acepten tanto conexiones UDP como TCP (más seguro TCP), te recomendaría buscar más información con respecto a la mecánica de cómo se hace alguna aplicación cliente/servidor con ese tipo de conexiones, y de allí tratar de adaptar el código del cliente a funciones equivalentes para tu módulo.

  3. Hola , he programado este modulo con el IDE del arduino , hice pruebas para controlar un modulo de rele , y todo bien , sin embargo cuando conecto una carga a los contactos de rele el esp8266 deja de responder, en tus esquematicos veo que colocas un capacitor de 10 uF en la alimentacion del modulo , quizas eso me pueda ayudar con mi problema , me podrias brindar las caracteristicas del capacitor , voltaje , tipo , etc , muchas gracias

    • Él capacitor que se propone es un electrolitico de 10uF a 10V o más. También te recomiendo conectar en paralelo uno cerámico de 100nF que este lo más pegado al pin de Vcc del módulo ESP.

      No sé como este tu diagrama, pero también estaría bien que revisaras alguna técnica de interconexión de tierras, entre la tierra de potencia (relevador) y la tierra lógica (módulo ESP, microprocesadores, etc). O en su defecto algún circuito de protección para el relevador (pueden ser los clásicos diodos)

      Éxito en tu proyecto. Saludos…

      Argos.

      • Muchas gracias por la respuesta!!

        Le voy a dar una oportunidad, a ver hasta dónde llega.

        Lo quiero para acoplar un pic con un gps y enviar los datos del gps con el esp8266… así que cuanto más alcance tenga, mejor!!

        Saludos!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s