wifi_scan.ino

Arduino Nicla Vision · Fichier : wifi_scan.ino · Langage : Arduino · Usage : Lister les réseaux Wi-Fi via le module NINA

Le module sans fil de la Nicla Vision (composant famille ESP32, piloté par la bibliothèque WiFiNINA du core) balaie les réseaux Wi-Fi et affiche SSID et puissance. Premier pas avant toute connexion, et déjà un indicateur de couverture réseau.

Matériel requis

Une Arduino Nicla Vision (STM32H7 double cœur M7+M4, 23×23 mm) avec caméra GC2145 2 MP, IMU LSM6DSOX, micro PDM, capteur ToF (famille VL53Lx), module sans fil ESP32 (Wi-Fi/BLE) et LED RGB (LEDR=23, LEDG=24, LEDB=25). La carte seule, alimentée par USB. Antenne embarquée ; pour un test rapproché, un point d’accès à proximité suffit.

Câblage

Aucun câblage : le module est sur la carte, l’antenne aussi. L’antenne céramique voit ~10 m en intérieur.

Fonctionnement

WiFi.status() vérifie la présence du module ; scanNetworks renvoie le nombre de réseaux, SSID(i)/RSSI(i) leurs caractéristiques. Le RSSI en dBm (typiquement -50 fort, -85 limite) qualifie l’emplacement.

Exécution

Programmation via Arduino IDE (core ArduinoCore-mbed, target NICLA_VISION) sur le port USB-C ; bibliothèques Camera, PDM, Arduino_LSM6DSOX, WiFiNINA et ArduinoBLE fournies.

Variantes

Se connecter à un SSID et pousser les capteurs en HTTP, scanner périodiquement pour cartographier la puissance, ou utiliser le RSSI comme géolocalisation grossière.

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.
}

← Retour à la fiche