connexion-wifi.ino
La conexión WiFi del Arduino Nano ESP32 usa la pila completa de ESP-IDF vía WiFi.h: modo estación, hostname DHCP, seguimiento RSSI y reconexión automática. El S3 solo ve la banda de 2,4 GHz: la primera trampa a conocer.
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, punto de acceso de 2,4 GHz (sin 5 GHz), credenciales actuales.
Cableado
Sin cableado; la antena PCB del módulo basta en interior, evita cajas metálicas.
Funcionamiento
WiFi.begin() es asíncrono: se sondea WiFi.status() con timeout. RSSI da la potencia recibida; el bucle vigila el enlace y relanza la conexión tras una caída.
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
Guarda las credenciales en NVS y ofrece un portal cautivo de configuración al primer arranque, o añade WiFi.setSleep(false) para reducir latencia.
connexion-wifi.ino
// Connexion WiFi de l'Arduino Nano ESP32 (coeur esp32, WiFi.h).
#include <WiFi.h>
const char SSID[] = "MonReseau";
const char PASS[] = "motdepassewifi";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.setHostname("nano-esp32");
WiFi.begin(SSID, PASS);
Serial.print("Connexion");
unsigned long t = millis();
while (WiFi.status() != WL_CONNECTED && millis() - t < 20000) {
delay(400);
Serial.print(".");
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println();
Serial.print(F("IP : "));
Serial.println(WiFi.localIP());
Serial.print(F("RSSI : "));
Serial.print(WiFi.RSSI());
Serial.println(F(" dBm"));
} else {
Serial.println(F(" ECHEC — verif SSID/mot de passe (2,4 GHz)"));
}
}
void loop() {
// temoin de liaison : reconnecte si le WiFi tombe
if (WiFi.status() != WL_CONNECTED) {
Serial.println(F("Liaison perdue, reconnexion..."));
WiFi.disconnect();
WiFi.begin(SSID, PASS);
}
delay(2000);
}