Friday, May 29, 2015

更新Arduino官方WiFi Shield的firmware(使用Mac環境)

文章攢寫時間︰2015/05/29 15:13
文章更新時間︰2015/05/31 18:04
文章更新次數︰2

一、前言

花了3千塊買了一塊官方的WiFi Shield板子,
原以為好日子就此開始,
疏不知用板子對外發岀request時,
居然一直回應我connected failed.

查了一下才知道因為原廠的firmware過舊(v.1.0.0),
解決辦法有︰
1.不更新韌體,繼續研用舊版v1.0.0搭配Arduino IDE 1.0.2對外連線(請參考Ken Yang部落格)
2.更新WiFi Shield的韌體讓最新版Arduino IDE 1.6.4能順利對外連線

查看韌體版本可透過以下語法
Serial.begin(9600);
Serial.println(WiFi.firmwareVersion());
記得include SPI.h 和 WiFi.h 兩個類別!

這裡我就來實作更新韌體的部份!

二、文章開始
依照官方的教學的說明,
在更新韌體進板子前,
務必將WiFi Shield從Arduino板子上拔除

步驟1 安裝MacPorts

MacPorts 是一個用於編譯、安裝與管理 Mac OS X 中各類開放原始碼軟體的工具,
其由開放原始碼社群負責主導與開發,
透過這個工具可以簡化安裝軟體的編譯工作,
並且可以自動處理套件相依性問題,
概念上很類似 Linux 的 apt 與 yum,
只要下達一些簡單的指令就可以輕鬆安裝各種軟體。
(以上解釋來至CTW論壇)

MacPorts官網依照你的Mac OS版本下載相對應的安裝檔案。


步驟2 更新MacPorts至最新版

進入終端機裡,輸入以下指令
$sudo port selfupdate


步驟3 下載DFU Programmer

DFU(Device Firmware Update) Programmer這套軟體被Arduino專門用來更體韌體專用,
因此,
我們透過MacPorts將DFU Programmer軟體下載下來。
語法是
$sudo port install dfu-programmer

下載下來後,請確保是最新版本。
語法如下
$sudo port upgrade outdated

※請確認安裝完的DFU Programmer版本在v0.5.4(含)或之後。

步驟4 下載或在電腦中找岀最新的韌體檔

如果要下載最新版的WiFi軔體,可以到GitHub下載(wifishield整個目錄便是)。
或者,也會直接放在最新版的Arduino application裡。
1.使用Finder開啟應用程式資料夾
2.對Arduino.app點擊滑鼠右鍵選擇「顯示套件內容」

3.我的wifishield韌體資料夾路徑是在
/Applications/Arduino/Arduino164.app/Contents/Java/hardware/arduino/avr/firmwares/wifishield/

步驟5 執行腳本檔以利燒錄韌體至板子中

官方有替Linux或Mac版本的使用者寫一套自動化安裝流程,
語法的存放路徑在剛才目錄中的底下目錄scripts裡
分別可看到有2個檔案
ArduinoWifiShield_upgrade_mac.sh(Mac專用)

ArduinoWifiShield_upgrade.sh(Linux專用)

因為腳本檔是用DFU-Programmer寫起來的,
因此只要剛才DFU-Programmer在v0.5.4以後,
就可以開始接下來的步驟!

為了讓WiFi Shield進入programming mode,
需使用Jumper將J3連結點串聯起來。

將Jumper拔起來並完整的接上2根排針以進入Programming mode模式
將已拔除Arduino板的WiFi Shield插入電腦USB,另一端插在板子的Mini USB孔上。

接著在終端機裡執行剛才的腳本檔
我下的語法如下
$sudo sh /Applications/Arduino/Arduino164.app/Contents/Java/hardware/arduino/avr/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh -a /Applications/Arduino/Arduino164.app/Contents/Java -f shield

順利的話,就能看到韌體更新成功視窗了。

最後記得將Jumper拔掉並按下板子上的RESET鍵,
整個韌體更新的動作就完成囉!

查看一下,
WiFi firmware的版本已更新至最新v1.1.0無誤。


使用client.connect(server, 80)對Google發岀一次頁面request,
也不會再遇到connect failed了!


三、其它
如果有使用Webduino Library
與Arduino IDE 1.6.4匹配的Webduino版本是1.7。

四、結論

更新完WiFi Shield firmware後,
接下來做些什麼呢?

嗯⋯跟我一起玩微智能家居吧!

相關連結

1. Ken Yang的部落格
2. Arduino官方
3. 國外一篇更新韌體的部落格教學

No comments: