Tres nodos: 1 punto de acceso y dos clientes que se conectan entre sí vía el punto de acceso
Hola. Escribí éste prompt a Bard y parece que interpretó mis intenciones
cabalmente. La idea es tener 3 esp32s, y uno de ellos dar el "soporte" de conexión
para que los otros dos se comuniquen entre sí. De momento no tengo esp32s
disponibles pare realizar éste experimento de red local, pero al menos da la
información práctica necesaria para las discusiones teóricas acerca de las topologías
de conexión, el paso de mensajes y los posibles algoritmos que se basen en
este tipo de tecnologías...
Inicio del prompt en Bard y respuesta, a continuación.
Escriba programas en Arduino que, dados tres microcontroladores esp32 (nombrados A, B y C), A sea un punto de acceso wifi, y B y C se conecten al punto de acceso de A, y B y C pueden comunicarse entre sí mediante la técnica de sockets.
Programa 1: Punto de acceso (A)
#include <WiFi.h>
const char* ssid = "AP_SSID";
const char* password = "AP_PASSWORD";
void setup() {
Serial.begin(115200);
// Inicializar el WiFi
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);
// Imprimir la dirección IP del punto de acceso
Serial.println(WiFi.softAPIP());
}
void loop() {
// Nada que hacer
}
Programa 2: Dispositivo conectable 1 (B)
#include <WiFi.h>
const char* ssid = "AP_SSID";
const char* password = "AP_PASSWORD";
void setup() {
Serial.begin(115200);
// Conectarse al punto de acceso
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Imprimir la dirección IP del dispositivo
Serial.println(WiFi.localIP());
// Crear un servidor TCP
WiFiServer server(8080);
// Iniciar el servidor TCP
server.begin();
}
void loop() {
// Aceptar una conexión entrante
WiFiClient client = server.accept();
// Recibir un mensaje del cliente
String message = client.readString();
Serial.println(message);
// Enviar una respuesta al cliente
String response = "Hola, cliente!";
client.println(response);
// Cerrar la conexión
client.stop();
}
Programa 3: Dispositivo conectable 2 (C)
#include <WiFi.h>
const char* ssid = "AP_SSID";
const char* password = "AP_PASSWORD";
void setup() {
Serial.begin(115200);
// Conectarse al punto de acceso
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Imprimir la dirección IP del dispositivo
Serial.println(WiFi.localIP());
// Crear un cliente TCP
WiFiClient client;
client.connect(WiFi.softAPIP(), 8080);
// Enviar un mensaje al servidor
String message = "Hola, servidor!";
client.println(message);
// Recibir una respuesta del servidor
String response = client.readString();
Serial.println(response);
// Cerrar la conexión
client.stop();
}
void loop() {
// Nada que hacer
}
Para que estos programas funcionen, los tres microcontroladores ESP32 deben estar en el mismo rango de frecuencia WiFi. Además, el punto de acceso debe estar configurado con el mismo SSID y contraseña que los dispositivos conectables.
Aquí tienes una explicación paso a paso de cómo funcionan estos programas:
Programa 1: Punto de acceso (A)
- El programa configura el ESP32 como punto de acceso con el SSID y la contraseña especificados.
- El programa imprime la dirección IP del punto de acceso en el monitor serie.
Programa 2: Dispositivo conectable 1 (B)
- El programa se conecta al punto de acceso con el SSID y la contraseña especificados.
- El programa imprime la dirección IP del dispositivo en el monitor serie.
- El programa crea un servidor TCP en el puerto 8080.
- El programa inicia el servidor TCP.
- El programa espera a que un cliente se conecte al servidor.
- Cuando un cliente se conecta al servidor, el programa recibe un mensaje del cliente.
- El programa imprime el mensaje recibido del cliente en el monitor serie.
- El programa envía una respuesta al cliente.
Comentarios
Publicar un comentario