Esp 8266
Esp 8266
ESP8266
programarfacil.com/
Desde que irrumpi el ESP8266 en el mercado, han surgido muchas variantes de este microcontrolador. En el
podcast puedes escuchar el captulo que dedicamos al ESP8266 donde hablamos de las diferentes alternativas.
Quizs el ms famoso entre los Makers sea el ESP01 debido a que fue el primero y a su bajo coste . De este
precisamente voy a hablarte hoy en este artculo.
La primera vez que compr un Arduino UNO, qued fascinado al encender un simple LED. Tras varios aos
haciendo proyectos, me entr la curiosidad y empec a investigar las posibilidades que nos ofrece Arduino
conectado a una red o Internet.
Rpidamente me compr un Shield Ethernet y la verdad, funciona muy bien. La gran pega es que tiene que
tener una toma de red cerca para que se conecte. Una alternativa para evitar esto es comprar un Shield WiFi,
pero el precio tira para atrs. Cuesta 4 veces ms que la propia placa de Arduino, no tiene sentido.
Indice de contenidos
De repente, descubr que una empresa de China haba sacado un mdulo WiFi de muy bajo coste y que
permita conectarse a un Arduino UNO a travs de l. Este mdulo era el ESP-01 y la empresa Espressif.
Cuando lo compr estaba en una etapa muy temprana sin apenas documentacin y muy complicado de
programar.
Tras unas semanas probando y congurando lo met en un cajn donde ha permanecido mucho tiempo. Su
dicultad a la hora de utilizarlo con Arduino era mxima y no mereca la pena.
Con el tiempo ha ido evolucionando y en la actualidad se puede utilizar como un mdulo autnomo sin
necesidad de utilizarlo con Arduino es decir, como si fuera un Arduino. Hay que recordar que el ESP8266 es un
microcontrolador y como tal, puede hacer las mismas funciones que un Arduino UNO. Eso si, tiene sus
limitaciones.
Por defecto, en el ESP01 viene instalado la versin con la que podemos comunicar con el ESP8266
mediante comandos AT a travs del puerto serie. No voy a entrar muy en detalle que son estos comandos, lo
nico es decir que fue creado por la compaa Hayes y se convirti en un estndar para la conguracin y
parametrizacin de modems.
Este tipo de comunicacin nos permitir hacer un puente entre Arduino y el ESP8266. De esta manera
conseguimos que un Arduino UNO se conecte a una red WiFi. Puedes obtenerlo en la web ocial de Espressif.
2/23
ESP8266 es el microcontrolador del mdulo ESP01.
Pines donde conectaremos la alimentacin, sensores y transmisin de programa.
BG25Q80A es la memoria Flash donde residen los programas o sketchs. El ESP8266 no dispone de este
tipo de memorias y por eso es un chip a parte.
LEDs que nos informan de si est encendido o no y de la transmisin de datos (Tx y Rx).
La antena WiFi para conectarse a una red o a Internet.
Como puedes comprobar, no tenemos ningn pin analgico y solo 4 pines digitales GPIO0, GPIO1, RXD y
TXD. Estos dos ltimos funcionan como pines I/O siempre y cuando el programa que carguemos a la placa no
utilice esta caracterstica por ejemplo, para mostrar informacin a travs del monitor serie.
An as, el ESP01 soporta la comunicacin I2C. Si nuestros sensores se comunican mediante este protocolo no
tendremos problema y con solo dos pines de nuestro ESP01 , podremos comunicar con decenas de
3/23
sensores.
Por ltimo, con respecto a los pines digitales o GPIO , es importante recalcar que funcionan a 3,3 V es decir,
un estado alto (HIGH) ser 3,3 V. Los pines RXD y TXD cuando funcionan para comunicar mediante puerto serie
tambin utilizan este voltaje. Luego veremos como sortear esto si lo conectamos a un Arduino UNO para
programarlo.
Existen diferentes posibilidades para alimentar el ESP01. Vamos a ver las ventajas e inconvenientes que
presentan cada una de estas posibilidades.
Arduino UNO tiene dos pines de alimentacin dentro del bloque destinado a alimentar sensores y actuadores.
Puede suministrar 5 V y 3,3 V. Seguramente ests pensando alimentar el ESP01 con el pin de 3,3 V que est
en el rango de operacin del ESP8266.
Efectivamente estamos dentro del rango de voltaje. El inconveniente es que este pin solo suministra un
mximo de 50 mA. Esto supone que en ocasiones puede quedarse corto, sobre todo cuando estamos
haciendo un uso intensivo de la WiFi.
4/23
Por lo tanto, alimentar un ESP01 basado en el ESP8266 con un Arduino UNO no es una buena opcin .
Puedes hacerlo y probablemente te funcionar en muchos casos, pero llegar un punto en que deje de
funcionar.
Quizs me est adelantando a lo que vendr despus, cmo programar un ESP01. Gracias a un adaptador
USB-Serie o tambin llamados TTL, podemos programar un ESP8266 o podemos alimentarlo.
Muchos de los sensores y componentes que vamos a utilizar necesitan 5 V. Por ejemplo el sensor de
temperatura LM35 o el sensor de ultrasonidos.
Existen muchas marcas y modelos en el mercado. La que yo voy a utilizar es la MB102 de YwRobot. Casi
todas suministran entre 700 y 800 mA, ms que suciente para alimentar el ESP01 y los sensores.
Lo primero es ver cmo congurar la fuente para que nos de 3,3 V, lo que necesitamos para alimentar el ESP01.
Este tipo de fuentes de alimentacin para electrnica tiene la particularidad que suministran 3,3 V y/o 5 V.
Tiene dos salidas de potencia colocadas en los extremos y dependiendo de cmo coloquemos el jumper
suministrar un voltaje u otro.
Lo primero es colocar la placa en la protoboard. Debemos encajar 8 pines, 4 por cada lnea de potencia.
6/23
Para elegir el voltaje tenemos unos jumpers qie segn los coloquemos, suministrar 3,3 V y 5 V. Lo ms
prctico es tener una lnea con 3,3 V y otra con 5 V.
7/23
Conectando el ESP01 a la protoboard
Ya tenemos todo listo y podemos alimentar el ESP01 con la fuente de alimentacin. Utilizaremos la lnea que
est suministrando 3,3 V. Debes tener un cable macho-hembra o un cable macho-macho y otro hembra-
hembra.
Los pines son el 1 para GND y el 8 para Vcc. El esquema sera el siguiente.
8/23
Cmo programar el ESP01
Una vez que tenemos alimentado el ESP01 vamos a empezar con la programacin. En este apartado tambin
hay diferentes opciones, las veremos y as podrs elegir la que ms te guste :).
Lo primero, para cargar el programa lo haremos a travs del puerto serie. Esto supone que utilizaremos los
pines RX y TX para transmitir los datos a la memoria Flash, donde se almacenan el sketch.
Normalmente cuando trabajamos con Arduino no debemos decir si vamos a cargar un programa o debe
ejecutarlo. Todo esto lo hace de forma interna y automtica.
Sin embargo, con el ESP01 esto no sucede y debemos ser nosotros de forma manual los que pongamos
los diferentes modos. Existen dos modos de trabajo o ejecucin y se conguran a travs de los puertos
GPIO0 y GPIO2. Los modos son modo Flash y modo UART.
Cuando queremos cargar un programa en el ESP01 debemos poner el pin GPIO0 a nivel bajo (0 V) y el GPIO2
a nivel alto (3,3 V). Te recuerdo que el ESP8266 trabaja con niveles lgicos de 3,3 V.
Una vez que lo carguemos hay que ejecutarlo. Esto lo hacemos poniendo el GPIO0 y el GPIO2 a nivel alto (3,3
V).
En la siguiente tabla puedes ver un resumen de los dos modos y los valores de los pines.
9/23
GPIO0 GPIO2
En este punto te estars preguntando, si utilizamos RX y TX para cargar el programa en la placa y GPIO0 y
GPIO2 para indicar el modo de trabajo cmo conectamos los sensores y actuadores al ESP-01?
RX y TX los utilizamos para cargar el programa. Una vez nalizada la carga los podemos utilizar como
pines de entrada y salida digitales.
Los modos de trabajo se indican cuando se resetea o reinicia la placa a travs de los pines 0 y 2. Una
vez que tengamos el modo de trabajo funcionando de manera normal, ya podemos conectar cualquier
componente a estos pines.
Antes de meternos de lleno en preparar el circuito para programar el ESP01, vamos a preparar el entorno de
desarollo. Para ello utilizaremos el entorno de desarrollo de Arduino. Lo puedes descargar desde aqu.
El lenguaje con el que vamos a programar es el cdigo nativo de Arduino. Seguramente encontremos
diferencias en las libreras, pero son las mnimas. Prcticamente vamos a poder utilizar el 90% de ellas para el
ESP8266.
10/23
En donde pone Gestor de URLs Adicionales de Tarjetas copia el siguiente enlace:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
11/23
Y haces click en ok.
12/23
En el gestor de tarjetas buscas esp e instalas el ESP8266 by ESP8266 Community
13/23
Una vez hemos instalado la placa, ya podemos elegir entre los diferentes tipos de ESP que nos ofrecen. Para
utilizar el ESP01 tenemos que seleccionar Generic ESP8266 module.
Vamos a comenzar programando el ESP01 desde la placa de Arduino. Tememos dos inconvenientes a la hora
de utilizar este mtodo. Por un lado la alimentacin, ya hemos visto que no suministra los 200 mA
necesarios, y por otro lado el voltaje de operacin, Arduino UNO funciona con 5 V y esto tambin incluye a
los pines RX y TX.
Con estas dos premisas necesitaremos una fuente de alimentacin, como la que hemos visto antes la MB102, y
hacer un divisor de tensin para bajar el voltaje de los pines RX y TX de Arduino.
Esto ltimo lo hacemos porque necesitamos pasar de 5 V a 3,3 V para evitar daar el ESP01.
14/23
El TX de Arduino lo conectamos al TX del ESP01
El RX de Arduino lo conectamos a la entrada del divisor de tensin
La salida del divisor de tensin al RX del ESP01
Se hace un puente entre el pin GND y el pin RESET en el Arduino UNO
Conectamos todas las GND entre si
GND de Arduino
GND del ESP01
La tierra del divisor de tensin
GND de la fuente de alimentacin
Ahora ya lo tenemos todo preparado para hacer la primera prueba. Pero antes, tienes que seleccionar el
puerto donde tienes conectado el Arduino UNO. Esto lo haces desde Herramientas > Puerto.
15/23
Una vez lo tengas seleccionado vamos a cargar un ejemplo. Carga el que est en Archivo > Ejemplos >
ESP8266WebServer > HelloWebserver.
Sustituye los valores de ssid por el nombre de tu WiFi y password por la contrasea de tu WiFi.
16/23
Le das a subir programa y esperas a que termine de compilar y subir al ESP8266. Puede tardar un rato.
Abre el monitor serie que se encuentra en Herramientas > Monitor Serie. Asegrate que tienes seleccionado Sin
ajuste de lnea y 115200 baudio.
17/23
Copia la IP que aparece y la pones en un navegador. El resultado que te tiene que dar es el siguiente.
Lo que hemos hecho es crear un servidor web dentro del ESP01 . S, es increble que podamos tener un
servidor que nos cabe en un bolsillo y solo por 2 .
Recomendaciones
Por ltimo y para acabar con el moto de programar un ESP8266 desde un Arduino, te voy a enumerar unas
recomendaciones.
Siempre que terminas de cargar un programa automticamente se ejecuta aunque estemos en modo
UART.
Si reinicias el ESP01 y vuelves a intentar acceder a la pgina web no podrs, est esperando a que
vuelvas a cargar otro programa. Deberas cambiar el modo de ejecucin a modo Flash en el ESP01.
Una vez hayas terminado la lgica, cambia al modo UART para que cuando se reinicie ejecute el
programa automticamente.
Ahora vamos con este segundo mtodo que es bastante ms sencillo ya que viene todo integrado dentro del
18/23
propio circuito. Existen multitud de conversores de este tipo llamados tambin convertidor USB a TTL o FTDI .
Prcticamente todos funcionan de la misma forma salvo las caractersticas especiales de cada uno.
Es un convertidor entre protocolos. En este caso se utiliza para convertir los datos estndar USB al puerto
serie y viceversa.
Hay algunos que trabajan a 3,3 V, otros a 5 V y otros pueden trabajar con los dos voltajes, como es mi caso. Yo
tengo el modelo CH340G y tiene un jumper para seleccionar el voltaje con el que quieres trabajar.
Circuito elctrico
Todos tienen los mismos pines de conexin, Vcc, GND, RX y TX. Por lo tanto la conexin se hace igual en
todos los modelos. Como ya hemos visto antes, el ESP01 tiene que ser alimentado con una fuente de
alimentacin dedicada y eso es lo que haremos en este mtodo.
Adems, he incorporado unos pulsadores que nos van a permitir cambiar de modo muy fcilmente. En el
siguiente esquema te muestro un ejemplo.
19/23
Te voy a explicar cmo funciona este circuito viendo cada uno de los pines del ESP01.
Conectamos todas las masas a un mismo punto, la del ESP01, fuente de alimentacin y convertidor USB
serie.
El GPIO2 lo dejamos al are. Debido a que tiene una resistencia pull up, mantendr un estado alto para
ejecutar el modo carga de programa.
El GIPIO2 lo vamos a conectar a tierra a travs de un pulsador. Estamos en el mismo caso que en el pin
anterior. Para poder cargar un programa debemos tener este pin a 0 V pero como tiene una resistencia
pull up, por defecto lo que har ser ejecutar el programa. Vemos los casos:
Este sera el circuito recomendado para poder trabajar de una manera fcil y cmoda. Con los pulsadores
vamos a poder resetear y cambiar del modo el ESP01.
20/23
Programacin del ESP01 con FTDI
La programacin es igual que en el caso de que utilicemos un Arduino UNO. La conguracin del IDE de
Arduino es idntica y la nica precaucin que tenemos que tener es a la hora de seleccionar el puerto.
Como hemos conectado el FTDI a nuestro ordenador, ahora nos aparecer un puerto nuevo dentro del IDE de
Arduino sin nombre. Ese es el que tenemos que seleccionar.
Una vez seleccionado ya puedes cargar el programa de ejemplo que hemos visto anteriormente.
21/23
Recomendaciones nales
Para nalizar, te voy a dar unas recomendaciones a modo de resumen que deberas tener en cuenta en todo
momento.
1. Solo se dispone de 512 kB de memoria Flash. Depender del modelo de ESP01 que tengas.
2. El ESP01 dispone de 4 pines accesibles. Aprovecha tambin los pines RX y TX una vez que hayas 22/23
2. El ESP01 dispone de 4 pines accesibles. Aprovecha tambin los pines RX y TX una vez que hayas
cargado el programa.
3. Todos los GPIO funcionan con 3,3 V.
4. No alimentes la placa con ms de 3,6 V, la puedes daar.
5. Intenta utilizar el protocolo I2C para comunicar con los sensores, as ahorrars pines.
6. La corriente necesaria es de unos 200 mA cuando la WiFi est transmitiendo, no alimentes con menos el
ESP01.
7. Si quieres que trabaje como interfaz WiFi de un Arduino, utiliza el Firmware de comandos AT.
8. Existen otro Firmwares para otros lenguajes como Python, JavaScript o Basic.
9. Alimenta la placa con una fuente que suministre 3,3 V y ms de 200 mA.
10. Si cargas los programas desde Arduino, asegrate de utilizar un divisor de tensin para RX y TX. Puedes
daar la placa.
11. Si programas con TTL recuerda que RX del TTL va a TX del ESP01 y viceversa.
Y con esto damos por concluida la gua cmo congurar el ESP01 de principio a n. Ahora depende de ti crear
nuevos proyectos con esta placa basada en el ESP8266.
23/23