wifi_scan.ino
The Nicla Vision wireless module (ESP32-family part, driven by the core WiFiNINA library) sweeps Wi-Fi networks and prints SSID and signal strength. The first step before any connection, and already a coverage indicator.
Hardware
An Arduino Nicla Vision (STM32H7 M7+M4, 23×23 mm) with GC2145 camera, LSM6DSOX IMU, PDM mic, ToF (VL53Lx), ESP32 Wi-Fi/BLE module and RGB LED (LEDR/G/B). The board alone, USB-powered. On-board antenna; for a close test, a nearby access point is enough.
Wiring
No wiring: the module and its antenna are on board. The ceramic antenna sees ~10 m indoors.
How it works
WiFi.status() checks the module is alive; scanNetworks returns the network count, SSID(i)/RSSI(i) their traits. RSSI in dBm (roughly -50 strong, -85 marginal) rates the location.
Running it
Programmed from the Arduino IDE (ArduinoCore-mbed, NICLA_VISION target) over USB-C; Camera, PDM, Arduino_LSM6DSOX, WiFiNINA and ArduinoBLE libraries provided.
Variants
Join an SSID and push sensors over HTTP, scan periodically to map signal, or use RSSI as coarse positioning.
wifi_scan.ino
// Le module sans fil embarqué (famille ESP32, piloté comme un
// module NINA) sert de scanner Wi-Fi : liste des SSID + RSSI.
#include <WiFiNINA.h>
void setup() {
Serial.begin(115200);
while (!Serial) { ; }
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Module Wi-Fi absent !");
while (1) { ; }
}
Serial.println("Scan des réseaux...");
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("Aucun réseau trouvé");
}
for (int i = 0; i < n; i++) {
Serial.print(WiFi.SSID(i));
Serial.print(" ");
Serial.print(WiFi.RSSI(i));
Serial.println(" dBm");
}
Serial.println("Scan terminé.");
}
void loop() {
// Rien de périodique ici : le scan tourne une fois au boot.
}