Módulo WiFi ESP8266: Guía de configuración y proyectos

ESP8266 es un módulo Wi-Fi adecuado para proyectos de IoT y domótica. Permite controlar entradas y salidas como lo harías con una placa de la serie Arduino, pero con Wi-Fi. Por lo tanto, es muy adecuado para aplicaciones de domótica/IoT.

En comparación con otras soluciones Wi-Fi del mercado, el ESP8266 es una excelente opción para la mayoría de los proyectos de «Internet de las cosas». En este artículo, presentaremos los conceptos básicos de la placa ESP8266, su pinout y ejemplos de programación.

Introducción al ESP8266

ESP8266 es un microcontrolador potente y versátil con conexión Wi-Fi que ha ganado popularidad en el mundo de la electrónica y el IoT (Internet de las cosas). Desarrollado por Espressif Systems, el ESP8266 ofrece una solución rentable para conectar dispositivos a Internet y permitirles comunicarse entre sí. Cuenta con un módulo Wi-Fi integrado, un potente procesador y pines GPIO para conectar componentes externos. El ESP8266 se puede programar utilizando varios lenguajes de programación, lo que lo hace accesible tanto para principiantes como para desarrolladores experimentados. Su bajo consumo de energía y su tamaño compacto lo hacen ideal para una amplia gama de aplicaciones, incluyendo la automatización del hogar, las redes de sensores inalámbricos y los dispositivos inteligentes. Por ejemplo, el ESP8266 se puede utilizar para crear un termostato inteligente que permite a los usuarios controlar la temperatura de sus hogares de forma remota.

Pinout del ESP8266

ESP8266 Pinout
Distribución de pines del ESP8266

En el diagrama de pines, algunos pines tienen otros usos además de GPIO. Por ejemplo, el pin D1 no solo es GPIO5, sino también una interfaz SCL, que se puede conectar al pin SCL correspondiente de la pantalla LCD.

La siguiente tabla muestra la correspondencia entre las etiquetas de la identificación integrada y los números GPIO, y qué pines son los más adecuados para los proyectos y cuáles requieren precaución. Los pines resaltados en verde están listos para su uso. Los resaltados en amarillo se pueden utilizar, pero requieren atención, ya que pueden tener un comportamiento inesperado, principalmente al inicio. Los pines resaltados en rojo no se recomiendan para su uso como entradas o salidas.

Etiqueta de la placaGPIOEntradaSalidaNotas
D0GPIO16Digital; sin interrupción GPIO en ESP8266 Arduino coreDigital; PWM por software en Arduino corePara despertar del sueño profundo, conectar GPIO16 a RST; comprobar el circuito de la placa.
D1GPIO5DigitalDigitalAsignación habitual del reloj I2C en Arduino core; configurable por software.
D2GPIO4DigitalDigitalAsignación habitual de datos I2C en Arduino core; configurable por software.
D3GPIO0Mantener HIGH al reiniciar para arrancar desde FlashDigital tras el arranqueLOW al reiniciar selecciona la descarga UART; comprobar el cableado del botón FLASH.
D4GPIO2Mantener HIGH al reiniciarDigital tras el arranqueLa conexión del LED depende de la placa; no conectar GPIO2 directamente a VCC.
D5GPIO14DigitalDigitalReloj HSPI (SCLK) al asignarlo a SPI.
D6GPIO12DigitalDigitalEntrada de datos HSPI (MISO) al asignarlo a SPI.
D7GPIO13DigitalDigitalSalida de datos HSPI (MOSI) al asignarlo a SPI.
D8GPIO15Mantener LOW al reiniciarDigital tras el arranqueSelección de chip HSPI (CS); evitar una resistencia externa a positivo durante el reinicio.
RXGPIO3UART0 RX o entrada digitalDigital si UART no lo utilizaPuede compartir el puente USB-UART; no selecciona el modo de arranque.
TXGPIO1Digital si UART no lo utilizaUART0 TX o salida digitalEmite mensajes de arranque; no selecciona el modo de arranque.
A0ADC0Entrada analógicaNo disponibleEl ADC del chip admite 0–1,0 V; el divisor A0 de la placa puede cambiar el rango permitido. Comprobar su esquema.

Cableado y puesta en marcha del ESP8266 con un microcontrolador

Al conectar un módulo Wi-Fi ESP8266 a un microcontrolador o una placa tipo Arduino, trate alimentación, niveles lógicos y straps de arranque como verificaciones separadas. Muchos fallos atribuidos al UART o al firmware son caídas de tensión o un estado de inicio inválido. Confirme el esquema del módulo exacto, pues algunas placas ya integran regulador y resistencias pull.

  • Genere 3,3 V estables: dimensione regulador y pistas para los pulsos de corriente Wi-Fi, reservando habitualmente al menos 500 mA de capacidad transitoria, con condensadores bulk y de alta frecuencia junto al módulo.
  • Proteja las señales: utilice lógica compatible con 3,3 V y adapte la salida de un host de 5 V antes de entrar al ESP8266; una las masas con baja impedancia.
  • Conecte el UART: cruce TX del host con RX del módulo y RX con TX, fije un baud conocido y evite LED o redes pull fuertes en los pines serie.
  • Fije los straps: en hardware habitual tipo ESP-12, mantenga EN y GPIO2 altos, GPIO15 bajo y GPIO0 alto para arrancar o bajo durante reset para programar.
  • Arranque por etapas: mida el rail de 3,3 V y reset, capture el log de boot, identifique si hay firmware AT o propio y pruebe un comando o paquete antes de añadir sensores.

¿Cómo programar ESP8266 con Arduino IDE?

Hay muchas formas de programar el ESP8266:

  1. Utilizar Arduino IDE para desarrollar, siguiendo el estilo de desarrollo de Arduino, fácil de usar;
  2. Utilizar el SDK oficial de ESP8266 para el desarrollo;
  3. Utilizar MicroPython para desarrollar, siguiendo el estilo de programación de Python (este método requiere grabar primero un firmware especial para la placa);

Aquí elegimos la primera opción, porque la programación de Arduino es sencilla y fácil de manejar.

Paso 1: Instalar el IDE de Arduino

Descargue el IDE desde el sitio web oficial de Arduino: https://www.arduino.cc/en/software. La versión que estoy utilizando ahora es Arduino IDE 1.8.3. (Tenga en cuenta que la última versión de Arduino IDE 2.1.1 no puede instalar el paquete de recursos ESP8266 en línea).

Install Arduino IDE 1.8.3
Instalar Arduino IDE 1.8.3

Paso 2: Instalar el paquete ESP8266

Dado que el IDE de Arduino se utiliza por defecto para la placa de desarrollo Arduino, solo hay recursos de desarrollo relevantes para la placa de desarrollo Arduino por defecto. Para utilizar ESP8266 en el IDE de Arduino, necesitamos instalar manualmente el paquete de desarrollo ESP8266. Hay dos métodos de instalación: instalación en línea e instalación de paquetes sin conexión. Aquí elegimos el primero.

En primer lugar, busca «Archivo -> Preferencias» en el menú del IDE de Arduino: 

Open Preferences in Arduino IDE
Abrir las preferencias en Arduino IDE

A continuación, introduzca el siguiente enlace en «URL adicionales del administrador de tableros»:

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

Setting Additional boards manager URLs in Preferences
Configurar las URL adicionales del gestor de tarjetas en las preferencias

A continuación, haz clic para abrir: Herramientas -> Tablero -> Administrador del tablero.

Open Boards Manager in Arduino
Abrir el gestor de tarjetas en Arduino

En el campo, introduzca y busque «esp8266». Verá un paquete esp8266. Haga clic en «Instalar» para iniciar la instalación en línea.

Search and Install the ESP8266 Board
Buscar e instalar la tarjeta ESP8266
Installing ESP8266 packages
Instalación de los paquetes ESP8266

Una vez completada la instalación, encontrará todos los recursos relacionados con la placa esp8266 en el menú «Herramientas->Placa».

ESP8266 Boards Resource (3.1.2 Version)
Recursos de tarjetas ESP8266 (versión 3.1.2)

Paso 3: Programación del ESP8266

Aquí escribimos un programa sencillo para probar la conexión de red de la placa ESP8266. El código del programa es el siguiente:

				
					void setup() {
  Serial.begin(9600);
  Serial.println("esp8266 test");
  initWiFi();

}

void loop() {
  Serial.println("hello esp8266");
  delay(1000);

}

#include <ESP8266WiFi.h>

constchar ssid[] = "xxxxx";      //WiFi Name
constchar pass[] = "xxxxx";       //WiFi Password

WiFiClient client;

//Initialize WIFI
void initWiFi()
{
   Serial.print("Connecting WiFi...");
   WiFi.mode(WIFI_STA); //Configure WIFI as Station mode
   WiFi.begin(ssid, pass); //Incoming ssid and password of WIFI hotspot
   while (WiFi.status() != WL_CONNECTED) //Waiting for successful connection
   {
     delay(500);
     Serial. print(".");
   }

   Serial.println("");
   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP()); //print your own IP address
}
				
			

Notas:
La función de configuración se utiliza para la inicialización del puerto serie. Por ejemplo, «Serial.begin(9600);» significa que la velocidad de transmisión inicial del puerto serie es 9600.

La función loop es similar a while(1){} en la función principal del desarrollo de un microordenador de un solo chip, donde podemos escribir códigos lógicos de programa.

Para utilizar la función WIFI, es necesario incluir el archivo de encabezado «ESP8266WiFi.h».

El proceso de inicialización de WIFI incluye 3 pasos:

  1. Configurar WIFI en modo estación, es decir, nuestro ESP8266 se utiliza como dispositivo WIFI;
  2. Introducir el ssid y la contraseña del punto de acceso WIFI, para que el ESP8266 pueda conectarse al punto de acceso;
  3. Leer el estado de la conexión WIFI y esperar a que la conexión se establezca correctamente.

Seleccione el modelo y el número de puerto serie de su placa de desarrollo ESP8266:

Choose Board NodeMCU 1.0 (ESP-12E Module)
Seleccionar la tarjeta NodeMCU 1.0 (módulo ESP-12E)

Ahora podemos compilar y grabar el código en la placa ESP8266WiFi.

Compile and Upload the code to ESP8266 WiFi Module
Compilar y cargar el código en el módulo WiFi ESP8266

Compartir en:

Scroll al inicio

Cotización