Cómo configurar una dirección IP estática en tu ESP32

Si alguna vez has intentado ejecutar un servidor web en un ESP32, probablemente hayas notado un inconveniente molesto: cada vez que reinicias tu dispositivo, la dirección IP puede cambiar según lo que el router decida asignar en ese momento. Esto significa que siempre debes verificar el monitor serie para encontrar esta nueva dirección IP, lo cual puede resultar bastante tedioso.

Es aquí donde entran en juego las direcciones IP estáticas. Al establecer una dirección IP estática, puedes acceder al servidor web utilizando la misma IP, incluso después de reiniciar el ESP32. Esto es especialmente útil para evitar confusiones cuando tienes múltiples dispositivos ESP32 conectados a tu red.

Afortunadamente, una vez que sabes cómo hacerlo, el proceso para establecer una dirección IP estática es bastante simple y rápido. Te guiaremos paso a paso sobre cómo configurar una dirección IP estática en tu ESP32. ¡Vamos a empezar!

Índice de contenido
  1. Cómo configurar el entorno de desarrollo de Arduino
  2. Conectar el ESP32 a tu computadora
  3. Obtener la configuración actual de red
  4. Configuración de la dirección IP estática
  5. Prueba de la configuración
  6. Comparativa: IP estática vs mDNS
  7. Explicación detallada del código

Cómo configurar el entorno de desarrollo de Arduino

Para programar el ESP32, utilizaremos el entorno de desarrollo de Arduino (IDE). Asegúrate de tener instalado el complemento del ESP32 antes de continuar. Para hacerlo, sigue estos pasos:

  • Abre el IDE de Arduino.
  • Ve a Archivo > Preferencias.
  • En el campo de Gestor de URLs adicionales de tarjetas, agrega: https://dl.espressif.com/dl/package_esp32_index.json.
  • Luego, ve a Herramientas > Placa > Gestor de Placas y busca "ESP32". Instala la última versión.

Conectar el ESP32 a tu computadora

Utiliza un cable micro-USB para conectar tu placa ESP32 a tu computadora. Asegúrate de que se reconozca correctamente y que esté alimentado. Esto te permitirá cargar el código y monitorear la salida del dispositivo.

Obtener la configuración actual de red

Antes de configurar una IP estática, es recomendable verificar la configuración de red actual (IP, puerta de enlace, subred y DNS) asignada por tu router. Esta información puede ayudar a evitar conflictos de IP. Para saber la dirección IP actual del ESP32 y otros ajustes de red, debes cargar el siguiente código en tu dispositivo.

Antes de hacerlo, actualiza las siguientes dos variables con el SSID y la contraseña de tu red WiFi:

const char* ssid = "TuNombreDeRed";  // Aquí ingresa tu SSID
const char* password = "TuContraseña"; // Aquí ingresa tu contraseña

Después de realizar estos cambios, sube el código al ESP32.

#include 

const char* ssid = "TuNombreDeRed";  // Aquí ingresa tu SSID
const char* password = "TuContraseña"; // Aquí ingresa tu contraseña

void setup() {
  Serial.begin(115200);
  
  Serial.print("Conectando a ");
  Serial.println(ssid);
  
  // Conectar a WiFi
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("¡Conectado a la red!");
 
  Serial.print("IP actual del ESP32: ");
  Serial.println(WiFi.localIP());
  Serial.print("IP de la puerta de enlace (router): ");
  Serial.println(WiFi.gatewayIP());
  Serial.print("Máscara de subred: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("DNS Primario: ");
  Serial.println(WiFi.dnsIP(0));
  Serial.print("DNS Secundario: ");
  Serial.println(WiFi.dnsIP(1));
}

void loop() {
}

Una vez que hayas subido el código, abre el monitor serie y ajusta la velocidad a 115200 baudios. Luego, presiona el botón EN en el ESP32. Puede tardar unos momentos en conectarse a tu red, tras lo cual imprimirá la configuración de red actual del ESP32 en el monitor serie. Toma nota de esta información.

Configuración de la dirección IP estática

Después de obtener la configuración de red actual, ahora puedes establecer una dirección IP estática. Modifica el siguiente código para incluir la configuración de IP estática. Necesitarás especificar la dirección IP estática, la puerta de enlace, la máscara de subred y, opcionalmente, la configuración de DNS.

IPAddress staticIP(192, 168, 1, 100); // IP estática para el ESP32
IPAddress gateway(192, 168, 1, 1);    // Dirección IP de tu puerta de enlace (router)
IPAddress subnet(255, 255, 255, 0);   // Máscara de subred
IPAddress primaryDNS(192, 168, 1, 1); // DNS Primario (opcional)
IPAddress secondaryDNS(0, 0, 0, 0);   // DNS Secundario (opcional)

Con base en la configuración de red actual, selecciona una dirección IP estática adecuada para tu ESP32. Esta dirección debe estar dentro de la misma subred que tu red actual, pero fuera del rango que tu router suele asignar (para evitar conflictos de IP).

Una vez que modifiques el código, súbelo al ESP32.

#include 

const char* ssid = "Tu_SSID";
const char* password = "Tu_CONTRASEÑA";

// Configuración de IP estática
IPAddress staticIP(192, 168, 1, 100); // IP estática para el ESP32
IPAddress gateway(192, 168, 1, 1);    // Dirección IP de tu puerta de enlace (router)
IPAddress subnet(255, 255, 255, 0);   // Máscara de subred
IPAddress primaryDNS(192, 168, 1, 1); // DNS Primario (opcional)
IPAddress secondaryDNS(0, 0, 0, 0);   // DNS Secundario (opcional)

void setup() {
  Serial.begin(115200);

  // Conectar a WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Conectando a WiFi...");
  }

  // Configurando IP estática
  if (!WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS)) {
    Serial.println("Error al configurar IP estática");
  } else {
    Serial.println("¡IP estática configurada!");
  }
  
  Serial.print("Dirección IP del ESP32: ");
  Serial.println(WiFi.localIP());  // Imprimir la dirección IP del ESP32 en el monitor serie
}

void loop() {
  // Sin nada que hacer aquí
}

Prueba de la configuración

Después de subir el código a tu ESP32, utiliza el monitor serie para confirmar que el ESP32 ahora está utilizando la dirección IP estática que configuraste.

Comparativa: IP estática vs mDNS

Si bien configurar una IP estática para tu ESP32 es efectivo, existe otro enfoque que vale la pena considerar: el mDNS (Multicast DNS). Este método ofrece ventajas significativas sobre las IP estáticas.

El mDNS permite acceder al servidor web que se ejecuta en tu ESP32 utilizando un nombre de host amigable, como “esp32.local”, en lugar de lidiar con una dirección IP. Además, incluso si la dirección IP de tu ESP32 cambia, el mDNS resuelve automáticamente la nueva IP a la misma dirección de host. Esto significa que puedes seguir utilizando el mismo nombre sin preocuparte por rastrear cambios en las direcciones IP.

Para aprender más sobre cómo implementar mDNS en tu ESP32, consulta nuestra guía detallada.

Explicación detallada del código

El código comienza incluyendo la biblioteca WiFi.h, que proporciona las funciones necesarias para conectar el ESP32 a una red Wi-Fi y establecer su configuración de IP.

A continuación, se definen constantes para el SSID de Wi-Fi (ssid) y la contraseña (password). Asegúrate de reemplazar estos valores con el nombre y la contraseña de tu red Wi-Fi.

const char* ssid = "Tu_SSID";
const char* password = "Tu_CONTRASEÑA";

Luego, se crean objetos IPAddress para la IP estática, la puerta de enlace, la máscara de subred y opcionalmente, los servidores DNS primario y secundario. Estos objetos almacenarán las respectivas direcciones, que se utilizarán más adelante para configurar la red del ESP32.

// Configuración de IP estática
IPAddress staticIP(192, 168, 1, 100); // IP estática para el ESP32
IPAddress gateway(192, 168, 1, 1);    // Dirección IP de tu puerta de enlace (router)
IPAddress subnet(255, 255, 255, 0);   // Máscara de subred
IPAddress primaryDNS(192, 168, 1, 1); // DNS Primario (opcional)
IPAddress secondaryDNS(0, 0, 0, 0);   // DNS Secundario (opcional)

Dentro de la función setup(), se inicia la comunicación serie con la computadora.

El ESP32 intenta conectarse a la red Wi-Fi utilizando WiFi.begin(ssid, password). Un bucle while asegura que el ESP32 siga intentando conectarse hasta que lo logre.

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
}

Una vez conectado a Wi-Fi, se configura el ESP32 para utilizar la IP estática, la puerta de enlace, la máscara de subred y los servidores DNS previamente definidos mediante la función WiFi.config(). Si hay algún problema al configurar la IP estática, se imprimirá el mensaje “Error al configurar IP estática” en el monitor serie.

if (!WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS)) {
  Serial.println("Error al configurar IP estática");
} else {
  Serial.println("¡IP estática configurada!");
}

Después de establecer la configuración de IP, la dirección IP actual del ESP32 se imprime en el monitor serie utilizando WiFi.localIP(). Si todo ha salido bien, esto debería mostrar la dirección IP estática que se ha configurado.

Serial.print("Dirección IP del ESP32: ");
Serial.println(WiFi.localIP());

La IP se establece en la función setup(), y como no hay nada más que hacer, la función loop() se deja vacía.

Carlos Julián

Carlos Julián es el fundador de Ingtelecto, es Ingeniero Mecatrónico, Profesor y Programador, cuenta con una Maestria en Ciencias de la Educación, creador de contenido activo a través de TikTok @carlosjulian_mx

Estos temas te pueden interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir