Programando el módulo Wifi ESP8266 con Arduino IDE

ESP-01 foto circuito con Arduino IDE

Qué es el ESP8266

El ESP8266 es un pequeño microcontrolador de Espressif, de bajo coste y con Wifi integrado. Su bajo coste y pequeño tamaño lo hace ideal para dotar de conectividad Wifi a cualquier sensor o actuador para el Internet de las Cosas. Además podemos programarlo utilizando Arduino IDE y muchas de las librerías que ya conocemos para Arduino, así que utilizarlo es muy fácil.

Qué necesitas

En este post voy a utilizar un ESP-01. Es el circuito más básico que incorpora un ESP8266, y con él podemos conectarnos a una red Wifi, actuar sobre dos pines digitales y comunicarnos por el puerto serie.

Para programarlo necesitamos un conversor USB-serie que funcione a 3.3V. Esto último es muy importante ya que el ESP8266 no tolera más de 3.6V en sus pines. Si tu conversor USB-serie no puede funcionar a 3.3V, como alternativa puedes usar un conversor de niveles TTL y una fuente de 3.3V.

Voy a conectarlo todo usando una breadboard y varios cables jumper (macho-hembra del ESP-01 a la breadboard, y macho-macho para las conexiones en la breadboard). Además para demostrar su funcionamiento voy a construir un circuito con un LED de 5mm y su resistencia, para lo que necesitaré un transistor NPN.

Arduino IDE 1.6.4 o superior. A partir de esta versión Arduino IDE permite instalar configuraciones adicionales para placas de terceros (no-Arduino) de forma muy sencilla.

Añadiendo soporte para placas de terceros en Arduino IDE

En Arduino IDE, vamos a Archivo > Preferencias y bajo “Gestor de URLs Adicionales de Tarjetas” añadimos la URL del ESP8266: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Arduino IDE gestor de URLs adicionales de tarjetas

Pulsamos OK, cerramos Arduino IDE y volvemos a abrirlo.

Ahora vamos a Herramientas > Placas > Gestor de tarjetas…

Arduino IDE Gestor de tarjetasSe nos abre una ventana con muchas tarjetas compatibles con Arduino que podemos usar con Arduino IDE. Si navegamos un poco hacia abajo encontraremos el SDK del ESP8266. También podemos teclear su nombre en el filtro para agilizar la búsqueda.

Arduino IDE instalar ESP8266Pulsamos instalar, y esperamos un poquito a que descargue los archivos y los instale. Cuando termine, tendremos que cerrar todas las ventanas de Arduino IDE y volver a abrirlo.

Ahora podemos seleccionar nuestro ESP8266. Para ello vamos a Herramientas > Placas y seleccionamos “Generic ESP8266”.

Arduino IDE selecciona placa ESP8266¡Ya podemos empezar a programar!

Conectando el ESP8266 y un LED

Pinout del módulo WiFi ESP-01Para comunicarnos con el ESP-01, necesitamos GND, los pines TX y RX del puerto serie y la alimentación (VCC). Estos pines los tenemos que conectar al conversor USB-Serie. Además el pin CH_PD debe estar conectado a VCC y, solo para la programación, el pin GPIO0 debe estar conectado a GND. Nuestro LED lo podemos controlar con GPIO0 o GPIO2, yo en este caso he elegido el primero.

ESP-01 conexion breadboard con LEDEl ESP8266 no puede manejar más de 12mA por pin, así que para conectar un LED de 5mm que funciona a 20mA es necesario utilizar un transistor externo que recoja toda esa corriente. En el circuito construido, cuando el pin GPIO0 se pone a nivel alto (3.3V) el transistor entra en saturación, dejando pasar la corriente desde el cátodo del LED a GND, mientras que a nivel bajo el transistor está en corte, impidiendo que por el LED circule corriente alguna. De este modo podemos hacer circular más de 12mA por el LED sin que pasen por el pin GPIO.

Programando el ESP8266 con Arduino IDE

En Arduino IDE, podemos abrir el ejemplo del LED parpadeando en Archivo > Ejemplos > 01.Basics > Blink, y cambiamos el pin 13 por el 0 que es el que hemos conectado al LED.

ESP-01 ejemplo blink ArduinoAsegúrate de que en Herramientras > Placa está seleccinada “Generic ESP8266” y que en Herramientras > Puerto está seleccionado nuestro puerto serie.

Para programarlo, necesitas desconectar un momento GPIO0 del circuito y conectarlo a GND. Después desconecta VCC y vuelve a conectarlo para resetear el ESP8266. Ahora puedes subir tu sketch a la placa.

ESP-01 subiendo sketch ArduinoCuando haya terminado de subir, vuelve a conectar GPIO0 y ya has subido tu primer sketch de Arduino al ESP8266 en la placa ESP-01.

¿Qué proyecto vas a hacer con tu ESP8266? ¡Cuéntanoslo en los comentarios!

¿No te funciona? Asegúrate de que en Arduino IDE has elegido el puerto serie correcto, que el ESP-01 está bien alimentado, de que el pin CH_PD está conectado a VCC en todo momento, que para programarlo has conectado GPIO0 a GND y que has desconectado y conectado de nuevo la alimentación antes de programar.

Si aun así no te funciona, puedes preguntar a nuestra comunidad maker en nuestro recién estrenado foro de Arduino. ¡Estaremos encantados de ayudarte!

5 Comentarios
  1. Imagen de perfil de gfweigand
    gfweigand 7 meses

    Hola @pablo,

    Al parecer la velocidad del puerto serie de la placa es importante para flashearla correctamente como dice ioting en su video https://youtu.be/NwkDKhC0M6M?t=6m24s

    Así que un flasher que no permite seleccionar la velocidad serie podría no funcionar en un alto porcentaje de casos, salvo en aquellos que, por casualidad, los baudios configurados en el ESP8266 coincidan con los del flasher. En el video que te he adjuntado más arriba muestra un flasher en el que se pueden seleccionar los 78440 baudios que tengo ahora mismo en mi ESP8266. Voy a intentar encontrarlo porque ioting.org ya no está operativo.

    Saludos.

  2. Imagen de perfil de gfweigand
    gfweigand 7 meses

    Lo probé y no funcionó. Da fallo de conexión. Tengo que probar con un conversor USB-Serie porque he leído por ahí que usando el Arduino para ese fin no funciona bien.

  3. Imagen de perfil de gfweigand
    gfweigand 7 meses

    Supongo que entonces los problemas de sincronización no tienen nada que ver con el baudrate. Menos mal.

    Probaré con la herramienta que me propones y utilizaré un conversor USB-serie a 3,3V a ver si tengo más suerte.

    Gracias @pablo

  4. Imagen de perfil de gfweigand
    gfweigand 7 meses

    ¿Se pueden cambiar los baudios de esta forma? Me explico. Tengo un módulo ESP8266 que no responde a los comandos AT y está configurado a 74880. Al resetearlo puedo ver la versión, la compilación, la fecha… pero no puedo enviarle comandos AT. He tratado de regrabar el firmware pero el flasher no admite la velocidad de 74880. Todo ello lo hago a través del Arduino UNO al que he desmontado el microcontrolador. Si pudiera cambiarle los Baudios a 115200 por ejemplo, podría regrabar el firmware y supongo que lo tendría solucionado.

Contesta

©2016 Fábrica Digital desde Jerez de la Frontera, España.

956 05 77 07 (llamadas) / 717 717 452 (Whatsapp) / hola@fabricadigital.org

De Lunes a Viernes de 10 a 14h y de 17 a 20h. Sábados de 10 a 14h.

Calle Manuel Yélamo Crespillo, Edif. Los Ramos, 11401 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account