NodeMCU/Arduino e collegamento WiFi

La prima parte del programma che gira su NodeMcu programmato come Arduino è necessariamente quella che si occupa della connessione wifi; a casa mia ci sono attualmente 3 accessi wifi, uno è il router e due access-point, quindi le prime istruzioni servono per rilevare quali connessioni wifi sono disponibili, quale selezionare fra queste quella di potenza maggiore e connettersi.

WiFi.scanNetworks restituisce il numero degli accessi wifi trovati nella scansione, WiFi.SSID(n) restituisce il nome della stazione WiFi dove n è un progressivo da 0 a wifi.scanNetworks -1, WiFi.RSSI(n) restituisce il livello di segnale della stazione.

Approfondiamo

Queste sono le istruzioni che permettono di impostare il nome della migliore stazione wifi ricevuta in nome_rete e la relativa password in psw_rete, naturalmente ho due reti con la stessa password per cui imposto quella come password e la cambio solo se ho beccato la rete con la password diversa.

Il return false che vedete come ultima istruzione serve perche’ queste istruzioni stanno in una funzione che restituisce l’esito della connessione con il server, se non trovo la rete wifi inutile che vado avanti, restituisco false in modo che il tempo di attesa prima di riprovarci sia piu’ breve.

// ------------- cerca rete wifi da utilizzare ------------- 
  int n = WiFi.scanNetworks(); 
  int livello = -100; 
  String nome_rete = ""; 
  if (n == 0) { 
    Serial.println("no networks found"); 
    return false; 
  } else { 
    Serial.print(n); 
    Serial.println(" networks found"); 
    for (int i = 0; i < n; ++i) { 
      delay(10); 
      if (WiFi.SSID(i) == "rete1" or WiFi.SSID(i) == "rete2" or WiFi.SSID(i) == "rete3") { 
        if (WiFi.RSSI(i) > livello) { livello = WiFi.RSSI(i); nome_rete = WiFi.SSID(i);} 
        } 
      } 
    } 
  String psw_rete = "aoaoaoaoaoao"; 
  if (nome_rete == "rete3 ") { psw_rete = "oaoaoaoaoaoa";} 
  if (nome_rete == "") { 
    Serial.println("nessuna rete conosciuta"); 
    return false; 
  } 

Vi ricordo che questo e’ solo l’inizio di un progetto, eventuali controlli e gestione degli errore verranno aggiunti in futuro, ma quando finisco vi metto a disposizione tutto il software per il download.

Ci risentiamo a breve, la prossima volta vedremo le istruzioni per trovare il server, naturalmente se avete suggerimenti sono sempre ben accetti.

Fine progetto

Come già detto in altri articoli su questo blog il progetto si è arenato per l’inaffidabilità dei nodemcu (forse perchè acquistati in cina a poco prezzo). Sorry.

Maurizio

Lascia un commento