2016-04-28

以藍芽遙控 LEGO PF 馬達的四軸機械手臂:使用 SBrick

SBrick 是 2014 年在 Kickstarter 所推出的可連接 4 個˙LEGO PF 馬達的藍芽接收器,同時也提供了 iOS、Android、Windows Phone 等三種行動平台的遙控 App,而 App 的操作介面還可以透過 SBrick 的 Profile Designer 網頁依據操控需求,自行客製化設計後下載到行動裝置中。
當實際以 iPad 操作時,回應的速度幾乎與 Lego 的 IR 遙控器一樣靈敏,而採用藍芽相較於紅外線的優勢在於較長的遙控距離以及沒有方向性的限制,這對於玩 Lego Technic 的愛好者而言,無疑又多了一樣可選擇的好幫手。
以下影片就是以 SBrick 控制的四軸機械手臂,其中 iPad App 的操作介面正是依據控制需求的客製化設計。

2016-04-11

以 Brickstuff Lego 照明系統製作的 星際戰士

過去在欣賞 Sariel 的 Technic 創作時, 有時會很好奇如何在那麼緊湊的機構中加上照明功能, 特別是 LED 亮度與配線彈性, 很明顯都是 Lego PF Light 所無法做到的, 後來也是從他所公開的影片中得知, 原來有一部分是使用 Brickstuff 的 Lego 照明系統 。
最近有機會取得了一組  Brickstuff 的 Starter kit 以及 DIY Connecting cables, 因此, 就試著以樂高零件製作了一支雷射槍, 同時也使用 Arduino 控制器加上一些特效, 包含: 發射時兩支槍管的交互快速閃爍, 以及呈現出槍枝本身能源消耗與充電時的狀態, 這些都是使用 Brickstuff 的組件所製作出來的, 以下就是完成後的示範影片:

Brickstuff 特別為樂高所製作的照明裝置, 無論 LED 燈' 線纜 或接頭, 真的非常地小, 像影片中的雷射槍以及能源指示燈, 線材都能夠完全收納在樂高的管狀零件中, 組裝過程不用太花心思去考量機構如何去配合線材的問題, 相信無論應用在車輛或建築物的燈具上, 會比使用樂高原廠的 LED 燈還更事半功倍, 唯一的缺點是太貴了 XD

2016-04-05

實作 EV3 以 Temboo 連接 Google 雲端服務的方式

Temboo 平台雲端服務的 Choreos, 提供了多種程式語言的程式庫, 以簡化開發工作, 其中的 Python 不僅方便好用同時也支援多種作業系統, 包含: Windows' OSX 與 Linux 等, 而 EV3 官方版本的作業系統雖然也是以 Linux 為核心, 但並不太容易安裝像 Python 這樣的程式語言.

不過, 幸好可以使用專門為 EV3Raspberry-Pi + Brick Pi 開發的 ev3dev,  讓 EV3 可以充分運用 Linux 的強大功能, 包含為數眾多的免費軟體與 USB 周邊, 如: Web Cam' RJ45 轉接器' 音效卡' 隨身碟等, 同時若需要的話, 還可以使用 USB Hub, 同時連接多個 USB 裝置,
讓 EV3 成為具體而微的 Linux 電腦.


ev3dev 的功能特性


※ 安裝 ev3dev 並不會刷掉原有的 EV3 Kernel, 只需將 ev3dev 的 Image 檔案寫入至另一片 Micro SD 卡中, 插入 EV3 後重新開機就可以使用, 並隨時可以換回原有的 Micro SD 卡, 恢復原有官方版本的作業環境.


※ ev3dev 提供了 4 種網路連接方式, 可以參考: Getting Started with ev3dev 網頁 Step 4: Setup a network connection 說明.

※ ev3dev 目前提供: C++' Node.js 與 Python 等三種程式語言支援開發 EV3 的專案. 並以統一介面方式建立程式庫.


 此外, ev3dev 的 Python 程式庫雖然可同時支援 2.x 與 3.x 版, 不過, 目前只預裝於 2.x 版,



使用 Temboo 支援的 Google 雲端服務


關於 Temboo Choreo 的使用方式, 可以參考前一篇 "Arduino Yun 筆記:測試呼叫 Temboo 的 Gmailv2 與 Spreadsheets choreos 功能" 的說明.

至於 Temboo Choreo 的 Python 程式庫, 可以由 此連結 下載.

而本次將會以 EV3 的 Color Sensor 讀取環境光源的亮度值 (Ambient Light Intensity), 並每間隔 10 秒透過 Temboo 的 Google - Spreadsheets - AppendRow Choreo 將包含: ( 讀取時間 與 感應器值 ) 的一筆資料寫入至 Google 試算表中.



Pyhton 程式說明:

A.  匯入程式庫

# 匯入 ev3dev 程式庫
from ev3dev.auto import *

# 匯入 Temboo 程式庫
from temboo.Library.Google.Spreadsheets import AppendRow
from temboo.core.session import TembooSession

# 匯入 讀取系統日期功能
from datetime import datetime

# 匯入 sleep() 功能
from time import sleep

B.  連接 EV3 Color Sensor 及設定測量環境光源亮度模式
cs = ColorSensor(); assert cs.connected
cs.mode = "COL-AMBIENT"

C. 登入 Temboo 並建立 Session
session = TembooSession("Temboo-Acct", "Temboo-APP", "Temboo-AppKey")

D. 傳送資料至 Google 試算表的函式
def sendDataToGoogle(nowTime, sensorVal):
    # 建立 Choreo 實例
    appendRowChoreo = AppendRow(session)

    # 取得 Choreo 的 InputSet 物件
    appendRowInputs = appendRowChoreo.new_input_set()

    # 設定 Choreo 所需要的輸入資訊
    rowData = ','.join([nowTime, str(sensorVal)])
    appendRowInputs.set_RowData(rowData)
    appendRowInputs.set_SpreadsheetTitle("ev3_lightIntensityValue")
    appendRowInputs.set_RefreshToken("RefreshToken-of-Google-Spreadsheets")
    appendRowInputs.set_ClientSecret("Your-Google-Client-Secret")
    appendRowInputs.set_ClientID("Your-Google-Client-ID")

    # 執行 Choreo 呼叫 Google 雲端服務
    appendRowResults = \
    appendRowChoreo.execute_with_results(appendRowInputs)

    # 顯示執行 Choreo 後的回傳訊息
    print("NewAccessToken: " + appendRowResults.get_NewAccessToken())
    print("Response: " + appendRowResults.get_Response())


E. 讀取 EV3 Color Sensor 測量值
# 進行 10 次的測試
for rec_cnt in range(10):
    # 取得目前的系統時間字串
    nowTime = datetime.strftime(datetime.now(), '%m-%d-%Y %H:%M:%S')

    # 讀取 Color Sensor 的測量值
    sensorVal = cs.value(0)
    print("Light Intensity: ", sensorVal)

    # 呼叫執行 AppendRow choreo 函式
    sendDataToGoogle(nowTime, sensorVal)

    # 等候 10 秒之後再繼續執行
    sleep(10)

執行結果

下圖右側為程式執行過程所顯示的回傳訊息,
       左側為新增資料至 Google Spreadsheets 的執行結果.


2016-03-26

Arduino Yun 筆記:測試呼叫 Temboo 的 Gmailv2 與 Spreadsheets choreos 功能

Arduino Yún 名稱中的 "Yún" 正是中文的 "" ,也就是特別強調在雲端應用的整合能力,所以除了 Yun 本身已具備的連網功能之外,更透過與 Temboo 的合作,很方便的就能夠連接許多目前相當普遍的雲端服務,如:Google、Facebook、Twitter、Yahoo Weather、Dropbox ... 等。

Temboo 平台提供了數十種連接雲端服務的 Choreos
Choreo 是指呼叫每個特定雲端服務的可重複使用程式碼,用以簡化程式開發工作。同時在最新版本的 Arduino IDE 中,也已經預載了 Temboo 程式庫,結合 Choreo 很容易的就能夠實現 Arduino Yun 在雲端的整合應用。

(圖片來源:arduino.cc)

在 Temboo  網站中提供有 12 個 Arduino Yun 連接雲端服務的範例,同時在 Arduino IDE 的  File - Examples - Temboo - Arduino Yun 中也有相對應的範例程式,這些都是相當好的參考資源。
(圖片來源:Temboo.com)

本次的測試是以 Arduino Yun 在 Sketch 中使用 Bridge 以及 Temboo 程式庫 呼叫 Temboo 的 Gmailv2Google Spreadsheets 兩個 Choreos 功能,將 Arduino 端的資訊透過 Gmail 傳送至指定信箱 以及 存放到 Google 試算表中。

以下是過程的相關記錄:

2016-02-27

Arduino Yun 筆記:以Arduino Yun 製作的 MP3 播放器

Arduino Yun 比較傳統的 Arduino 主板,最大優勢在於同時兼具兩個開發環境:
  1. Atmega32u4 處理器:
     Arduino Leonardo ,具有 20 個數位、類比、PWM 腳位以及 3 種序列通訊功能(Serial、I2C 、SPI),並可堆疊相容的 Shields 擴充板。 
  2. Atheros AR9331 處理器:
    使用 OpenWRT Linux 作業系統並內建 USB Host、Ethernet、WiFi 、Micro SD slot等周邊,另提供有 Python 2.7 作為 Linux 端的
    程式開發。
兩者間以 Hardware Serial port 相連,並以 Arduino 的 Bridge 程式庫,作為相互利用彼此資源的軟體介面,尤其 Linux 系統功能強大,雖是輕量版的 OpenWRT,但可運用的範圍與彈性已遠超過傳統的 Arduino 主板。

這次以 Arduino Yun 製作的 MP3 播放器,即運用 Linux 對 USB 裝置的支援能力,使用 USB 音效卡播放 Micro SD 卡內的 MP3 檔,並透過 I2C 外接 Arduino Uno + LCD Keypad shield 作為控制面板,可以顯示 MP3 檔 ID3 tag 的曲目與演出者資訊,以及透過操作按鍵逐一瀏覽及選擇歌曲播放,功能如同一般的 MP3 播放器。



系統架構