point-acces.ino

Arduino Nano ESP32 · Archivo : point-acces.ino · Lenguaje : Arduino · Uso : Créer un point d'accès WiFi pour configurer la carte

Sin red disponible, la Nano ESP32 se convierte en su propio punto de acceso: un móvil unido a NanoESP32-Config abre la página de ajustes alojada en la placa. El patrón de configuración de productos autónomos en 40 líneas.

Hardware

Un Arduino Nano ESP32 (ESP32-S3 de doble núcleo, Wi-Fi 2,4 GHz + Bluetooth Low Energy, formato físico compatible con el Nano, USB nativo, pines de 3,3 V únicamente). Nano ESP32 sola, un móvil o portátil para conectarse.

Cableado

Sin cableado; el AP aparece con IP fija 192.168.4.1 por el lado de la placa.

Funcionamiento

WiFi.softAP lanza el beacon WPA2; WebServer gestiona GET/POST con manejadores lambda. handleClient() en loop() atiende una petición por vuelta: basta para configurar.

Ejecución

Instala el paquete Arduino ESP32 Boards (o sigue la guía oficial del Nano ESP32), selecciona Arduino Nano ESP32 y carga. Los pines son de 3,3 V: nunca envíes 5 V a una entrada. El monitor serie usa el USB nativo.

Variantes

Cambia automáticamente a AP si la red principal falla 3 veces, o sirve una página con el escaneo WiFi para elegir la SSID.

point-acces.ino

// Mode point d'acces : la Nano ESP32 devient elle-meme le routeur.
// Utile pour la configuration ou l'usage sans infrastructure.
#include <WiFi.h>
#include <WebServer.h>

WebServer serveur(80);
const char AP_SSID[] = "NanoESP32-Config";
const char AP_PASS[] = "config1234"; // WPA2, min 8 caracteres

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_AP);
  WiFi.softAP(AP_SSID, AP_PASS);
  Serial.print(F("AP "));
  Serial.print(AP_SSID);
  Serial.print(F(" — IP "));
  Serial.println(WiFi.softAPIP()); // typiquement 192.168.4.1

  serveur.on("/", []() {
    serveur.send(200, "text/html",
      "<h3>Nano ESP32</h3>"
      "<form method='POST' action='/reglages'>"
      "Seuil <input name='seuil' value='512'>"
      "<button>Enregistrer</button></form>");
  });
  serveur.on("/reglages", HTTP_POST, []() {
    int seuil = serveur.arg("seuil").toInt();
    Serial.println("seuil=" + String(seuil));
    serveur.send(200, "text/plain", "enregistre");
  });
  serveur.begin();
}

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

← Volver a la ficha