步驟 4:將 Grove Shield 組裝到 Intel Edison 的 Arduino 擴充板上
- 拔除 Arduino 擴充板所有的電源連接。
- 將 Grove Base Shield 安裝到 Intel Edison 開發板上,請對準所有的針腳,並且確實將 Shield 板插進擴充板的接頭。
- 將 Grove(4 針腳)線的一端連接到 Grove LCD。
- 將 Grove 線的另一端連接到 Grove Base Shield,請注意,必須連接到有「I2C」標示的插槽。
- 重新接通開發板的電源。
步驟 5:啟用 Google Calendar API
要瞭解如何設定 Google Calendar API,請參考 Google Developers 網站上的 Node.js Quickstart指南:
https://developers.google.com/google-apps/calendar/quickstart/node
我錄了以下影片,逐步說明這個過程:
完成這個「快速入門指南」之後,您應該會得到:
- 一個 Google Calendar API 專案(也許可以叫做「smart-clock」),已經在 Google Developer Console啟用。
- 一個client_secret.json的檔案。
- 一個 NodeJS 指令檔,可將接下來的 10 個行事曆事件列印出來,送到「開發人員控制台」。
步驟 6:將 Google Calendar API 的 Node Quickstart 程式碼移植到 Edison
Intel Edison 是以 Linux 為基礎的微控制器,因此,要將可在電腦上執行的 Node 指令檔移植到 Intel Edison,只需編輯幾個小地方。
我錄了以下影片,逐步說明這個過程:
- 在 Intel XDK 的 IoT 版本:開始新專案 >匯入您的 Node.js 專案
- 使用先前步驟建立的資料夾(裡面含有 quickstart.js 的資料夾)。
- 提供專案名稱,例如「smart-clock」。
- 建立package.json檔案。
- 刪除專案資料夾中的node_modules資料夾(及其中的內容)。
- 因為這個資料夾太大了,如果讓 Intel XDK 透過無線方式複製到開發板,還沒完成就會發生逾時。在後面的步驟,我們會將 Node 程式庫直接安裝到開發板上。
- 建立main.js檔案。
- 將先前在 quickstart.js 編寫的所有程式碼複製到 main.js。
- 如果您跳過了前面的步驟,請使用這段程式碼:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/desktop-version/quickstart.js
- 請確實儲存剛才建立的任何檔案。
- 如果還沒有連接開發板,請透過「IoT Device」下拉式清單連接到開發板。
- 按一下底部工具列的「Manage your daemon/IoT device」按鈕,開始管理物聯網裝置。
- 按一下「Sync PC time w/clock on target device」,同步處理電腦與目標裝置的時間
- 選取「Run npm install directly on IoT Device」,直接在物聯網裝置執行 npm 安裝(這將會使用先前在 package.json 定義的依存關係)
- 按一下底部工具列的「Upload」按鈕,開始上傳。
- 按一下底部工具列的「Build」按鈕,它在「Upload」旁邊。
- 使用 SSH Terminal標籤頁(透過無線網路)或Serial Terminal標籤頁(透過 micro-USB 傳輸線)來連接開發板。
- 輸入:「cd /node_app_slot」,這是 Intel XDK 複製任何專案檔案的地方。
- 執行您自己的 main.js,也就是這裡的指令檔:「node main.js」
- 依提示說明取得 Token 認證,再傳遞回去終端機命令列。
- 如果看到了您接下來 10 項行事曆事件的輸出結果,就表示 Intel Edison 順利透過無線網路與 Google Calendar API 通訊了!
- 現在,嘗試從 Intel XDK 執行 Node 應用程式,取代執行「node main.js」。按一下底部工具列上的「Run」按鈕,開始執行。
- 你會看到錯誤訊息:「Error loading client secret file」,表示載入檔案發生錯誤,這是因為 Intel XDK 在專案資料夾的範圍之外執行應用程式。
- 對 main.js 做以下編輯,儲存檔案,再按一次「Run」按鈕,應該就會看到你接下來的 10 項行事曆事件。
// add this line at the top: var SECRET_FILE = '/node_app_slot/client_secret.json'; // edit this line (around line 13-14) // fs.readFile('client_secret.json', function processClientSecrets(err, content) { // to be: fs.readFile(SECRET_FILE, function processClientSecrets(err, content) {
恭喜!
下一步,就是加入 LCD 螢幕的支援。
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!