Vuoi sviluppare un progetto di domotica e hai bisogno di una scheda che oltre a gestire dei sensori possa anche collegarsi alla tua rete Wi-Fi domestica, come fare?
In giro sul web puoi trovare molte soluzioni e talvolta non è facile capire quale può fare al caso tuo.
Personalmente la prima soluzione che ti presento è la Arduino Uno Wi-Fi Rev2.
Il suo principale punto di forza è il fatto di avere in un unico oggetto delle dimensioni di una carta di credito un sistema che unisce le potenzialità di Arduino alla connettività senza fili.
Prima di continuare voglio porre l’attenzione sull’architettura hardware di questa scheda: è basata sul microcontrollore ATMEGA4809, ciò la rende fondamentalmente incompatibile con codice di basso livello scritto per la Arduino Uno, a sua volta basata su ATMEGA328P.
Se la tua intenzione quindi è quella di recuperare un vecchio progetto Arduino Uno aggiungendo connettività WiFi, fai attenzione al tipo di librerie che hai utilizzato.
Vediamo più da vicino come fare lo startup di questa board.
Arduino è una piattaforma hardware composta da una serie di schede elettroniche dotate di un microcontrollore. È stata ideata e sviluppata in data 2003 da alcuni membri dell’Interaction Design Institute di Ivrea come strumento per la prototipazione rapida e per scopi hobbistici, didattici e professionali.
A differenza di altre schede della stessa casa, la Arduino Uno Wi-Fi Rev2 monta un modulo WiFi integrato ESP8266 ed è basata sull’ATmega4809. Il modulo ESP8266 è un SoC (System on a Chip) con uno stack TCP/IP integrato che permette di connettersi a reti Wi-Fi o addirittura di fungere da access point.
Prima di procedere ti consiglio vivamente di acquistare, oltre alla board acquistabile qui anche un cavo USB come questo per poter connettere la scheda al tuo PC.
Prepariamo l’IDE
Come tutte le schede Arduino, anche la Uno Wi-Fi è completamente integrata nell’IDE di sviluppo ufficiale.
Prima di fare il setup di questa scheda, procedi ad installare il tool di sviluppo da questo link, scaricando l’installer compatibile con il tuo sistema operativo.
Di seguito ti propongo uno dei tanti video presenti in rete che ti mostrano come installare passo passo il tool di sviluppo di Arduino:
Terminata l’installazione è necessario scaricare un pacchetto di upgrade per il riconoscimento delle schede Arduino Wi-Fi.
È possibile che la versione da te installata sia già in grado di riconoscerle, in ogni caso per completezza ti mostro quali sono i passi da compiere per avere l’IDE pronto all’uso.
Lancia dunque l’IDE di Arduino, ti ritroverai una schermata simile a questa:

Clicca su Strumenti > Scheda: “Arduino/Genuino Uno” > Gestore schede…:

Nella barra di ricerca della finestra che ti comparirà digita la seguente stringa di testo: Arduino&Uno&WiFi&Rev2.
Così facendo filtriamo il pacchetto di upgrade che ci servirà per poter programmare la nostra scheda.
Se non risulta già installato, clicca sul pulsate Installa.

Come ultimo step per preparare il nostro IDE all’utilizzo della board, dobbiamo installare le librerie WiFiNINA che semplificano l’utilizzo della scheda dal punto di vista delle connessioni WiFi.
Per fare questo, clicca su Strumenti > Gestione librerie… e poi scrivi nella barra di ricerca WiFiNINA. Clicca su Installa e attendi il termine della procedura.

Connettiamo la scheda!
A questo punto, riavvia l’IDE di Arduino e successivamente connetti la tua scheda al PC con il cavo USB dedicato.
Sempre dal menù, clicca su Strumenti > Scheda: “Arduino/Genuino Uno” > Arduino Uno WiFi Rev2:

Infine selezioniamo la porta di comunicazione corretta così da poter caricare qualsiasi sketch, per far questo clicchiamo su Strumenti -> Porta e selezioniamo la COM che riporta la dicitura tra parentesi Arduino Uno WiFi Rev2.

Connettiamoci!
Bene, adesso abbiamo tutto pronto per poterci collegare alla nostra rete wireless. Copia e incolla nel tuo IDE questo sketch avendo cura di cambiare i parametri
- ssid: ovvero il nome della tua rete Wi-Fi;
- pass: la password di accesso;
Come avrai avuto modo di osservare, il programma oltre a collegarsi alla tua rete wireless trasforma la scheda arduino in un vero e proprio web server.
Dall’IDE di sviluppo, una volta incollato lo sketch procediamo a caricarlo nella nostra scheda.
Clicca sul pulsante Carica e attendi che il processo di caricamento sia completato.

Possiamo aprire il monitor seriale così da visualizzare l’output stampato a schermo e verificare il corretto funzionamento della nostra scheda.
Clicca su Strumenti > Monitor seriale:

Se tutto è andato a buon fine dovresti vedere una finestra che riporta l’IP assegnato dal tuo router alla scheda Arduino:

Web Server
Nell’esempio che ti riporto, siamo riusciti a collegarci con successo alla nostra rete wlan-ap e il router ci ha assegnato un indirizzo IP pari a 192.168.1.103.
Se proviamo adesso a collegarci a questo indirizzo IP da un browser di un PC connesso alla stessa rete, questo è il risultato che otteniamo:

Lo sketch caricato ha trasformato la nostra board in un server web che risponde attivamente alla porta standard HTTP (80). Collegandoci da browser all’indirizzo IP della scheda dunque abbiamo inviato una richiesta HTTP al web server che ci risponde con una pagina nel quale sono riportati i valori di 6 input analogici disponibili sulla scheda stessa.

Conclusioni
La Arduino Uno WiFi, nella sua seconda revisione, rappresenta un buon compromesso per chi vuole affacciarsi al mondo dell’IoT. A scapito di un prezzo non proprio basso, offre ottime prestazioni e una soluzione di connettività senza fili completamente integrata.
Cosa da notare, molto importante, è la ridotta compatibilità con le librerie standard di Arduino.
A differenza di quanto il nome possa far credere, l’architettura della ATMEGA4809 su cui questo modello si basa è molto differente dall’architettura della Uno. Ciò implica che alcune delle librerie usabili sulla Arduino Uno che fanno uso di registri e timer avranno difficoltà a compilare su questa board.
Complimenti per l’esempio riportato che ha funzionato al primo tentativo.
Hai mica qualche altro esempio?
Grazie
Francesco
Ciao Francesco,
grazie mille del tuo commento!
Guarda, ti consiglio di visitare la pagina di riferimento della libreria WiFiNINA dove potrai trovare altri sketch funzionanti compatibili con questa board!
Fammi sapere se ti serve altro!
Vorrei sapere se sia compatibile con la libreria dei servomotori.
Dovrei creare per l’esame di stato un robottino che utilizza 12 servo infatti avevo pensato di usare Arduino mega con wifi integrato. Ma da quello che ho letto non riesco a capire se riuscirò a farlo muovere tramite una pagina web. Potresti chiarire i miei dubbi?
Grazie in anticipo
Ciao Federico,
giusto per essere sicuro, quando fai riferimento alla libreria dei servomotori intendi questa o una differente?
In quel caso posso dirti che ho provato a fare un semplice sketch che la importa e non ci sono stati problemi in fase di compilazione. Quindi direi che è compatibile!
ciao, l’esempio che hai compilato è molto interessante, funziona tutto sino al monitor seriale, il problema è che una volta copiato l’ip, poi inserendo l’ip sul browser (chrome o microsoft edge) non riesco ad aprire la pagina, ho provato a disattivare i firewall, ho provato a collegarmi dall’hotspot del cellulare, ho provato a togliere la password senza nessun risultato. cosa posso provare?
Ciao Giuseppe,
innanzitutto grazie del commento!
La prima cosa che ti consiglio di fare è provare a pingare il tuo arduino.
Apri un prompt dei comandi di Windows e digita “ping indirizzo-ip”, senza le virgolette!
Che risultato ottieni?
ti ringrazio per la risposta,
ho provato a pingare il mio arduino e sembrerebbe che risponda correttamente, questo è il risultato:
Risposta da 192.168.1.112: byte=32 durata=13ms TTL=255
ti ringrazio per la risposta,
ho provato il ping e sembra che l’arduino venga trovato correttamente, questo è il valore trovato:
Risposta da 192.168.1.112: byte=32 durata=13ms TTL=255
non so proprio che gli prenda.
Beh senz’altro se riesci a raggiungerlo dal PC da cui vuoi accedere alla pagina web direi che l’errore è da qualche altra parte.
Potrebbe essere nel codice, ma dubito visto che l’avrai copiato direttamente dal sito, oppure nelle impostazioni del tuo router che per qualche motivo filtra le connessioni.
Per levarsi ogni dubbio ti chiedo altre 2 cose:
1) lato monitor seriale vedi che viene stampato qualcosa quando fai la richiesta di connessione dal tuo browser?
2) hai provato a usare un altro PC connesso sempre alla tua rete WiFi per accedere ad Arduino? Ti consiglio sempre di fare il test del ping prima, così da essere certo che di essere nella stessa rete!
dal lato monitor quando apro la pagina dal browser del pc o telefono non succede nulla, come wifi ho provato quello di casa e l’hotspot del cellulare, ma con lo stesso risultato, ho anche provato a togliere pure la password. chissà dove sarà il problema, forse nella scheda?
da quel che hai scritto date le limitazioni di questa scheda forse era meglio l’arduino semplice.
Ciao Giuseppe,
per quanto riguarda le limitazioni, in realtà non dovrebbero esserci per quello che è l’obiettivo che ti stai ponendo. I limiti che ho riscontrato sono se si vuole andare ad utilizzare librerie particolari che sono state scritte per l’architettura della Uno.
Ad ogni modo, diciamo che dai dettagli che ho mi verrebbe da consigliarti di provare con diversi browser (Edge, Chrome, Firefox…) e se ti è possibile con un altro PC. L’alternativa potrebbe essere nel router, che magari filtra il traffico nella tua rete…
Fammi sapere se posso esserti di aiuto!
Ottima guida.
Ho appena ricevuto la scheda e con il tuo contributo l’ho pututa mettere in funzione.
Grazie.
E’ un piacere, Federico.
Molto interessante e perfettamente spiegato, ma una domanda da neofita: con le nuove board Mega 2560 R3+wifi che si trovano in commercio ultimamene è possibile caricare uno sketch sull Atmega tramite il modulo esp8266 già integrato senza il collegamento usb?
Grazie dell’aiuto
Paolo
Ciao Paolo,
grazie per avermi scritto!
Guarda, sinceramente non ho mai provato a caricare uno sketch in modalità OTA (Over The Air), però so che è effettivamente possibile!
Non so se hai avuto già modo di visionarla, però nel dubbio ti rimando a una delle tante discussioni sul forum ufficiale: https://forum.arduino.cc/index.php?topic=630235.0.
A presto,
Macheronte
Tutorial utilissimo, grazie. Ne esiste anche uno su come collegarsi da Internet e non solo nella WIFI locale?
Ciao Emanuele,
ti ringrazio per il commento!
Dunque, per potersi collegare via Internet al tuo Arduino Uno, quello che devi fare (una volta seguito questo tutorial) è aprire una porta del tuo router in modo che sia raggiungibile dall’esterno e redirezionare il traffico che arriva a quella porta verso l’IP dell’Arduino Uno. Questa tecnica si chiama port forwarding.
Detto così sembra complicato, in realtà è abbastanza semplice se sai dove andare a trovare le impostazioni del tuo router. Purtroppo, come potrai immaginare, scrivere una guida esaustiva è difficile perchè ogni router ha le sue interfacce di amministrazione.
Ad ogni modo, ti linko questa pagina e questa dove puoi trovare qualche consiglio più specifico.
Spero di esserti stato di aiuto. Se hai bisogno, non esitare a scrivere!
A presto,
Macheronte
Grazie per la veloce risposta. Proverò.