Arduino WiFi101 – Come integrare la WiFi su Arduino e Genuino

Introduzione

Forse uno dei passi in avanti più importanti per tutti i possessori di una scheda Arduino è quella di poterla utilizzare via WiFi. La comunicazione Wireless estende notevolmente le potenzialità e l’applicabilità di queste schede. A tale riguardo Arduino ha prodotto MKR1000, l’ultima tra le schede Arduino-Genuino che oltre alle sue minori dimensioni ha già al suo interno integrato la WiFi. Mentre per chi è in possesso di schede tipo Arduino UNO, Arduino Leonardo e Arduino ZERO, e Arduino Mega è stato messo in commercio un potente WiFI Shield in modo da potenziarle così con una comunicazione WiFi.

Arduino WiFi Shield 101

Arduino WiFi Shield 101 è un accessorio molto utile per l’IoT. Purtroppo in Italia non è molto commercializzata ed è difficile da poter trovare. Ecco le caratteristiche tecniche dello shield

  • Operating voltage both 3.3V and 5V (supplied from the host board)
  • Connection via: IEEE 802.11 b/g/n for up to 72 Mbps networks
  • Encryption types: WEP and WPA2 Personal
  • Support TLS 1.1 (SHA256)
  • Connection with Arduino or Genuino on SPI port
  • Onboard CryptoAuthentication by ATMEL

La scheda connessa allo shield comunica con il WiFi shield 101 utilizzando il bus SPI. Questo equivale ai pin 11, 12 e 13 sul Arduino UNO ed ai pin 50,51 e 52 su Arduino Mega. Su entrambe le schede il pin 10 è utilizzato come SS.

Arduino – Genuino MKR1000

Abbiamo già trattato in un altro articolo la scheda Arduino MKR1000 o Genuino MKR1000 e le sue altissime potenzialità. Scheda nata principalmente per integrare i propri progetti nel mondo dell’Internet of Things (IoT), ha già al suo interno la WiFi integrata. Per quanto riguarda i costi sono principalmente convenienti rispetto alla coppia Scheda + Shield, per non poi considerare le ridotte dimensioni rispetto alla configurazione a sandwich della soluzione precedente. Questo facilita notevolmente l’integrazione di tale scheda in apparati meccanici o sensori senza occupare notevole spazio.

Arduino MKR1000 Wifi  

Se sei interessato a sapere di più ti consiglio di leggere questo articolo.

La libreria WiFi101

Ma il vero nocciolo di tutto l’articolo è proprio la libreria WiFi101. Questa libreria è già inclusa all’interno di Arduino IDE ed è universale, cioè è valida sia per il nuovo MKR1000 che per lo shield WiFi 101. Inoltre è stata sviluppata per poter lavorare con i vecchi progetti WiFi che funzionavano con le precedenti librerie. In questo modo potrai utilizzare lo stesso codice su modelli diversi di Arduino senza doverti poi preoccupare troppo. Infatti la libreria WiFi101 è molto simile alle librerie Ethernet ed WiFi, e molte funzioni vengono richiamate con lo stesso nome, quindi se hai già familiarità con queste librerie ti troverai facilmente a tuo agio con la nuova libreria, senza dover ricominciare a studiare tutto da capo.

Se sei interessato ad approfondimenti puoi andare a consultare la pagina ufficiale di Arduino in cui è presente una sezione completamente dedicata a questa libreria (vedi qui).

Una delle caratteristiche che sono state introdotte in questi due nuovi sistemi WiFi per Arduino, e nella nuova release della libreria WiFi101 è la cripto-autenticazione. Sviluppata dalla ATMEL, questa tecnologia permette di adeguarsi ai nuovi standard qualitativi della IoT, ma al tempo stesso di rimanere trasparente a chi la utilizza in modo da non perdersi troppo in tecnicismi elevati e lasciandoti il gusto di pensare solamente al tuo progetto. Infatti la connessione della scheda o dello shield ad una rete WiFi è abbastanza semplice, nessuna ulteriore configurazione è richiesta oltre alle usuali SSID e password.

La libreria contiene funzioni che ti permettono di impostare il tuo Arduino (o Genuino) sia come server che come client, ed inoltre supporta la crittografia dei dati WEP e WPA2, in modo da rendere più sicure il trasferimento dei dati.

Installazione del Firmware WiFi

La libreria WiFi101, per poter funzionare correttamente, richiede che la tua scheda o il tuo shield abbiano un firmware corrispondente installato. Le versioni del firmware e della libreria vanno di pari passo, quindi se aggiorni la libreria, dovrai di conseguenza aggiornare il firmware, o viceversa.

Per controllare se la libreria WiFI è installata e che versione sia, puoi consultare il Library Manager all’interno dell’Arduino IDE.

Una volta aperto il Library Manager, vedrai un elenco enorme di librerie disponibili (sia installate che non). Filtra i risultati per WiFi

Se la libreria WiFi non è installata o esiste una libreria più aggiornata. Seleziona l’ultima versione dal menu a discesa e poi clicca sul pulsante Installa.

Una volta installata la libreria dobbiamo di conseguenza controllare anche la versione del firmware della scheda o dello shield. Esiste uno sketch apposito che controlla la versione del Firmware presente sulla scheda o sullo shield e ti avverte se hai bisogno di un aggiornamento.

/*
 * This example check if the firmware loaded on the Wifi101
 * shield is updated.
 *
 * Circuit:
 * - WiFi101 Shield attached
 *
 * Created 29 July 2015 by Cristian Maglie
 * This code is in the public domain.
 */
 #include <SPI.h>
 #include <WiFi101.h>

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

     // Print a welcome message
     Serial.println("WiFi101 firmware check.");
     Serial.println();

     // Check for the presence of the shield
     Serial.print("WiFi101 shield: ");
     if (WiFi.status() == WL_NO_SHIELD) {
         Serial.println("NOT PRESENT");
         return; // don't continue
     }
     Serial.println("DETECTED");

     // Print firmware version on the shield
     String fv = WiFi.firmwareVersion();
     Serial.print("Firmware version installed: ");
     Serial.println(fv);

     // Print required firmware version
     Serial.print("Firmware version required : ");
     Serial.println(WIFI_FIRMWARE_REQUIRED);

     // Check if the required version is installed
     Serial.println();
     if (fv == WIFI_FIRMWARE_REQUIRED) {
         Serial.println("Check result: PASSED");
     } else {
         Serial.println("Check result: NOT PASSED");
         Serial.println(" - The firmware version on the shield do not match the");
         Serial.println(" version required by the library, you may experience");
         Serial.println(" issues or failures.");
     }
 }

void loop() {
      // do nothing
 }

Nel mio caso eseguendo lo sketch, ha rilevato che sulla scheda MKR1000 ho l’ultima versione di firmware e quindi non necessito l’aggiornamento.

Se invece è necessario installare una nuova versione di firmare, dovete per prima cosa caricare il FirmwareUpdate.h. Per farlo, non dovete fare altro che andare sotto Esempi > WiFi101 > FirmwareUpdater. Verrà caricato uno sketch. Lanciatelo.

Adesso possiamo proseguire, e andate sul menu Strumenti > WiFi101 Firmware Updater.

E poi vi apparirà una finestra in cui è possibile sia aggiornare il firmware che le certificazioni.

Selezionate la porta seriale che state utilizzando, effettuate il test di connessione. Poi importantissimo selezionate il tipo di modello WiFi.

Per controllare quale modello scegliere, osservate sulla scheda o sullo shield il modello di chip WiFi installato. Nella prima riga sull’adesivo bianco  è presente il modello del microcontrollore: potrebbe essere o MR210PA (allora scegliete il firmware Model A) o MR510PB (allora scegliete il firmware Model B).

Infine installate il firmware.

Fare l’Upload del Certificato

Con lo stesso tool è possibile caricare i certificati Root Certificate sul modulo WiFi per poter accedere in modo sicuro su determinati siti web.

I root certificates sono costituiti da un numero limitato di certification authorities, ed è difficile conoscere quale di questi stia utilizzando il sito a cui vogliamo accedere. Ma questo tool ci rende le cose facili, richiedendoci di inserire solo l’URL del sito. Se ne occuperà il tool di cercare la tipologia di certification authorities richiesta, scaricarla da internet e poi caricarla sul modulo WiFi.

Il modulo WiFi101 può contenere al massimo 10 certificati contemporaneamente, ma il numero di authorities è molto limitato e quindi questo spazio dovrebbe essere più che sufficiente per qualsiasi progetto a cui stiate lavorando.

Quindi andate nell’ultima parte del tool ed inserite l’URL del sito a cui volete accedere.

Alla fine della procedura un messaggio di conferma ti avviserà della corretta installazione del certificato.

Conclusioni

In questo articolo abbiamo visto come integrare i nostri progetti su Arduino con un sistema WiFi fornendo tutti gli strumenti necessari per farlo. Dallo WiFi101 shield per le schede Arduino, fino al modello Arduino MKR1000 ( Genuino MKR1000) in cui il WiFi è già integrato. Inoltre abbiamo visto come installare e configurare correttamente il firmware e la libreria WiFi101. Nei prossimi articoli vedremo alcuni esempi utili su come utilizzarla.

1 commento su “Arduino WiFi101 – Come integrare la WiFi su Arduino e Genuino

  1. novski

    i reworked the mac address printout. here is a functional sample:

    Serial.print(“MAC address:”);
    WiFi.macAddress(mac);
    int i = 5;
    for (i==0; mac[i];i–){
    if (mac[i]<16){Serial.print("0");}
    Serial.print(mac[i], HEX);
    Serial.print(":");
    }

    your sample swalowed the zeros because the mac address comes in multiplies of hex like '116' = "74" but a '13' is actualy "0D" but gets printed as "D"
    cheers, Novski

Lascia un commento