不過, 幸好可以使用專門為 EV3 與 Raspberry-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 的安裝指南, 可以參考: Getting Started with ev3dev 網頁 Step 1 ~ 3 說明.
※ ev3dev 提供了 4 種網路連接方式, 可以參考: Getting Started with ev3dev 網頁 Step 4: Setup a network connection 說明.
※ ev3dev 目前提供: C++' Node.js 與 Python 等三種程式語言支援開發 EV3 的專案. 並以統一介面方式建立程式庫.
- 關於 EV3 硬體功能使用方式, 可以參考: Getting Started with ev3dev 網頁 Step 5 Using the EV3 Hardware drivers 說明.
- 關於程式庫規格, 可以參考: ev3dev Language bindings 的網頁說明.
※ 此外, ev3dev 的 Python 程式庫雖然可同時支援 2.x 與 3.x 版, 不過, 目前只預裝於 2.x 版,
- 安裝 Python 3.x 程式庫方式, 可以參考: Python2.x and Python3.x Compatibility 的網頁說明.
- 開發 ev3dev Python 程式的方式, 在 官網 Tutorials 網頁 中有介紹在 PC 或 Mac 端安裝 PyCharm 開發環境的說明, 或是透過 SSH 連接 EV3 後直接使用文字編輯器撰寫程式.
使用 Temboo 支援的 Google 雲端服務
關於 Temboo Choreo 的使用方式, 可以參考前一篇 "Arduino Yun 筆記:測試呼叫 Temboo 的 Gmailv2 與 Spreadsheets choreos 功能" 的說明.
至於 Temboo Choreo 的 Python 程式庫, 可以由 此連結 下載.
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 的執行結果.
沒有留言:
張貼留言