In questo articolo vedremo come aggiornare il firmware dello shield WiFi per Arduino. Operazione necessaria se usate Arduino IDE 10.4 o versioni superiori.
Nel tutorial si utilizza Arduino UNO R3 e Arduino IDE 10.5-r2
NOTA: Nella sez. Dawnloads/Elettronica del sito trovi un file .zip con tutto ciò che ti serve: driver usb, firmware, FLIP, questo tutorial ed altro.
- Verificare se il vostro WiFi Shield necessita dell’aggiornamento
Inserire il WiFi Sheld sulla vostra scheda Arduino Uno R3
Aprire il vostro Arduino IDE e cari caricare il file: File/Esempi/WiFi/ScanNetwork
Collegare la scheda Arduino e caricare il programma.
ATTENZIONE: Aggiungere le seguenti righe evidenziate se non presenti nel codice!
String fv = WiFi.firmwareVersion();
if (fv != "1.1.0") {
Serial.println("Please upgrade the firmware");
}
// Print WiFi MAC address:
printMacAddress();
In alternativa copiare il codice dal seguente link: https://www.arduino.cc/en/Tutorial/ScanNetworks ed eseguire quest’ultimo
Aprire il terminale: Strumenti/monitor seriale e verificare se compare il messaggio “Please upgrade the firmware” prima dell’indirizzo MAC. Se si DOVETE AGGIORNARE IL FIRMWARE!
Come ulteriore prova potete provare a caricare l’esempio: File/Esempi/WiFi/SimpleWebServerWiFi.
Impostare il vostro SSID e la vostra password nelle apposite righe
char ssid[] = "yourNetwork"; // your network SSID (name)
char pass[] = "secretPassword"; // your network password
Caricare il programma e aprire il Monitor Seriale. Aprire un browser e digitare il link che trovate nel monitor. Se la pagina web non compare e ricevete un messaggio di errore…dovete aggiornare il firmware!
Nota: Analogamente se provate con l’esempio WiFiChatServer e accedendo mediante Telnet (comando: open 192.168.0.14) ricevete un messaggio tipo “connection refused” … e chiaro che DOVETE AGGIORNARE IL FIRMWARE!
Come Aggiornare il firmware della WiFi Shield
Cosa ci serve (procedura per Windows 10):
- Cavetto mini-USB per collegare lo shield al PC
- Cavallotto per mettere lo shield in modalità programmazione (già presente sulla scheda…se non lo avete perso)
- Driver per la usb dello shield (AVR 32 Drivers) scaricabile da qui: https://www.arduino.cc/en/uploads/Hacking/AVR32_USB_Driver.zip
- Il programma per caricare il firmware sullo shield fornito da ATMEL (Flip) scaricabile da qui: http://www.atmel.com/tools/FLIP.aspx NOTA: Non verrà utilizzata l’interfaccia grafica del programma ma solo uno dei suo file da riga di comando
- I file (firmware) da caricare sullo shield per aggiornare il firmware presenti nella cartella di Arduino IDE: C:\Program Files (x86)\Arduino\hardware\arduino\firmwares\wifishield\binary (in particolare i file: wifi_dnld.elf, wifi_dnld.hex e wifiHD.elf, wifiHD.hex)
o, in alternativa i file prelevati dalla cartella binary a questo link: (here) https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/firmwares/wifishield/binary
Procedimento:
- Separare lo shield dalla scheda Arduino UNO
- Collegare il cavallotto in modalità programmazione, ovvero cortocircuitare i due pin (DFU programming jumper).
- Collegare lo shield WiFi al PC mediante la mini-USB ed installare il driver USB della scheda:
- Scompatare il file .zip con i driver scaricato al punto 3 precedente (AVR 32 Drivers)
- Andare in Pannello di controllo/Gestione dispositivi (in windows 10 è sufficiente scrivere “Gestione dispositivi” nella finestra di ricerca di cortana per trovarlo).
- Click destro sul nome del dispositivo (AT32UC3A che dovrebbe avere un ? vicino a significare che il drive non è installato) quindi “Aggiornamento software driver…” e poi “Cerca il software nel drive del computer” quindi selezionare la cartella USB scompattata al passo a. e procedere con l’installazione. Ad installazione avvenuta la finestra “Gestione dispositivi” si presenta come in figura
- Istallare il software FLIP di ATMEL scaricato al punto 4 precedente. A fine installazione posizionarsi nella cartella bin del software (click destro sull’icona del programma poi proprietà quindi “Apri percorso file” oppure cercarla con esplora risorse). Percorso simile a questo: “C:\Program Files (x86)\Atmel\Flip 3.4.7\bin”. Da qui, sempre mediante esplora risorse, aprire il propmt dei comandi come amministratore (File/Apri prompt dei comandi”/Apri prompt dei comandi come amministratore). NOTA: il file evidenziato sarà quello che utilizzeremo da riga di comando per l’upgrade
- Copiare i file contenenti il firmware presenti nella cartella :
C:\Program Files (x86)\Arduino\hardware\arduino\firmwares\wifishield\binary nella radice del disco C:\ (potranno essere rimossi a fine installazione) - Leggere sul chip del ‘ATMEL la sigla dell’integrato. Sulla mia shield sotto ATMEL ho trovato questa sigla: 32UC3A1512 (ma potreste trovare quest’altra 32UC3A1256).
- Installazione del firmware (due passaggi). Scrivere il seguente comando nella finestra del prompt:
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer \wifi_dnld.elf program verify start reset 0 e premere invio. NOTA: se il vostro chip ha sigla diversa sostituire il nome AT32UC3A1512 con AT32UC3A1256
Se non ci sono errori il risultato sarà simile al seguente:
|
- Ripetere lo stesso comando del punto precedente modificando il nome del file in wifiHD.elf:
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer \wifiHD.elf program verify start reset 0 e premere invio.
Anche qui se non ci sono errori il risultato dovrebbe essere simile al seguente
|
Installazione terminata. Scollegare il cavo USB e togliere il ponticello di predisposizione alla programmazione. Ora la scheda è pronta e funzionerà regolarmente con i programmi di esempio visti in precedenza
NOTA: Nel secondo passaggio (punto 8) ho ricevuto un errore di comunicazione con la USB e l’operazione si è interrotta. E’ stato sufficiente scollegare e ricollegare i cavo USB dal PC e poi riprovare. Questa volta tutto è andato a buon fine!
La documentazione ufficiale sul sito di Arduino:
https://www.arduino.cc/en/Main/ArduinoWiFiShield
https://www.arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading
https://www.arduino.cc/en/Guide/ArduinoWiFiShield#toc4