Introducción a ESP8266 NodeMCU

El ESP8266 es un sistema Wi-Fi en un chip (SoC) producido por Espressif Systems. Es ideal para proyectos de IoT y domótica.

Tabla de contenido

  • Presentación de NodeMCU ESP8266.
  • ESP8266 Datos técnicos.
  • ESP8266 frente a ESP32
  • Placas de desarrollo ESP8266
  • Kit ESP8266-12E NodeMCU
  • Guía de asignación de pines ESP8266 GPIO

    ¿Cómo programar el ESP8266?
    ESP8266 con Arduino IDE
    Cargue el código al ESP8266 usando Arduino IDE
    Los mejores recursos para comenzar con el ESP8266

Presentación de NodeMCU ESP8266.

El ESP8266 es un chip Wi-Fi de bajo coste desarrollado por Espressif Systems.
ESP8266 NodeMCU Espressif Sistemas.

Se puede usar como un dispositivo independiente o como un adaptador UART a Wi-Fi para permitir que otros microcontroladores se conecten a una red Wi-Fi. Por ejemplo, puede conectar un ESP8266 a un Arduino para agregar capacidades Wi-Fi a la placa Arduino. La aplicación más práctica es usarlo como un dispositivo independiente.

Con el ESP8266, se puede controlar las entradas y salidas como lo haría con un Arduino, pero con capacidades Wi-Fi. Esto significa que podemos poner nuestros proyectos en línea, lo cual es excelente para aplicaciones de domótica e Internet de las cosas.

Ventajas:

  • Bajo costo: hay placas ESP8266 a partir de $ 3 (o menos) según el modelo.
  • Bajo consumo de energía: el ESP8266 consume muy poca energía en comparación con otros microcontroladores e incluso puede entrar en modo de suspensión profunda para consumir menos energía.
  • Wi-Fi: el ESP8266 puede generar su propia red Wi-Fi (punto de acceso) o conectarse a otras redes Wi-Fi (estación) para acceder a Internet. Esto significa que el ESP8266 puede acceder a servicios en línea para realizar solicitudes HTTP o guardar datos en la nube. También puede actuar como un servidor web para que se pueda acceder a él usando un navegador web y poder controlar y monitorear sus tableros de forma remota.
  • Compatible con el «lenguaje de programación» Arduino: aquellos que ya están familiarizados con la programación de la placa Arduino, pueden programar el ESP8266 al estilo Arduino.
  • Compatible con MicroPython: se puede programar el ESP8266 con firmware MicroPython, que es una reimplementación de Python 3 destinada a microcontroladores y sistemas integrados.

¿Qué se puede hacer con un ESP8266?

  • Crear un servidor web para controlar las salidas.
  • Crear un servidor web para mostrar las lecturas del sensor.
  • Enviar solicitudes HTTP.
  • Salidas de control, entradas de lectura y ajuste de interrupciones.
  • Proyectos de registro de datos.
  • Comunicarse con servicios de terceros.
  • Crear aplicaciones web.
  • Enviar correos electrónicos, notificaciones, publicar tweets, …
  • Etc.

ESP8266 Datos técnicos

  • Procesador: L106 Núcleo de microprocesador RISC de 32 bits basado en Tensilica Diamond Standard 106Micro que funciona a 80 o 160 MHz
  • Memoria:
    • RAM de instrucciones de 32 KiB
    • RAM de caché de instrucciones de 32 KiB
    • RAM de datos de usuario de 80 KiB
    • RAM de datos del sistema ETS de 16 KiB
  • Flash QSPI externo: admite hasta 16 MiB (normalmente se incluyen de 512 KiB a 4 MiB)
  • IEEE 802.11 b/g/n Wifi
  • Conmutador TR integrado, balun, LNA, amplificador de potencia y red correspondiente
  • Autenticación WEP o WPA/WPA2, o redes abiertas
  • 17 pines GPIO
  • Bus de interfaz de periféricos en serie (SPI)
  • I2C (implementación de software)
  • Interfaces I2S con DMA (pines compartidos con GPIO)
  • UART en pines dedicados, además de que se puede habilitar un UART de solo transmisión en GPIO2
  • ADC de 10 bits (ADC de aproximación sucesiva)

Principales diferencias entre ESP8266 y ESP32

Hay un sucesor del ESP8266: el ESP32. El ESP32 combina Wi-Fi y Bluetooth y es de doble núcleo. Si quieres empezar con alguna de estas placas, es más recomendable una ESP32. Si ya tienes un ESP8266, no te preocupes. Funciona muy bien, tiene una gran comunidad y hace el trabajo para la mayoría de los proyectos de IoT.

Versiones ESP8266

Hay varias versiones de los módulos ESP8266 como se muestra en la imagen a continuación. ESP-01 y ESP-12E son las versiones más populares. Se pueden encontrar una amplia variedad de placas de desarrollo con chips ESP-12E o ESP-12F.

versiones esp8266

Placas de desarrollo ESP8266 NodeMCU

Usar chips o módulos por separado, de forma independiente, no es fácil ni práctico. Para aprender, probar y crear prototipos, es más rápido y útil usar placas de desarrollo ESP8266 NodeMCU.

¿Cómo elegir una placa de desarrollo ESP8266?

Existe una amplia variedad de placas ESP8266 de diferentes proveedores. Si bien todos funcionan de manera similar, algunos tableros pueden ser más adecuados para algunos proyectos que otros. Al buscar una placa de desarrollo ESP8266, hay varios aspectos que debe tener en cuenta:

  1. Interfaz USB a UART y circuito regulador de voltaje. La mayoría de las placas de desarrollo con funciones completas tienen estas dos funciones. Esto es importante para conectar fácilmente el ESP8266 al ordenador para cargar el código y aplicar energía.
  2. Botones BOOT y RESET para poner la placa en modo intermitente o resetear (reiniciar) la placa.
  3. Configuración de pines y número de pines. Para usar correctamente el ESP8266 en los proyectos, debemos tener acceso al pinout de la placa (como un mapa que muestra qué pin corresponde a qué GPIO y sus características). Además, algunas placas tienen GPIO más accesibles que otras. Ese es un factor que debes tener en cuenta dependiendo de las características de tu proyecto.
  4. Tamaño. Existe una gran variedad de placas de desarrollo ESP8266 con diferentes tamaños. Algunas placas se benefician de un factor de forma pequeño, que puede ser muy práctico según las características del proyecto. Por lo general, las placas más pequeñas tienen una pequeña cantidad de GPIO disponibles como el ESP-01.
  5. Conector de antena. La mayoría de las placas vienen con una antena integrada para la señal Wi-Fi. Algunas placas vienen con un conector de antena para conectar opcionalmente una antena externa. Agregar una antena externa aumenta su alcance de Wi-Fi.

ESP8266-12E NodeMCU

El kit ESP12-E NodeMCU es una de las placas de desarrollo ESP8266 más utilizadas. Cuenta con 4 MB de memoria flash, acceso a 11 pines GPIO y un pin convertidor de analógico a digital (ADC) con resolución de 10 bits. Además, la placa tiene un regulador de voltaje incorporado y puede encender el módulo usando el conector mini USB o el pin Vin.

ESP8266-12E NodeMCU

Cargar código en la placa es tan fácil como cargar código en Arduino. No hay necesidad de un programador FTDI o circuitos adicionales, ya que tiene un convertidor de USB a serie incorporado. La mayoría de las placas vienen con los chips CP2101 o CH340.

Viene con una antena integrada para la señal Wi-Fi y viene con botones RST y FLASH para reiniciar la placa y ponerla en modo intermitente. Hay un LED azul conectado internamente a GPIO 2, que es muy práctico para la depuración.

Asignación de pines ESP8266 NodeMCU

Las placas de desarrollo ESP8266 NodeMCU más utilizadas son el kit ESP8266-12E NodeMCU, Wemos D1 Mini y ESP-01. Un pinout es como un mapa que muestra qué pin corresponde a qué GPIO y sus características. De esta manera, debe saber qué GPIO usar si necesita usar SPI, I2C, ADC u otros.

Pines de alimentación

Por lo general, todas las placas vienen con pines de alimentación: 3V3, GND y VIN. Podemos usar estos pines para alimentar la placa (si no proporciona energía a través del puerto USB) o para obtener energía para otros periféricos (si está alimentando la placa a través del puerto USB).

Pines de entrada y salida de uso general (GPIO)

Una cosa importante a tener en cuenta sobre el ESP8266 es que el número GPIO no coincide con la etiqueta en la serigrafía de la placa. Por ejemplo, D0 corresponde a GPIO16 y D1 corresponde a GPIO5. Al programar sus placas usando Arduino IDE, debe usar el número GPIO y no el número en la serigrafía. Esto se aplica a la mayoría de las placas ESP8266.

Los periféricos ESP8266 incluyen:

  • 17 GPIO (generalmente no todos los GPIO son accesibles en las placas de desarrollo ESP8266)
  • SPI
  • I2C (implementado en software)
  • Interfaces I2S con DMA
  • UART
  • ADC de 10 bits

Los diferentes GPIO ESP8266 tienen características específicas, por lo que debe elegir sabiamente los pines para sus proyectos. De lo contrario, puede terminar obteniendo resultados inesperados.

Asignación de pines del kit ESP-12E NodeMCU

La siguiente imagen muestra una descripción general del pinout del ESP-12E NodeMCU:

ESP8266-NodeMCU-kit-12-E-pinout-gpio-pin

¿Cómo programar el ESP8266?

Hay muchas formas diferentes de programar el ESP8266 usando diferentes lenguajes de programación: Arduino C/C++ usando el núcleo Arduino para ESP32, Micropython, LUA y otros.

El método preferido es programar el ESP8266 utilizando el «lenguaje de programación Arduino» con Arduino IDE o VS Code.

Para programar la placa, necesitamos un IDE para escribir el código.

En el momento de escribir este tutorial, se recomenda usar la versión (1.8.19) con el ESP8266. Si bien la versión 2 funciona bien con Arduino, todavía hay algunos errores y algunas características que aún no son compatibles con el ESP8266.

Instalación del IDE de Arduino

Para ejecutar Arduino IDE, se necesita tener JAVA instalado en el equipo. Si no se tiene, en el siguiente sitio web se puede descargar e instalar la última versión: http://java.com/download.

Para descargar el IDE de Arduino, visite la siguiente URL:

https://www.arduino.cc/en/Main/Software

Desplácese hacia abajo hasta que encuentre la sección de versión heredada.

Arduino-IDE-Install-Legacy

Selecciona tu sistema operativo y descargua el software. Para Windows, se recomenda descargar el «archivo ZIP de Windows».

Instalación de ESP8266 NodeMCU en Arduino IDE

Para poder programar el NodeMCU ESP8266 usando Arduino IDE, se debe agregar soporte para las placas ESP8266. Seguir los siguientes pasos:

1.- ir a File > Preferences.

Arduino-IDE-Preferences

2.- Escribe lo siguiente en el campo «Additional Board Manager URLs«.

https://arduino.esp8266.com/stable/package_esp8266com_index.json

ESP8266-add-on-additional-boards-manager

Luego, haz clic en el botón «OK».

Nota: si ya tienes una URL de las placas ESP32, puede separar las URL con una coma de la siguiente manera:

https://dl.espressif.com/dl/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Abre el Administrador de tarjetas. Selecciona  Herramientas -> Placa ->Gestor de tarjetas.

Busca ESP8266 e instala «ESP8266 by ESP8266 Community».

Boards-Manager-ESP8266

Se instalará después de unos segundos.

Luego, ir a Herramientas > Placa y verifica que tengas tarjetas ESP8266 disponibles

ESP8266 Ejemplos

En el IDE de Arduino, puede encontrar varios ejemplos para la placa ESP8266. Primero, asegúrese de tener una placa ESP8266 seleccionada en Herramientas > Placa. Luego, simplemente ir a Archivo > Ejemplos y consulta los ejemplos en la sección ESP8266.

ESP8266-board-examples-arduino-ide

Cargar  código al ESP8266 NodeMCU usando Arduino IDE

Para mostrar cómo cargar código en la placa ESP8266, probaremos un ejemplo simple disponible en los ejemplos del IDE de Arduino para el ESP8266.

Primero, asegúrarse de tener un ESP8266 seleccionado en Herramientas > Tarjeta. Si se está utilizando el ESP8266-12E NodeMCU como se muestra en las imágenes anteriores, seleccionar la opción NodeMCU 1.0 (módulo ESP-12E). Si no sabe cuál es su placa, siempre puede seleccionar el módulo genérico ESP8266.

Placa NodeMCU 1.0

Luego, ir a Archivo > Ejemplos > ESP8266WiFi > WiFiScan.

Esto cargará un programa que escanea las redes Wi-Fi dentro del alcance de su placa ESP8266.

Cargar el código al ESP8266 NodeMCU usando Arduino IDE

Para mostrar cómo cargar código en la placa ESP8266, probaremos un ejemplo simple disponible en los ejemplos del IDE de Arduino para el ESP8266.

Primero, hay que tener ESP8266 seleccionado en Herramientas > Placa. Si se utiliza el ESP8266-12E NodeMCU como se muestra en las imágenes anteriores, selecciona la opción NodeMCU 1.0 (módulo ESP-12E). Si no sabe cuál es su placa, siempre puede seleccionar el módulo genérico ESP8266.

Abrir el Archivo > Ejemplos > ESP8266WiFi > WiFiScan.

Esto cargará un programa que escanea las redes Wi-Fi dentro del alcance de la placa ESP8266.

Conecta la placa de desarrollo ESP8266 al ordenador usando un cable USB.

Advertencia: se debe usar un cable USB con cables de datos. Algunos cables USB de cargadores o bancos de energía son solo de alimentación y no transfieren datos, no funcionarán.

Ahora, hay que seguir los siguientes pasos para cargar el código.

1) Ir a Herramientas > Placa, desplácese hacia abajo hasta la sección ESP8266 y seleccione su placa ESP8266. Si no sabe cuál es su placa, el módulo genérico ESP8266 generalmente funciona bien para la mayoría de las placas.

2) ir a Herramientas > Puerto y seleccionar un puerto COM disponible. Si el puerto COM está atenuado, significa que no tiene los controladores USB necesarios.

3) Presionar el botón de carga.

El código debe cargarse con éxito en la placa después de unos segundos.

Después de conectar la placa ESP8266 a su ordenador, si el puerto COM en Arduino IDE está atenuado, significa que no tiene los controladores USB necesarios instalados en su ordenador.

ESP8266-CP2102-CH340-serial-converter