Configuración de mDNS en un ESP32 paso a paso

Si alguna vez has trabajado con múltiples dispositivos ESP32 en tu hogar, seguro te has encontrado con el inconveniente de recordar las direcciones IP de cada uno. Esto puede volverse tedioso rápidamente. Afortunadamente, existe una solución eficiente y práctica llamada mDNS, que permite acceder a tus dispositivos a través de nombres de host fáciles de recordar. En este artículo, te guiaremos paso a paso en la configuración de mDNS en un ESP32, facilitando así tu experiencia en el desarrollo de proyectos IoT.

El uso de mDNS no solo simplifica el acceso a tus dispositivos, sino que también resuelve el problema de las direcciones IP cambiantes. Esto significa que, aunque la dirección IP de tu ESP32 cambie, podrás seguir accediendo a él utilizando el mismo nombre de host, como "esp32.local". ¡Vamos a sumergirnos en el fascinante mundo de mDNS y aprender cómo implementarlo!

Índice de contenido
  1. ¿Qué es mDNS?
  2. Configuración del entorno de desarrollo Arduino
  3. Conectar el ESP32 a tu computadora
  4. Definir las credenciales de red
  5. Cargar el código en el ESP32
  6. Probar el código
  7. Explicación del código
  8. Solución de problemas comunes con mDNS
  9. Ejemplo de implementación de mDNS en ESP32

¿Qué es mDNS?

Multicast DNS, comúnmente conocido como mDNS, es un protocolo de resolución de nombres que permite el descubrimiento de dispositivos dentro de una red local sin necesidad de un servidor DNS centralizado. Este protocolo se utiliza principalmente en redes pequeñas, como las configuradas en hogares o pequeñas oficinas, donde los dispositivos pueden unirse y salir de la red frecuentemente.

A continuación se presentan algunos aspectos clave sobre mDNS:

  • Nombre amigable: Permite acceder a los dispositivos mediante nombres fáciles de recordar en lugar de direcciones IP numéricas.
  • Manejo de IPs dinámicas: Automatiza la resolución de direcciones IP cambiantes, evitando la necesidad de actualizaciones manuales.
  • Configuración mínima: No se requiere una configuración compleja o la instalación de servidores adicionales.
  • Compatibilidad: Funciona en múltiples plataformas y dispositivos, lo que facilita su integración.

Este enfoque descentralizado permite que cada dispositivo en la red anuncie su presencia y comparta su información de dirección IP con otros dispositivos, lo que resulta en una manera eficiente y sin complicaciones de gestionar múltiples dispositivos.

Configuración del entorno de desarrollo Arduino

Para empezar, necesitarás tener el entorno de desarrollo de Arduino configurado en tu computadora. Asegúrate de tener instalada la biblioteca de ESP32. Así es como puedes hacerlo:

  1. Descarga e instala la última versión del IDE de Arduino.
  2. Abre el IDE y navega a Archivo > Preferencias.
  3. En el campo "Gestor de URLs adicionales de tarjetas", añade la URL para ESP32.
  4. Ve a Herramientas > Placa > Gestor de Placas y busca "ESP32" para instalarlo.

Conectar el ESP32 a tu computadora

Usa un cable micro-USB para conectar tu placa ESP32 a tu computadora. Asegúrate de que la conexión sea estable y que tu sistema reconozca el dispositivo. Esto es crucial para poder cargar el código correctamente.

Definir las credenciales de red

Antes de cargar el código, necesitas modificar algunas líneas en el programa para que se conecte a tu red Wi-Fi. Actualiza las siguientes variables con el nombre y la contraseña de tu red:

const char* ssid = "TuNombreDeRed";  // Ingresa el SSID aquí
const char* password = "TuContraseña";  // Ingresa la contraseña aquí

Cargar el código en el ESP32

Ahora que tienes todo configurado, es momento de cargar el código en tu dispositivo. Aquí tienes un ejemplo de sketch que establece mDNS en un ESP32. Este código no solo conecta el ESP32 a la red Wi-Fi, sino que también inicia un servicio mDNS y un servidor HTTP para servir una página web simple.

#include <WiFi.h>
#include <WebServer.h>
#include <ESPmDNS.h>

// Define tus credenciales de red
const char* ssid = "TuNombreDeRed";  // Ingresa el SSID aquí
const char* password = "TuContraseña";  // Ingresa la contraseña aquí

WebServer server(80);

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

  Serial.println("Conectando a ");
  Serial.println(ssid);

  // Conectar a la red Wi-Fi
  WiFi.begin(ssid, password);

  // Verificar la conexión
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("Conectado a la red!");

  // Inicializar mDNS
  if (!MDNS.begin("esp32")) {
    Serial.println("Error configurando el responder mDNS!");
    while (1) {
      delay(1000);
    }
  }
  Serial.println("mDNS iniciado");

  server.on("/", handle_OnConnect);
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("Servidor HTTP iniciado");
}

void loop() {
  server.handleClient();
}

void handle_OnConnect() {
  server.send(200, "text/html", "<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"></head><body><h1>¡Hola desde ESP32!</h1></body></html>");
}

void handle_NotFound() {
  server.send(404, "text/plain", "No encontrado");
}

Una vez que el código esté cargado, deberías poder acceder al servidor web ingresando http://esp32.local/ en tu navegador.

Probar el código

Después de cargar el código, abre el Monitor Serial en el IDE de Arduino y ajusta la velocidad de baudios a 115200. Reinicia el ESP32 presionando el botón EN. Espera unos momentos mientras se conecta a tu red. Deberías ver mensajes que indiquen que tanto el responder mDNS como el servidor HTTP han sido iniciados correctamente.

Explicación del código

El código que hemos utilizado incluye bibliotecas necesarias para la conexión Wi-Fi, el servidor web y mDNS. A continuación se detallan las partes más importantes del código:

  • Bibliotecas necesarias: Se incluyen las bibliotecas WiFi.h, WebServer.h y ESPmDNS.h para realizar las tareas correspondientes.
  • Definición de variables: Las variables ssid y password almacenan el nombre de la red y la contraseña necesarias para conectarse.
  • Conexión Wi-Fi: Se establece la conexión a la red Wi-Fi y se verifica el estado hasta que se establece la conexión.
  • Inicialización de mDNS: Se inicia el servicio mDNS especificando un nombre de host para el dispositivo.
  • Configuración del servidor: Se configuran las rutas del servidor y se inicia el servicio para manejar las solicitudes de los clientes.

Recuerda que el nombre de host que elijas no debe exceder los 63 caracteres. Esto es esencial para una resolución correcta de nombres en la red.

Solución de problemas comunes con mDNS

A veces, puedes encontrar problemas al intentar acceder a tu ESP32 utilizando el nombre de host. Aquí hay algunas soluciones comunes para resolverlos:

  • Revisar la conexión Wi-Fi: Asegúrate de que el ESP32 esté conectado a la red correcta.
  • Verificar el nombre de host: Asegúrate de que el nombre de host esté correctamente especificado y sea único en la red.
  • Reiniciar el dispositivo: A veces, un simple reinicio del ESP32 y del router puede resolver problemas de conectividad.
  • Comprobar el firewall: Asegúrate de que no haya restricciones en tu red que bloqueen el tráfico mDNS.

Ejemplo de implementación de mDNS en ESP32

Para ayudarte a comprender mejor cómo funciona mDNS, aquí tienes un ejemplo práctico de un proyecto en el que puedes utilizar este protocolo:

  • Casa inteligente: Puedes utilizar múltiples ESP32 para controlar luces, sensores de temperatura y otros dispositivos a través de una aplicación móvil, accediendo a cada uno por su nombre de host.
  • Monitoreo ambiental: Implementa varios ESP32 con sensores que reporten datos en tiempo real a un servidor central, utilizando mDNS para una fácil identificación.
  • Proyecto educativo: Durante una clase de programación, los estudiantes pueden trabajar con varios ESP32, utilizando mDNS para crear un entorno de aprendizaje colaborativo.

La implementación de mDNS en tus proyectos con ESP32 puede simplificar enormemente la gestión de múltiples dispositivos en tu red local. Con la capacidad de acceder a ellos a través de nombres fáciles de recordar, tu experiencia en la creación de proyectos IoT será mucho más fluida y eficiente.

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