Mi primer acercamiento al modulo WiFi ESP8266

ESP8266_modulos

Esta es la primera parte de nuestra Guía de ESP8266, si deseas verla  completa usa el link

Desde hace tiempo en hackaday se dio a conocer un pequeño modulo wifi chino muy económico, pero con mucho potencial el denominado ESP8266 a causado mucho furor en la comunidad y no me quede con las ganas de mandar pedir un par de estos interesantes módulos que la comunidad a acogido muy bien y a estado desarrollando bastante documentación a base de experimentación.

¿Pero que tiene de especial este modulo?

  • Bajo costo alrededor de $5 Dolares (yo calculo aquí a México llegaran en unos 80 pesos)
  • Fácil uso vía comandos AT
  • Pines GPIO disponibles para programación (puedes encender un led sin requerir un microcontrolador)
  • Liberación del SDK
  • Una gran comunidad que esta experimentando
  • It’s a wireless SoC
  • It has GPIO, I2C, ADC, SPI, PWM and some more
  • It’s running at 80MHz
  • It has a Winbond W25Q40BVNIG SPI flash
  • It’s a RISC architecture
  • The core is a 106micro Diamond Standard core (LX3) made by Tensilica
  • The ESP8266 chip is made by Espressif
  • Modules bearing this chip are made by various manufacturers
  • 802.11 b/g/n protocol
  • Wi-Fi 2.4 GHz, support WPA/WPA2
  • Super small module size (11.5mm x 11.5mm)
  • Integrated 10-bit ADC
  • Integrated TCP/IP protocol stack (ipv4 only at the moment)
  • Integrated TR switch, balun, LNA, power amplifier and matching network Integrated PLL, regulators, and power management units
  • +20dBm output power in 802.11b mode
  • Supports antenna diversity
  • Deep sleep power <10uA, Power down leakage current < 5uA
  • Integrated low power 32-bit MCU
  • SDIO 2.0, SPI, UART, I2C
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4μs guard interval
  • Wake up and transmit packets in < 2ms
  • Standby power consumption of < 1.0mW (DTIM3)
  • Operating temperature range -40C ~ 125C

La semana pasada me llegaron estos módulos, pero no fue hasta el día de ayer por la noche que me puse a jugar, desde hace tiempo he seguido el avance de la documentacion en el foro de la comunidad ESP8266 vi las primeras traducciones del chino al ingles, las primeras “bibliotecas para Arduino”, los primeros proyectos desarrollados y la tan reciente liberación del SDK por parte del fabricante, pero hasta apenas ayer empece a meter mis primeros comandos AT.

Lo primero es identificar que modulo tienes ya que hay varias versiones, la principal diferencia entre uno y otro es la disponibilidad de pines

module_v1

ESP-01 versión 1

ESP8266_module_v2

ESP-01 versión 2

En este caso yo tengo la versión 2 del ESP-01 solo tengo el GPIO0 y GPIO2 disponible para controlar, pueden ver otros modelos de en la Wiki y elegir la que mas les convenga o tengan.

Material:

Para hacer las siguientes pruebas yo voy a usar el siguiente material:

  • Arduino Uno
  • Cables Macho- Hembra y Hembra-Macho
  • Convertidor USB-Serial (FTDI) en este caso de Adafruit.
Conexión

Ok, después de identificar nuestro chip hay que ver si funciona, vamos a conectar nuestro chip ATENCION!! el voltaje de alimentación es a 3.3v tener cuidado si no queremos dañar nuestro modulo, en el caso de los pines TX y RX del chip son tolerantes a 5 volts así que bien podemos conectarlo a un Arduino y no tener problemas.

Pin Name Description
1 GND Tierra
2 U0TXD UART0 Transmision (Tolerante a 5 volts)
3 GPIO2 Has internal pull-up
4 CHIP_EN Chip Enable, se activa en alto
5 GPIO0 Has internal pull-up
6 EXT_RSTB External reset signal, active low, has no pull-up? Spurious blue LED activity when attaching a DMM between GND and RST to check voltage.
7 U0RXD UART0 Receive, has internal pull-up (Tolerante a 5v)
8 VDD +3.3V entrada de alimentación

En este caso voy a conectar el chip a los 3.3 volts de alimentación ya que mi adaptador USB-Serial esta trabajando a 5 volts

ESP8266_Serial_basica

3.3v ESP8622 —> 3.3v Arduino

GND ESP8622 —> GND Arduino –> GND FTDI

RX ESP8622 —> TX FTDI

TX ESP8622 —> RX FTDI

CH_PD —-> 3.3v Arduino

Al tener todo correctamente y alimentar el circuito al ver en nuestras redes inalambricas nos debe aparecer algo así

ESP8266_1

En mi caso al inicio no sabia que el pin CH_PD debía estar en alto, lo tenia al aire y al inicio no me parecía la red inalambrica, después de ponerlo a 3.3 volts funcionó, tener cuidado en esos detalles.

Excelente ya tenemos trabajando nuestro modulo, ahora es momento de tratar de comunicarnos con el por medio de los comados AT, para esto voy a usar el monitor serial que incluye el IDE de Arduino, ustedes pueden usar el que quieran. para saber si nuestro modulo nos escucha tecleamos y enviamos

AT

y debe responder “OK”, para saber la versión de nuestro firmware

AT+GMR

En este caso tenemos la versión 0.9.1

ESP8266_2

En mi chip no estaba trabajando muy bien y leí en algunos foros que algunas versiones de firmware tenían este problemas, así que me decidí a flashearlo a la ultima versión de firmware 0.9.2 que encontré en electodragon. (Actualmente ya lo subi a la versión 0.9.3 que ya esta disponible)

Para subir firmware al modulo, configurar los pines de la siguiente manera:

Pin Level Description
CH_PD High Enables the chip (Habilita chip)
GPIO0 Low Selects UART download boot mode
GPIO2 High Selects UART download boot mode
GPIO15 Low Si esta disponible. Seleccion UART descarga boot mode (modo boot)

En mi caso solo coloqué el GPIO0 a GND y el GPIO2 a 3.3v y volví a alimentar el circuito con eso ya esta el chip en modo boot, para cargar el firmware hay varias herramientas disponibles pero en esta ocasión utilice Flasher del cual les dejo el link mas adelante (actualmente ya estoy utilizando ESPTOOL en linux, también se puede usar en windows).

Seleccionamos la imagen que queremos cargar a nuestro ESP, seleccionamos el COM al que tenemos conectado nuestro FTDI y presionamos el botón de Download

ESP8266_flash1

Como vemos el programa empieza a borrar y escribir en la memoria del chip y nos indica el porcentaje de avance, ademas cuando a terminado

ESP8266_flash2

Ahora que termino apagamos el circuito, desconectamos los GPIO0 y GPIO2, volvemos a energizar el circuito, abrimos nuestro monitor serial enviamos el comando “AT” y recibimos un “OK”, ahora verificamos la versión de nuestro firmware AT+GMR y nos dice que es la 0.9.2 😀

ESP8266_flash3

Otros comando como

AT+CWLAP

Nos muestra los puntos Wifi cercanos y nos responde con los siguientes parámetros (conocidos):

<Ecn> 0 OPEN

1 WEP

2 WPA_PSK

3 WPA2_PSK

4 WPA_WPA2_PSK

<Ssid> Un string con el nombre del access point

<Rssi> Rango de Señal

<Mode> 0  coneccion manual

una coneccion automática

ESP8266_Arduino2

Igualmente si quieren probarlo con Arduino les dejo un ejemplo en mi repositorio donde estaré experimentando con este genial dispositivo, el circuito es el mismo del ejemplo que podemos encontrar en la pagina de SeedStudio

ESP8266_Arduino En este ejemplo se usa un Arduino UNO y la libreria software para tener dos puertos seriales a nuestra disposicion, el ejemplo hace una verificacion de arranque del ESP8266 y como prueba una peticion a una pagina conocida.

ESP8266_Arduino1

Eso es todo por el momento para iniciar con este modulo, luego realizare un post para explicar como generar tu propio firmware y poder usar este modulo sin requerir un microcontrolador que es de las cosas mas interesantes de este chip.

Saludos Inventores!!

Repositorio de ejemplo con Arduino: https://github.com/sabas1080/ESP8266

Firmware 0.9.2.2: https://docs.google.com/file/d/0B3dUKfqzZnlwdUJUc2hkZDUyVjA/edit

Herramienta Flasher: https://docs.google.com/file/d/0B3dUKfqzZnlwVGc1YnFyUjgxelE/edit

14 opiniones en “Mi primer acercamiento al modulo WiFi ESP8266”

      1. buenas tardes, yo tengo el mismo problema me regresa exactamente lo mismo que envío, ya probé con todos los firmware disponibles y pasa lo mismo, me podrias asesorar?, gracias

    1. DEspues de rato andar buscando solución a que no me respondia “ok” detcté gracias a un osciloscopio que la entrada RX del esp tiene voltage y existe un pequeño corto cuando se le conecta el TX del convertidor usb-serial. así que con solo poner una resistencia de aprox 2.2k a tierra se olvidó el problema.

  1. Buenos días Esta es la primera vez que utilizo arduino y también estas tarjetas. Me podrias decir como se hace para enviar parámetros (Valores) a una pagina web.
    Tengo un sitio local en me maquina es localhost:82/Default.aspx?elvalor=1 lo que quiero es poder mandar este link al web site haciendo un post pero no me funciona el website si funciona bien porque al ponerlo en google si me hace las opciones que tiene programada la pagina pero al mandarlo desde el realterm me responde Ok pero no se ejecutan las opciones del web como que no enviar toda la cadena

    Este es el post que envio
    POST /arduino/default.aspx HTTP/1.1\r\nHost: 192.168.1.76\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 8\r\n\r\n ?boton=1\r\n\r\n

    Espero y pueda ayudarme

  2. saludos: soy profesor de automatización, tengo ya 18 días.. tratando de echar a funcionar un esp8266- 01, le comente a otros profesores y solo me dijeron que en foros estaba muy fácil… ya trabajo con bluetooth, y otros dispositivos, tengo 4 alumnos que todos compraron este wifi, hemos seguido aproximadamente 8 videos de YouTube y foros, con diferentes conexiones ,, y no responde los comandos AT… este foro ya lo seguimos al pie de la letra y nada,,, donde lo compramos el wifi, preguntamos si alguien ya lo hecho a jalar ,, y cobra 500.00 pesos ya funcionando, pero no nos dice como le hicieron.. seguiremos intentando , diariamente nos juntamos de 3 a 5 de la tarde, ya que nos urge en nuestros proyectos. si tuvieran algún manual de paso a paso agradecemos mucho.

    1. DEspues de rato andar buscando solución a que no me respondia “ok” detcté gracias a un osciloscopio que la entrada RX del esp tiene voltage y existe un pequeño corto cuando se le conecta el TX del convertidor usb-serial. así que con solo poner una resistencia de aprox 2.2k a tierra se olvidó el problema.

  3. Buenas tardes, tengo muy poco conocimiento en este mundo pero cada dia aprendo algo nuevo.
    Compre un ESP-12-Q modulo wifi con ESP8266 y tambien compre el modulo programador, me podrias ayudar a configuralo para ver las redes y ponerlo a prender un led por lo menos.

    Agradezco la atención.

  4. Consulta?
    Hay alguna manera con arduino de detectar que una macde wifi determinada esta cerca del arduino o esta conectada??
    Me interesaria para utilizarlo como sensor de presencia.

  5. DEspues de rato andar buscando solución a que no me respondia “ok” detcté gracias a un osciloscopio que la entrada RX del esp tiene voltage y existe un pequeño corto cuando se le conecta el TX del convertidor usb-serial. así que con solo poner una resistencia de aprox 2.2k a tierra se olvidó el problema.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *