Debido al pequeño tamaño del ESP8266-E1 a la hora de programar el proceso no es tan intuitivo como en arduino que simplemente conectando el arduino al USB todo funciona sin problemas. En el caso del ESP8266 necesitamos un conversor de niveles desde USB a 3.3V. En internet puedes encontrar muchísimos de estos conversores. Yo utilizo el siguiente:

Enlace al conversor en aliexpress

Con el conversor usb a 3.3V lo que vamos a conseguir es adaptar los niveles de tensión del puerto serie al nivel de tensión adecuado al ESP8266 (3.3V). El siguiente paso es preparar al microcontrolador para entrar en modo programación y programarlo vía puerto serie. Para este propósito podemos conectar los pines necesarios usando una protoboard o crearnos un pequeño programador para que la programación sea “plug&play”.

En la siguiente figura se muestra el esquemático del programador. Como se observa los pines de reset y GPIO0 se conectan mediante pulsadores. En el caso del reset, el pin está conectado a VCC por medio de una resistencia de pull-up y en el caso de GPIO0 lo que hace el pulsador es forzarlo a GND.

Un detalle importante cuando se trabaja con el ESP8266 es la alimentación. En mi caso he tenido bastantes problemas con obtener los 3.3V directamente desde el conversor USB. A pesar de tener un modo de 3.3V lo que he hecho ha sido tomar el pin de 5V y por medio de 2 diodos hacer una caída de tensión de 1.4V, obteniendo así una alimentación de 3.6V.

En la siguiente figura el montaje del programador ya hecho sobre una pcb de prototipado.

A la hora de programar es muy sencillo. Colocas el ESP01 que quieres programar en el socket, se presionan el reset y el pulsador de flash a la vez durante par de segundos. Se suelta el pulsador del reset mientras se mantiene pulsado el de flasheo y finalmente se suelta el pulsador de flasheo. Eso mete al microcontrolador en modo programación y ya en el IDE que utilices para programar puedes lanzar el volcado de tu código.