Cuando vamos a realizar un proyecto, uno de los elementos más importantes, que determinarán tanto las posibilidades futuras como las capacidades finales, es la elección del microcontrolador. Para poder tomar una decisión acertada, es importante tener el conocimiento necesario sobre las distintas elecciones que se pueden hacer. El objetivo de esta miniguía es dar unas pinceladas sobre las características de la gama de productos ESP8266 de Espressif, así como sus distintos formatos.

ESP8266

Es un microcontrolador de bajo coste cuya característica principal son sus capacidades de comunicación inalámbrica en redes WiFi basadas en IP. Este dispositivo está fabricado por al empresa Espressif, afincada en China. Además de estas características principales, posee otro gran conjunto de características que se pueden encontrar en otros microcontroladores más generalistas. Sus especificaciones técnicas completas pueden verse en la hoja de datos del fabricante, pero las más importantes se mencionan a continuación:

  • CPU de 32 bits con arquitectura Xtensa LX106, con una frecuencia base de 80 MHz con posibilidad de hacer Overclock hasta 160 MHz
  • 64 kB de RAM de instrucción
  • 96 kB de RAM de datos
  • Memorias FLASH externas de hasta 16 MB (con las últimas versiones del SDK oficial)
  • WiFi en modo estación (IEEE 802.11 b/g/n con protecciones WEP, WPA/WPA2)
  • WiFi en modo punto de acceso (IEEE 802.11 b/g con WEP, WPA/WPA2)
  • WiFi en modo simultáneo (estación + punto de acceso)
  • 16 pines GPIO con posibilidad de configurarlos en modo colector abierto y PWM
  • I²C
  • Dos interfaces SPI (nota aclaratoria importante más adelante)
  • Interfaz I²S con DMA
  • Dos unidades UART, una de las cuales solo posee pin de transmisión, por lo que se suele usar como salida de depuración
  • Un ADC de aproximación sucesiva de 10 bits.
  • Modos de bajo consumo de energía, para aplicaciones de bajo consumo
  • Interfaz SDIO como esclavo
  • Reloj en tiempo real (RTC)
  • Actualizaciones OTA

Por norma general, a la hora de llevar a cabo proyectos, rara vez se compran microcontroladores de manera directa, sino que se suelen comprar módulos o tarjetas de desarrollo. La ventaja de utilizar este integrado es que su tamaño tan pequeño permite crear módulos de tamaño muy reducido, con lo que hay placas de muy distintos tamaños, y en todas ellas se puede utilizar el mismo código sin realizar ningún cambio. Entre los módulos más conocidos se encuentran:

ESP-01

Este es quizás el módulo más conocido. Aunque se suele utilizar como una simple antena WiFi para una placa Arduino, el microcontrolador puede reprogramarse para hacerlo funcionar de manera independiente. Tiene 8 pines, de los cuales dos son de alimentación, dos de puerto serie (Tx y Rx), dos de control de ejecución (Chip Enable y RST) y dos GPIOs que sirven además para controlar el modo de ejecución después de un reinicio. El mayor problema de este módulo es que hay que tener cuidado con el valor inicial de los pines GPIO, ya que de no ser el adecuado, el microcontrolador podría entrar en modo programación. El tamaño de su memoria suele ser de 512 kB o 1 MB, con lo que a veces este módulo puede estar limitado para ser usado con actualizaciones OTA.

ESP-07

Este es un módulo más completo, ya que permite disponer de multitud de pines para usar, con lo que ésta deja de ser una limitación. También dispone de una antena cerámica y un conector de antena para añadirle una externa.

ESP-12

El módulo más completo de todos. Posee una antena PCB, con lo que no le hace falta ningún añadido externo para funcionar. Es usado en multitud de placas de desarrollo, por ejemplo NodeMCU, Adafruit Feather HUZZAH, WeMOS D1. También es el que más pines tiene, tal y como puede verse en la imagen. Por último, cabe destacar que lleva una memoria FLASH de 4 MB, con lo que puede almacenar un programa grande y una gran cantidad de datos, como imágenes para un servidor HTTP o datos de un registrador.

NodeMCU

Esta placa de desarrollo es la más parecida a Arduino. Es la recomendada para empezar, ya que tiene un MicroUSB que es usado para programarlo de manera directa usando los programas recomendados, como esptool.py o el mismo Arduino IDE. Permite que el reinicio y el arranque del microcontrolador en modo de programación se realice de manera automática.

Cómo usar ESP8266

Principalmente, hay dos modos de utilizar y programar este tipo de dispositivos. El primero y más sencillo es usar el Arduino IDE, y el segundo, que permite obtener una mayor comprensión de cómo funciona este microcontrolador, un mayor control de la ejecución del mismo y una mayor eficiencia.