Nota

Ciao, benvenuto nella Community degli Appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del team.

  • Apprendi e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti e ai teaser.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni speciali.

👉 Pronto per esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

Connettersi a Wi-Fi

Questo tutorial ti guiderà attraverso i passaggi essenziali per connettere il tuo board Arduino a una rete Wi-Fi. Imparerai come inizializzare il modulo Wi-Fi, verificare il firmware e unirti in modo sicuro a una rete utilizzando il suo SSID e password. Una volta connesso, scoprirai come monitorare importanti dettagli di rete come l’IP del tuo dispositivo e gli indirizzi MAC, nonché la potenza del segnale della rete, direttamente dalla console seriale. Questo tutorial serve sia come guida pratica alla connettività Wi-Fi che come introduzione al monitoraggio di rete con Arduino, aiutandoti a stabilire e mantenere una connessione Wi-Fi affidabile.

1. Carica il codice

Apri il file 01-wifi_connect.ino nel percorso elite-explorer-kit-main\r4_new_feature\01-wifi_connect, oppure copia questo codice nell”Arduino IDE.

Nota

Il supporto Wi-Fi® è abilitato tramite la libreria integrata WiFiS3 fornita con il Core Arduino UNO R4. Installando il core, viene automaticamente installata anche la libreria WiFiS3.

È ancora necessario creare o modificare arduino_secrets.h, sostituendo SECRET_SSID e SECRET_PASS con il nome e la password della rete Wi-Fi a cui desideri connetterti. Il file dovrebbe contenere:

// file intestazione arduino_secrets.h
#define SECRET_SSID "tuarete"
#define SECRET_PASS "tuapassword"
arduino_secrets.h
//arduino_secrets.h header file
#define SECRET_SSID "your_ssid"
#define SECRET_PASS "your_password"
01-wifi_connect.ino
  1/*
  2  This code is designed to establish a WiFi connection using a WiFi module 
  3  on an Arduino Uno R4 board. It initializes serial communication, verifies 
  4  the presence and firmware version of the WiFi module, attempts to connect 
  5  to a specified WiFi network, and once connected, prints network information 
  6  to the serial monitor. It continuously checks the network connection every 
  7  10 seconds in the loop.
  8
  9  Board: Arduino Uno R4 
 10*/
 11
 12
 13#include <WiFiS3.h>
 14
 15#include "arduino_secrets.h" 
 16///////please enter your sensitive data in the Secret tab/arduino_secrets.h
 17char ssid[] = SECRET_SSID;        // your network SSID (name)
 18char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
 19int status = WL_IDLE_STATUS;     // the WiFi radio's status
 20
 21void setup() {
 22  //Initialize serial and wait for port to open:
 23  Serial.begin(9600);
 24  
 25  while (!Serial) {
 26    ; // wait for serial port to connect. Needed for native USB port only
 27  }
 28
 29  // check for the WiFi module:
 30  if (WiFi.status() == WL_NO_MODULE) {
 31    Serial.println("Communication with WiFi module failed!");
 32    // don't continue
 33    while (true);
 34  }
 35
 36  String fv = WiFi.firmwareVersion();
 37  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
 38    Serial.println("Please upgrade the firmware");
 39  }
 40
 41  // attempt to connect to WiFi network:
 42  while (status != WL_CONNECTED) {
 43    Serial.print("Attempting to connect to WPA SSID: ");
 44    Serial.println(ssid);
 45    // Connect to WPA/WPA2 network:
 46    status = WiFi.begin(ssid, pass);
 47
 48    // wait 10 seconds for connection:
 49    delay(10000);
 50  }
 51
 52  // you're connected now, so print out the data:
 53  Serial.print("You're connected to the network");
 54  printCurrentNet();
 55  printWifiData();
 56
 57}
 58
 59void loop() {
 60  // check the network connection once every 10 seconds:
 61  delay(10000);
 62  printCurrentNet();
 63}
 64
 65void printWifiData() {
 66  // print your board's IP address:
 67  IPAddress ip = WiFi.localIP();
 68  Serial.print("IP Address: ");
 69  
 70  Serial.println(ip);
 71
 72  // print your MAC address:
 73  byte mac[6];
 74  WiFi.macAddress(mac);
 75  Serial.print("MAC address: ");
 76  printMacAddress(mac);
 77}
 78
 79void printCurrentNet() {
 80  // print the SSID of the network you're attached to:
 81  Serial.print("SSID: ");
 82  Serial.println(WiFi.SSID());
 83
 84  // print the MAC address of the router you're attached to:
 85  byte bssid[6];
 86  WiFi.BSSID(bssid);
 87  Serial.print("BSSID: ");
 88  printMacAddress(bssid);
 89
 90  // print the received signal strength:
 91  long rssi = WiFi.RSSI();
 92  Serial.print("signal strength (RSSI):");
 93  Serial.println(rssi);
 94
 95  // print the encryption type:
 96  byte encryption = WiFi.encryptionType();
 97  Serial.print("Encryption Type:");
 98  Serial.println(encryption, HEX);
 99  Serial.println();
100}
101
102void printMacAddress(byte mac[]) {
103  for (int i = 5; i >= 0; i--) {
104    if (mac[i] < 16) {
105      Serial.print("0");
106    }
107    Serial.print(mac[i], HEX);
108    if (i > 0) {
109      Serial.print(":");
110    }
111  }
112  Serial.println();
113}

Apri il monitor seriale e vedrai un contenuto simile a quanto segue. Arduino mostrerà l’IP e gli indirizzi MAC del tuo dispositivo, nonché la potenza del segnale della rete.

../_images/01_1_wifi.png

2. Spiegazione del codice

  1. Inclusione delle Librerie e Dati Segreti

    #include <WiFiS3.h>
    #include "arduino_secrets.h"
    
    • WiFiS3 è una libreria che fornisce funzioni per la connettività Wi-Fi. Installando il core R4, viene automaticamente installata la libreria WiFiS3.

    • arduino_secrets.h è un file separato dove vengono conservati SSID e password per evitare la loro esposizione nel codice principale. Conservare rete e password separatamente riduce la condivisione accidentale delle credenziali Wi-Fi.


  2. Dichiarazione di Variabili Globali

    char ssid[] = SECRET_SSID;
    char pass[] = SECRET_PASS;
    int status = WL_IDLE_STATUS;
    
    • ssid e pass contengono il nome della tua rete e la password.

    • status memorizza lo stato attuale della connessione Wi-Fi.


  3. Funzione setup()

    L’interfaccia seriale viene inizializzata con un baud rate di 9600. La linea while (!Serial); assicura che il programma attenda finché la connessione seriale non è stabilita.

    void setup() {
        //Initialize serial and wait for port to open:
        Serial.begin(9600);
        while (!Serial) {
          ; // wait for serial port to connect. Needed for native USB port only
        }
        ...
    }
    

    E quindi, il codice verifica se il modulo Wi-Fi è disponibile o meno. Se non lo è, il programma si interromperà, impedendo efficacemente qualsiasi ulteriore esecuzione.

    ...
    // check for the WiFi module:
    if (WiFi.status() == WL_NO_MODULE) {
        Serial.println("Communication with WiFi module failed!");
        // don't continue
        while (true);
    }
    ...
    

    In questa parte del codice, controlliamo se la versione del firmware di uno R4 WiFi è aggiornata. Se non è l’ultima versione, verrà visualizzato un prompt per l’aggiornamento. Puoi fare riferimento a Aggiorna il firmware del modulo radio sulla tua scheda UNO R4 WiFi per l’aggiornamento del firmware.

    ...
    String fv = WiFi.firmwareVersion();
    if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
        Serial.println("Please upgrade the firmware");
    }
    ...
    
  4. Funzione loop()

    void loop() {
      // check the network connection once every 10 seconds:
      delay(10000);
      printCurrentNet();
    }
    
    • Ogni 10 secondi, la funzione printCurrentNet() viene chiamata per stampare i dettagli attuali della rete.

Riferimenti