Comunicación entre dos Arduino Nano ESP32
Esta guía te muestra cómo establecer una conexión entre dos dispositivos Arduino Nano ESP32 utilizando TCP/IP a través de WiFi y intercambiar datos. Un Arduino Nano ESP32 funciona como cliente TCP, mientras que el otro actúa como servidor TCP. Vamos a profundizar en el proceso con un ejemplo:
- El primer Arduino Nano ESP32 (denominado como Arduino Nano ESP32 #1) está conectado a un botón y actúa como el cliente TCP.
- El segundo Arduino Nano ESP32 (denominado como Arduino Nano ESP32 #2) está conectado a un LED y actúa como el servidor TCP.
- Ambos dispositivos Arduino Nano ESP32 se conectan entre sí a través de la red LAN local o de Internet.
- Cuando se pulsa el botón en Arduino Nano ESP32 #1, se enciende el LED en Arduino Nano ESP32 #2.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.
Comunicación entre dos Arduino Nano ESP32 - Visión general
Existen varios métodos para permitir la comunicación entre "Arduino Nano ESP32 #1" y "Arduino Nano ESP32 #2". La elección del método depende de la distancia entre ellos. Algunas de las opciones incluyen:
| Methods | Distance |
|---|---|
| SPI | very short |
| I2C | very short |
| UART (TTL) | very short |
| UART (RS-232/485/422) | short |
| Bluetooth | short |
| LoRa | long |
| WiFi | unlimited(*) |
※ Nota:
(*):
- Si ambos dispositivos Arduino Nano ESP32 están conectados a Internet, la distancia de comunicación es ilimitada.
- Si ambos dispositivos Arduino Nano ESP32 no están conectados a Internet, pero están conectados a la misma LAN (Red de Área Local), la distancia de comunicación está limitada a la red LAN.
Este tutorial va a utilizar WiFi para la comunicación entre dos ESP32.
Comunicación entre dos Arduino Nano ESP32 vía WiFi
Dos dispositivos Arduino Nano ESP32 pueden establecer comunicación a través de WiFi bajo las siguientes condiciones:
- Si ambos dispositivos Arduino Nano ESP32 están dentro de la misma LAN (red de área local), pueden comunicarse sin necesidad de conectarse a Internet.
- Si los dos dispositivos Arduino Nano ESP32 se encuentran en diferentes redes LAN, deben conectarse a Internet para facilitar la comunicación.
Hay dos métodos principales de comunicación entre dos dispositivos Arduino Nano ESP32:
- Comunicación Directa:
- En este método, un Arduino Nano ESP32 actúa como cliente TCP, mientras que el otro sirve como servidor TCP. Se comunican directamente entre sí a través de WiFi.
- Ambos dispositivos Arduino Nano ESP32 actúan como clientes TCP y se comunican indirectamente a través de un servidor centralizado, como un servidor MQTT. Puede consultar el tutorial en Comunicación entre ESP32 y Arduino Nano ESP32 vía MQTT para obtener detalles de implementación.
- Protocolo propio sobre TCP crudo (utilizado para comunicación directa)
- Modbus TCP (utilizado para comunicación directa)
- HTTP (utilizado para comunicación directa)
- Telnet (utilizado para comunicación directa)
- SSH (utilizado para comunicación directa)
- MQTT (utilizado para comunicación indirecta a través de un servidor)
^ Comunicación indirecta a través de un servidor centralizado (p. ej., servidor MQTT):
Necesita un protocolo de aplicación que dos Arduino Nano ESP32 utilizan para comunicarse entre sí. Por ejemplo:
Aplicación de ejemplo
Implementemos la siguiente aplicación: Un botón o interruptor conectado a Arduino Nano ESP32 #1 controlará un LED conectado a Arduino Nano ESP32 #2 a través de WiFi.

Para simplificar, usaremos un protocolo autodefinido (creado por nosotros, no es un estándar).
Protocolo definido por uno mismo
Definimos un protocolo simple de la siguiente manera:
- Crear una conexión TCP entre Arduino Nano ESP32 #1 y Arduino Nano ESP32 #2
- Arduino Nano ESP32 #1:
- Cliente TCP: realiza activamente una solicitud de conexión TCP a Arduino Nano ESP32 #2
- Si el estado del interruptor cambia a ENCENDIDO, Arduino Nano ESP32 #1 envía un byte (comando) con un valor de 1 a Arduino Nano ESP32 #2.
- Si el estado del interruptor cambia a APAGADO, Arduino Nano ESP32 #1 envía un byte (comando) con un valor de 0 a Arduino Nano ESP32 #2.
- Arduino Nano ESP32 #2:
- Servidor TCP: escucha una solicitud de conexión TCP de Arduino Nano ESP32 #1. Si hay una solicitud TCP, la acepta y se crea la conexión.
- Si recibe un byte:
- Si el valor es 1, encender LED
- Si el valor es 0, apagar LED
- Diagrama de cableado para Arduino Nano ESP32 #1: CLIENTE TCP + UN BOTÓN/INTERRUPTOR
- Diagrama de cableado para Arduino Nano ESP32 #2: Servidor TCP + un LED
- Arduino Nano ESP32 - LED tutorial
- Arduino Nano ESP32 - Botón tutorial
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
- Conecta un botón/interruptor a Arduino Nano ESP32 #1
- Conecta un LED a Arduino Nano ESP32 #2
- Abre Arduino IDE (llamado Arduino IDE #1)
- Instala la biblioteca ezButton en Arduino IDE
- Conecta Arduino Nano ESP32 #1 al PC mediante un cable USB y selecciona el puerto COM de Arduino Nano ESP32 #1 en Arduino IDE #1
- Abre otra ventana de Arduino IDE (llamada Arduino IDE #2) haciendo clic en el icono de Arduino IDE en tu PC (¡importante!())
- Conecta Arduino Nano ESP32 #2 al PC mediante un cable USB y selecciona el puerto COM de Arduino Nano ESP32 #2 en Arduino IDE #2
- Copia el código de Arduino Nano ESP32 #1, pégalo en Arduino IDE #1 y guárdalo (llamado ESP321)
- Copia el código de Arduino Nano ESP32 #2, pégalo en Arduino IDE #2 y guárdalo (llamado ESP322)
- Sube el código de Arduino Nano ESP32 #2 a Arduino Nano ESP32 #2 primero
- Abre el Monitor Serial en Arduino IDE #2, obtén la dirección IP del servidor TCP
- Actualiza la dirección IP del servidor TCP en el código de Arduino Nano ESP32 #1.
- Sube el código de Arduino Nano ESP32 #1 al Arduino Nano ESP32 #1.
- Abre el Monitor Serial en Arduino IDE #1.
- Mantén presionado el botón en Arduino Nano ESP32 #1 → ver el estado del LED en Arduino Nano ESP32 #2 (ENCENDIDO).
- Suelta el botón en Arduino Nano ESP32 #1 → ver el estado del LED en Arduino Nano ESP32 #2 (APAGADO).
- Realiza el proceso anterior varias veces.
- Ver la salida en ambos Monitores Serial.
- Monitor Serial de Arduino Nano ESP32 #1.
- Monitor de serie de Arduino Nano ESP32 #2
- (): Si abres la ventana del Arduino IDE #2 mediante "Archivo" → "Nuevo" o "Abrir" desde la ventana del IDE #2, NO podrás abrir dos Monitores Serie para dos Arduino Nano ESP32 en la misma PC al mismo tiempo.
- Existe una alternativa a este protocolo auto-definido. Es el Modbus TCP. El protocolo Modbus está estandarizado, tiene muchas ventajas sobre el protocolo auto-definido. Ver más en Arduino Nano ESP32 - Modbus tutorial
Diagrama de cableado

This image is created using Fritzing. Click to enlarge image

This image is created using Fritzing. Click to enlarge image
※ Nota:
Es necesario usar una resistencia para el LED si no tiene una resistencia integrada. Tenemos tutoriales dedicados para el botón y el LED. Puedes aprender más sobre ellos en:
Código para Arduino Nano ESP32 nº 1
Código para Arduino Nano ESP32 Arduino Nano ESP32 #2
Pasos R\u00e1pidos
※ Nota:
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.