Comunicación entre dos ESP8266s
Esta guía te muestra cómo establecer una conexión entre dos dispositivos ESP8266 usando TCP/IP a través de WiFi y intercambiar datos. Un ESP8266 funcionará como cliente TCP, mientras que el otro actuará como servidor TCP. Profundizaremos en este proceso a través de un ejemplo:
- ESP8266 #1 se conectará a un botón y actuará como el cliente TCP.
- ESP8266 #2 se conectará a un LED y funcionará como el servidor TCP.
- Ambos dispositivos ESP8266 se conectarán entre sí a través de Internet.
- Cuando se presione el botón en ESP8266 #1, hará que el LED de ESP8266 #2 se encienda.
Hardware Requerido
| 2 | × | ESP8266 NodeMCU | |
| 2 | × | Cable Micro USB | |
| 1 | × | (Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266 | |
| 1 | × | (Recomendado) Divisor de Alimentación para ESP8266 Tipo-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Comunicación entre dos ESP8266 - Visión general
Consideremos un ejemplo concreto: ESP8266 n.º 1 interactuando con ESP8266 n.º 2. Existen numerosas formas de habilitar la comunicación entre los dos ESP8266. Podemos seleccionar una de ellas en función de la distancia de comunicación. La tabla a continuación muestra algunos métodos y su rango de comunicación.
| Methods | Range |
|---|---|
| I2C | very short |
| SPI | very short |
| UART (TTL) | very short |
| UART (RS-232/485/422) | short |
| Bluetooth | short |
| LoRa | long |
| Ethernet/WiFi | unlimited(*) |
※ Nota:
- Si dos ESP8266 están conectados a Internet, el alcance de la comunicación es ilimitado.
- Sin embargo, si dos ESP8266 no están conectados a Internet, sino conectados en la misma red LAN, su alcance de comunicación se limita a esa red de área local.
Entre los métodos mencionados anteriormente, este tutorial utiliza WiFi para permitir la comunicación entre dos ESP8266, ya que permite un alcance de comunicación ilimitado.
Comunicación entre dos ESP8266 a través de LAN local o Internet
Dos ESP8266 pueden comunicarse entre sí a través de WiFi cuando:
- Están en la misma red de área local (LAN), y no es necesaria una conexión a Internet.
- Están en diferentes redes LAN, y se necesita una conexión a Internet.
No importa si dos ESP8266 están conectados dentro de una red LAN local o a través de Internet, hay dos formas de comunicación:
- Directamente entre los dos ESP8266
- A través de un servidor centralizado (p. ej. un servidor MQTT). Consulte Comunicación entre dos ESP8266 vía MQTT
Cuando se trata de comunicación directa, normalmente un ESP8266 es el cliente TCP y el otro es el servidor TCP.
En el caso de utilizar un servidor centralizado para la comunicación, normalmente ambos ESP8266 actúan como clientes TCP.
Al decidir el protocolo de aplicación para la comunicación entre dos ESP8266, tenemos varias opciones entre las que elegir:
- Protocolo definido por el usuario sobre TCP crudo
- Modbus TCP
- HTTP
- Telnet
- SSH
- MQTT (que requiere un servidor centralizado)
Ejemplo de Aplicación
Hagamos realidad el siguiente programa: un botón o interruptor conectado al ESP8266 #1 se utilizará para encender y apagar un LED conectado al ESP8266 #2 a través de WiFi.

Como se mencionó anteriormente, hay unos pocos protocolos de aplicación disponibles. Para simplificar este ejemplo, crearemos nuestro propio protocolo (un protocolo definido por nosotros).
Protocolo definido por uno mismo
Establezcamos un protocolo sencillo:
- Establecer una conexión TCP entre ESP8266 #1 y ESP8266 #2
- ESP8266 #1:
- Actuar como cliente TCP, iniciando la conexión TCP con ESP8266 #2
- Cuando el interruptor se ponga en ON, envía un byte (comando) con valor 1 a ESP8266 #2.
- Cuando el interruptor se ponga en OFF, envía un byte (comando) con valor 0 a ESP8266 #2.
- ESP8266 #2:
- Servir como servidor TCP, escuchando solicitudes de conexión TCP desde ESP8266 #1
- Si el byte recibido es 1, enciende el LED
- Si el byte recibido es 0, apaga el LED
- ESP8266 #1 - Diagrama de cableado entre ESP8266 y botón
- ESP8266 #2 - Diagrama de cableado entre ESP8266 y LED
- Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
- Conecta los componentes tal como se muestra en el diagrama.
- Conecta dos placas ESP8266 a tu computadora mediante un cable USB.
- Abre el Arduino IDE (llamado Arduino IDE #1).
- Abre el Arduino IDE (llamado Arduino IDE #2).
- Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
- Instala la biblioteca ezButton en Arduino IDE.
- Copia el código ESP8266 #1, pégalo en Arduino IDE #1 y guárdalo (con el nombre ESP8266-1).
- Copia el código ESP8266 #2, pégalo en Arduino IDE #2 y guárdalo (con el nombre ESP8266-2).
- Sube el código ESP8266 #2 al ESP8266 #2 primero.
- Abre el Monitor Serial en Arduino IDE #2 y obtén la dirección IP del servidor TCP.
- Cambiar la dirección IP del servidor TCP en el código del ESP8266 #1.
- Subir el código del ESP8266 #1 al ESP8266 #1.
- Abrir el Monitor Serial en el IDE de Arduino #1.
- Presiona y mantén presionado el botón en el ESP8266 #1 y observa el estado del LED en el ESP8266 #2 (debería estar ENCENDIDO).
- Suelta el botón en el ESP8266 #1 y observa el estado del LED en el ESP8266 #2 (debería estar APAGADO).
- Presiona, mantén y suelta el botón varias veces.
- Verifica la salida en el Monitor Serial #1:
- Ver la salida en el Monitor Serial #2:
Diagrama de cableado

This image is created using Fritzing. Click to enlarge image
Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

This image is created using Fritzing. Click to enlarge image
Código ESP8266 para ESP8266 #1
Código para ESP8266 #2
Pasos R\u00e1pidos
Para empezar con ESP8266 en Arduino IDE, siga estos pasos:
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.
Cómo conectar dos ESP8266 a través de Internet
Existen dos tipos de direcciones IP: privadas y públicas. La dirección IP que se usa habitualmente en una red doméstica es privada.
Es sencillo reconocer una dirección IP privada. Hay tres formatos de direcciones IP privadas: 10.x.x.x, 172.16.x.x, 192.168.x.x
No es importante utilizar la dirección IP privada en los siguientes escenarios:
- Cuando dos ESP8266 se encuentran dentro de la misma red de área local, sin importar si se comunican directamente o a través de un servidor centralizado, y sin importar si la red de área local está conectada a Internet o no.
- Cuando dos ESP8266 se encuentran en redes de área local separadas y se comunican entre sí a través de un servidor centralizado.
En el caso de que dos ESP8266 estén en diferentes redes LAN y se comuniquen entre sí directamente, el cliente TCP de ESP8266 puede utilizar una dirección IP privada. Sin embargo, el servidor TCP de ESP8266 debe usar cualquiera de las siguientes:
- Una dirección IP pública
- Una dirección IP privada con "Reenvío de puertos" en el router/punto de acceso
La técnica de 'Port Forwarding' varía de router/punto de acceso a router/punto de acceso. Este tutorial no cubre este tema.