Stampa
Categoria: Elettronica
Visite: 2814

 

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.

 

 

  1. 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):

  1. Cavetto mini-USB per collegare lo shield al PC
  2. Cavallotto per mettere lo shield in modalità programmazione (già presente sulla scheda…se non lo avete perso)
  3. Driver per la usb dello shield (AVR 32 Drivers) scaricabile da qui: https://www.arduino.cc/en/uploads/Hacking/AVR32_USB_Driver.zip
  4. 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
  5. 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:

  1. Separare lo shield dalla scheda Arduino UNO
  2. Collegare il cavallotto in modalità programmazione, ovvero cortocircuitare i due pin (DFU programming jumper).
  3. 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
  4. 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
  5. 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)
  6. 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).
  7. 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:

Running batchisp 1.2.5 on Sat Feb 27 18:17:40 2016

AT32UC3A1512 - USB - USB/DFU

Device selection....................... PASS

Hardware selection..................... PASS

Opening port........................... PASS

Reading Bootloader version............. PASS   1.0.2

Erasing................................ PASS

Selecting FLASH........................ PASS

Blank checking......................... PASS       0x00000 0x7ffff

Parsing ELF file....................... PASS       \wifi_dnld.elf

WARNING: The user program and the bootloader overlap!

Programming memory..................... PASS   0x00000 0x2902b

Verifying memory....................... PASS       0x00000 0x2902b

Starting Application................... PASS       RESET   0

 

Summary: Total 11       Passed 11   Failed 0

 
  1.  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

Running batchisp 1.2.5 on Sat Feb 27 18:22:47 2016

AT32UC3A1512 - USB - USB/DFU

Device selection....................... PASS

Hardware selection..................... PASS

Opening port........................... PASS

Reading Bootloader version............. PASS   1.0.2

Erasing................................ PASS

Selecting FLASH........................ PASS

Blank checking......................... PASS   0x00000 0x7ffff

Parsing ELF file....................... PASS       \wifiHD.elf

WARNING: The user program and the bootloader overlap!

Programming memory..................... PASS       0x00000 0x3fe2b

Verifying memory....................... PASS   0x00000 0x3fe2b

Starting Application................... PASS       RESET   0

 

Summary: Total 11       Passed 11   Failed 0

 

 

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