Arduino Yún 小試(1)Sketch、Python 合點光明燈 by caterpillar | CodeData
top

Arduino Yún 小試(1)Sketch、Python 合點光明燈

分享:

如果你有一片 Arduino Uno,那麼點亮 LED 通常會是你第一個程式,其神聖的地位,差不多跟點光明燈程式語言入門時,必然會寫個 Hello, World 類似 … XD

如果你有一片 Arduino Yún,那麼點亮 LED 的方式之一,就跟拿 Arduino Uno 點亮光明燈的方式差不多 … 接上 USB、安裝驅動程式、開啟 Arduino IDE、選好板子 Arduino Yún 與序列埠、開啟 Blink 範例、上傳 … Arduino Yún 上的 D13 腳位也是連著一個 L13 的 LED,因此就會一閃一閃亮晶晶了 …

有人說,為什麼用 Arduino Uno 來點 LED,純使用電阻、電容、繼電器或電晶體就好了啊!?這就跟最近大家會看到,使用 Windows 10 點亮 Raspberry Pi 2 上的 LED,會覺得小題大作差不多 …

既然這樣,還是來個 Arduino Yún 點光明燈的風格,既然 Arduino Yún 有無線 Wifi 連線功能,那就用無線方式來點光明燈好了,不過,方式也有好幾種就是了 … 這邊要來看其中一種 …

初次設定 Arduino Yún

拿到 Arduino Yún 板子,當然還是要有電源,你可以使用 micro USB 供電,USB 另一頭當然也是可以連接電腦,或者連到 USB 變壓器插座上去,如果這樣能對真的是無線連線感覺更踏實一點的話 … XD

Arduino Yún 首次接通電源時,會是無線基地台模式,在你的個人電腦無線網路清單中,應該可以看到 「Arduino Yun-XXXXXXXXXXXX」的字樣,其中 XXXXXXXXXXXX 是這片 Arduino Yún 網路裝置的 MAC 位址:

初次設定 Arduino Yún

在連上「Arduino Yun-XXXXXXXXXXXX」這個無線網路之後,可以開啟瀏覽器,連接 192.168.240.1 這個位址,你會看到一個登入畫面,密碼預設是 arduino:

初次設定 Arduino Yún

如果你的電腦支援 Bonjour 服務,也可以直接連線 arduino.local,Windows 使用者可以下載安裝 Bonjour,並確認防火牆沒有阻擋 5353 連接埠。

登入之後,你會看到 Arduino Yún 的基本資訊:

初次設定 Arduino Yún

接下來可按下「CONFIGURE」進行名稱、密碼、時區、無線網路等設定:

初次設定 Arduino Yún

Yún NAME 預設是 arduino,如果你修改了這個名稱為 xxxx,那麼原先可使用 arduino.local 連線,之後就要改為 xxxx.local 連線。接下來看看網頁下半部的設定:

初次設定 Arduino Yún

這邊設定好你實際連外的無線網路 AP 與密碼,在 REST API ACCESS 存取權設定部份,請先選擇 OPEN,這在之後可以透過 REST API 來控制存取 Arduino Yún,接著按下「CONFIGURE & RESTART」重啟:

初次設定 Arduino Yún

重啟之後,Arduino Yún 會轉為無線網卡模式,連上你設定的無線網路,你的個人電腦也要連上相同的無線網路,之後,就可以連接 xxxx.local 或 Arduino Yún 取得的 IP 進行連線。

無線上傳 Sketch

開啟你的 Arduino IDE,因為使用 Arduino Yún,所以 Arduino IDE 必須是 1.5.x 或 1.6.x 的版本。

選擇「工具/板子」中的「Arduino Yún」,接著選擇「工具/序列埠」中的「arduino at xxx.xxx.xxx.xxx (Arduino Yún)」,其中 xxx 是 Arduino Yún 取得的 IP 位址:

無線上傳 Sketch

那麼,接下來就可以開啟 Blink 範例並上傳了嗎?是可以啦!就當作是測試看看無線上傳是否成功,無線上傳必須輸入方才設定的密碼:

無線上傳 Sketch

上傳成功的話,你就會看到板子上 L13 的 LED 開始閃爍,嗯!這也算是點光明燈的方法之一,但並不是我想在這篇中介紹的主角,我們要寫另一個 Sketch:

#include <Bridge.h>

char state[2];

void setup() {
    pinMode(13, OUTPUT);
    Bridge.begin();
}

void loop() {
    Bridge.get("state",  state, 2);
    digitalWrite(13, atoi(state));
    delay(500);
}

將這個 Sketch 上傳,你不會看到 L13 的 LED 閃爍,因為,你得透過 Bridge 來控制它,Bridge 之後會詳細介紹,簡單來說,Arduino Yún 中有兩個晶片,其中一個控制 Arduino,另一個運行著 Linux 分支 Linino,我們要 SSH 至 Linux 中來控制 LED。

Linino 端 Python 點亮光明燈

使用你慣用的 SSH 工具,以 root 連線 xxx.local 或 Arduino Yún 的 IP,你會看到以下歡迎畫面:

無線上傳 Sketch

這環境預設安裝了 Python 2.7.3:

無線上傳 Sketch

可以看到,其中 python 指令位於 usr/bin/python,而 Bridge 程式庫位於 /usr/lib/python2.7/bridge。

你可以使用 vim,在 lightUpL13 .py 中撰寫以下的程式:

import sys
sys.path.insert(0, '/usr/lib/python2.7/bridge/')
from bridgeclient import BridgeClient

state = sys.argv[1]
BridgeClient().put('state', state)

為了讓 Python 找得到 Bridge 程式庫,在系統的 PATH 路徑清單前插入了 Bridge 程式庫的路徑,由於方才的 Sketch 會一直取得 "state" 屬性的對應值,因此在這邊,從使用者輸入的命令列引數中獲得 "state" 屬性值。

程式存檔之後,執行 python lightUpL13.py 1 指令,你就可以看到 L13 的 LED 被點亮,執行 python lightUpL13.py 0 指令,則會令 LED 熄滅。

只是要點亮個光明燈,有必要搞到這麼複雜嗎?嗯!從硬體角度來看,是真的太小題大作了,不過,藉由這小小的範例,可以初步瞭解到,Arduino Yún 是個有無線網路、有 Linux 在上頭,且可透過 Bridge 溝通的 Arduino,從程式設計者的角度來看,就有了很多的想像空間了!

後續 >> Arduino Yún 小試(2)透過瀏覽器點光明燈

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

love95888309/23

您好,我想詢問有沒有方法是在執行 python lightUpL13.py時候,不用在最後加入"1"就能夠亮燈的方法呢?請求給予協助,謝謝您

熱門論壇文章

熱門技術文章