2016/04/10

Arduino Yún:基本介紹與設定Wi-Fi無線網路組態

買了一塊Arduino Yún,試著玩玩看。

因應物聯網推出的板子,取了個中文名字Yún(雲),跟其他一般Arduino板子差異之處在於,Yún除了有微控制器ATmega32U4(同Leonardo),另有Atheros AR9331,負責運行Linux發行套件OpenWrt-Yun(以OpenWRT為基礎修改而成),並且連接到乙太網路(Ethernet)與Wi-Fi無線網路,另外也連接板子的A型USB埠(扮演主方)與micro SD卡插槽。
因使用ATmega32U4,基本特性與Leonardo相同,腳位配置也與Leonardo/Uno一樣,在此不再多說。

Arduino軟體自1.5.4版開始支援Yún,驅動程式安裝步驟跟Leonardo一樣,在此便不浪費篇幅;簡言之就是使用A-micro B的USB線連接電腦,便會要求你指定驅動程式的路徑,總共會有兩次,分別會在裝置管理員裡產生兩個COM序列埠(但不會同時出現)。

板子上沒有5V穩壓器,沒有一般的筒狀電源插座,可從micro USB埠輸入電源,或從Vin與5V腳位輸入,但要自己穩壓。

通電後,ON LED應該亮起,試著燒錄內建範例草稿碼「檔案」-「範例」-「01.Basics」-「Blink」,L13 LED應會閃爍,確認驅動程式成功安裝。

LED代表的意義如下:
RX(黃)是序列埠接收。
TX(黃)是序列埠傳送。
L13(紅)是內建LED,連接到數位腳位13。
WAN(黃)是乙太網路指示燈。
ON(綠)是電源指示燈,通電後應持續亮起。
WLAN(藍)是Wi-Fi無線網路指示燈。
USB(白)是USB埠指示燈。
板子上有3個重置鍵:

左上標示為32U4 RST的重置鍵,按一次是重置目前執行中的草稿碼,按兩次會重置ATmega32U4這顆微控制器。

右下標示為YÚN RST的重置鍵,重置AR9331,重新啟動Linux系統(OpenWrt-Yun),記憶體中的東西全部不見,執行中的程式也會終止。注意,重新啟動應需要30~45秒以上的時間。

左 下標示為WLAN RST的重置鍵,有兩個作用,第一是將WiFi組態重置回工廠設定值,會讓WiFi晶片進入AP(access point)模式,IP是192.168.240.1,分享出來的網路名稱是「Arduino Yun-XXXXXXXXXXXX」,其中X是Wi-Fi無線網路卡的MAC位址,按著此重置鍵不放、持續5秒以上,即可進入Wi-Fi組態重置模式。

第二個作用是將Linux映像檔重置回工廠預設的映像檔內容(或是你更新後的版本),必須按著重置鍵不放持續30秒,這麼一來,儲存在板子裡的快閃記憶體(與AR9331連接)的檔案與設定值,通通都會消失。
Yún接上電源後,此時Wi-Fi處於AP模式,其分享出來的SSID(無線網路名稱)類似於「Arduino Yun-XXXXXXXXXXXX」。


連接後,開啟瀏覽器輸入網址http://arduino.local或192.168.240.1,便可看到如下畫面,要求輸入密碼,預設密碼是「arduino」。
成功登入後便可看到如下畫面,先顯示Wi-Fi與乙太網路的網路組態。再點按「CONFIGURE」進行組態設定。
進入網路組態頁面:
YÚN NAME,算是給予主機名稱吧,請自由設定,但要記住,將來存取時需要這個名稱。
PASSWORD,在此輸入新密碼,若不輸入則沿用預設密碼「arduino」。
CONFIRM PASSWORD,再輸入一次新密碼。
TIMEZONE,設定時區。

勾選「CONFIGURE A WIRELESS NETWORK」。
DETECTED WIRELESS NETWORKS:從此處選擇你想連接的Wi-Fi網路。
WIRELESSNAME:或是自己輸入。
SECURITY:安全協定,請根據路由器組態設定。
PASSWORD:存取該Wi-Fi網路時的密碼。
底下的「REST API ACCESS」,此處不用。

按下「CONFIGURE & RESTART」,儲存組態設定並重新啟動。
重新啟動完成。
然後Yún的Wi-Fi晶片就會進入一般模式,連接到你指定的無線網路。

成功後,找出Yun的IP位址,你仍可從瀏覽器輸入該IP位址登入,修改組態。

嘿,我的無線路由器以DHCP動態分配某IP位址給Yun。
除了一般的有線燒錄方式(透過USB線連接),Yun也可無線燒錄。開啟電腦上的Arduino IDE,可從選單「工具-序列埠(Tools-Port)」看到含有IP位址的Yún,勾選後,記得從選單「工具-板子」勾選Yún。

Yún使用Bonjour在區域網路內發佈服務,如果你的作業系統是Windows而且看不到Yún的話,請到這裡下載安裝Bonjour,另外也請確認沒有防火牆或防毒軟體擋住連接埠5353。

然後找份草稿碼,進行上傳動作,會要求你輸入密碼,然後就會進行燒錄動作。


嗯,基本設定完成囉,還有很多可以玩,慢慢來吧。

註:Arduino鬧分家,arduino.cc與arduino.org兩邊都想要突出,佔據Arduino這個品牌;常常會使用不同的詞彙,以及另行開發新技術,譬如arduino.cc原先使用Linino,後來沿用並改成OpenWrt-Yun,但官網上仍會出現Linino字樣(該打屁股);arduino.cc的溝通軟體層是Bridge,而arduino.org另行開發出Ciao。

參考資料:

19 comments:

  1. 葉大你好:
    之前買了一塊YUN,照著你之前的教學都能正常運作。
    之後電腦都升到WIN10之後,現在進入第一層的組態設定裡面的
    DETECTED WIRELESS NETWORKS按好幾次的Refresh都不會顯示出AP清單
    然而我點 configure & restart 後會出現這個錯誤
    Failed to execute call dispatcher target for entry '/webpanel/config'.
    The called action terminated with an exception:
    ?:0: attempt to index a nil value
    stack traceback:
    [C]: in function 'assert'
    ?: in function 'dispatch'
    ?: in function
    換了其他瀏覽器、重置映像檔都是一樣的問題,但是我用手機進管理模式就又一切正常
    不知道葉大是否清楚這是哪方面的問題呢?謝謝

    ReplyDelete
    Replies
    1. 不清楚真正的原因。似乎是在存取yun的網頁管理介面時,yun沒有送出某部分檔案,於是導致錯誤。

      若到Arduino官方論壇搜尋,很多人的回答也都是東試試、西試試,不知道根本原因在哪。

      Delete
    2. 葉大不好意思,我剛剛亂試好像已經解決困擾我好幾天的問題了
      原本預設登入的方式都是用http://192.168.240.1
      但是我改成https://192.168.240.1 就完全正常了
      剛好讓其他人如果也有這樣的問題可以試試看:D

      Delete
    3. 哦,謝謝回報。

      Delete
  2. 老師您好,我們的目前的理想動作是 : 電路板 (心跳感測器偵測脈搏) 脈搏跳一次 LED燈 亮一次 然後要接上 Arduino 讓次數存在Arduino內 所以目前有2個問題
    1. Arduino 接電路板 要接哪個腳位 ?
    2. Arduino 計數器 該如何撰寫 ?

    ReplyDelete
    Replies
    1. 1. 心跳感測器 是哪一款?
      2. 不就是定義全域int變數,不斷累加嗎?

      Delete
  3. 請問 arduino yun 用USB連接電腦後
    裝置管理員裡沒出現裝置是什麼原因呢
    我無法用有線燒錄

    ReplyDelete
  4. 嗯,驅動程式沒裝好吧。

    ReplyDelete
  5. 要怎麼把動態ip改成靜態ip呢?

    ReplyDelete
  6. 想請問一下,我剛讓yun 插上行動電源後,要做網路設定,但是在wifi那裡一直找不到 arduino 相關的名稱,但是wifi圖示旁邊卻出現了類似電話的圖像,點了一下發現是arduino yun,但是我還是連不上,請問這算正常嗎?想請葉難老師幫忙。(我的電腦用mac air,連學校wifi)

    ReplyDelete
    Replies
    1. 重置回工廠設定值,再試試吧。
      重置方法,請見本篇內文。

      Delete
    2. 您好,我已經試過,還是不行

      Delete
    3. 李白說的好,蜀道之難,難於上青天;俗話說的好,隔空抓藥,猶如瞎子摸象。
      您只告訴些許資訊,我也只能憑空亂猜,可能是:
      你的yun之前有人用過,其wifi組態可能固定成某頻道,而你的電腦可能不能連該頻道。
      但是重置回工廠設定值之後,還是不行的話,那我也不知道了。

      你說【連不上】,是怎樣連不上呢? wifi連線就失敗? 開啟網頁時失敗? IP有打對嗎?

      或可參考其他人的討論串:
      https://forum.arduino.cc/index.php?topic=370837.0

      http://forum.arduino.cc/index.php?topic=310903.0

      Delete
  7. 老師您好:我想問一下,我們有2台arduino yun mini 都已經分別設定好無限架構的設定了,也都有連上線了,但不知道接收端要如何接收???

    ReplyDelete
    Replies
    1. 一個當server,一個當client囉。

      Delete
  8. 請問如果用Ethetnet 該如何設定呢?

    ReplyDelete
  9. 葉老師你好
    我今天的設備是這樣的
    4台ADAM 對 Arduino (用RS485連線)
    電腦 對 Arduino (走wifi)
    電腦為server arduino為client
    我要怎麼設置arduino裡面讀到的ADAM參數 才能讓電腦讀取

    ReplyDelete
  10. 老師您好:

    不好意思想請教您一個問題!~~


    如果我的YUN 是使用虛擬IP ,但是我想在不同網路區段(如手機)控制該如何設定??
    我想類似簡單這樣控制 http://myArduinoYun.local/arduino/digital/13/1

    ReplyDelete