Para crear un Access Point se usa de la libreria la intrucción WIFI.softAP()
Como base se tiene el ejercicio de una página web para encender o apagar el LED incorporado.
En ésta ocasión no es necesario conectarse a un router, el AP aparece en la lista de dispositivos circundantes. Se selecciona y se ingresa con el nombre de red y la contraseña.
/* ESP32 Soft AP con web server para encender LED_Pin
forma básica con la función inicia_wifi
Referencia: https://www.arduino.cc/en/Tutorial/WiFiWebServer
*/
#include <WiFi.h>
const char* ssid = "iotirni19_AP";
const char* password = "xxxxx";
// puerto de servidor web 80
const PROGMEM uint8_t puertoweb = 80;
WiFiServer server(puertoweb);
// LED monitor interno
//ESP01-pin=1, ESP07-pin=2; ESP32-pin=5
const PROGMEM uint8_t LED_pin = 5;
int LED_estado = 0;
void setup()
{
// Conexion serial
Serial.begin(115200);
Serial.setTimeout(500);
// espera inicializar serial
while(!Serial) { }
// LED monitor
pinMode(LED_pin, OUTPUT);
delay(10);
// Convertir en AP
WiFi.softAP(ssid, password);
//inicia_wifi(); // no se conecta a un router
server.begin();
}
void loop(){
WiFiClient client = server.available();
if (client){
String linea = "";
Serial.println();
Serial.println("Nuevo cliente.");
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
// Si recibe fin de linea y la linea es vacia,
// la peticion http finalizó, se responde:
if (linea.length() == 0) {
// HTTP headers inician con ésta secuencia:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
// contenido despues de headers
client.print("LED estado: ");
client.print(String(LED_estado)+"
");
client.print("Click <a href=\"/H\">ENCIENDE LED</a><br>");
client.print("Click <a href=\"/L\"> APAGA LED</a><br>");
// finaliza contenido:
client.println();
// sale del lazo:
break;
} else {
linea = "";
}
} else if (c != '\r') {
linea = linea + c;
}
// Revisa click del cliente "GET /H" or "GET /L":
if (linea.endsWith("GET /H")) {
digitalWrite(LED_pin, HIGH);
LED_estado = 1;
}
if (linea.endsWith("GET /L")) {
digitalWrite(LED_pin, LOW);
LED_estado = 0;
}
}
}
delay(1); // espera que browser procese
client.stop(); // cierra conexión:
Serial.println("Cliente desconectado.");
}
}

