2022-03-27

使用 Arduino IOT Cloud 經互聯網遙距控電子裝置

上次在 ESP8266 NodeMCU 建立 HTTP伺服器,便可以經網絡遙距控制電子裝置
但設定操作上需要較多科技知識才能設定
而借用 Arduino IOT Cloud 的平台只需要基本科技知識便能夠完成設定

Arduino IOT Cloud 服務

Arduino IOT Cloud 是其中一種物聯網 (Internet of Things (IOT)) 服務平台
提供基本免費服務 及 簡單的設計及操作介面

見下文
前往 https://create.arduino.cc/iot/
登入 Arduino ,如果未有帳戶請先註冊,或使用 Google 或 Facebook 或 Apple 帳戶登入 Arduino IOT Cloud

建立物件

見下文
Things 分頁,按 CREATE THING

變數
變數 是協助保存 IOT裝置 的狀態,例如裝置的開關狀態,計算結果等
當裝置重新啟動後,會自動載入最後的狀態資料

見下文
見下文
有需要可以修改物件的名稱,方便管理不同的 IOT物件

見下文
有需要可以修改對應的時區

見下文
ADD VARIABLE 製作 數值參巧
  • NAME 變數的顯示名稱,管理用途
  • Select variable type 選擇 變數類型,一般使用 Basic types 分類的
    • Boolean 是非值,預設 false
    • Character String 文字資料,預設 空白文字
    • Floating Point Number 浮點數值
    • Integer Number 整數值
    當使用 Floating Point Number 或 Integer Number 可以在 Threshold 設定預設數值
  • Declaration 宣告變數的名稱,編程用途,可與 NAME 不同名稱
  • Variable Permission 變數的存取權限
    • Read & Write 讀取及寫入 (預設)
    • Read Only 只讀取
  • Variable Update Policy 變數更新的方法
    • On change 變化時 (預設)
    • Periodically 週期性,可以在 Every 設定更新週期的密度
設定完成後,按 ADD VARIABLE

裝置
載入對應裝置的 驅動程式函式庫 才能將 Sketch 編譯及上載

見下文
DEVICE 載入裝置類型
Arduino IOT Cloud 能讓使用載入官方的 Arduino裝置 及 第三方裝置

見下文
選擇合適的裝置類型後,按 CONTINUE
例如在下使用 ESP8266 NodeMCU

見下文
Device Name 裝置名稱,輸入後,按 NEXT
建議以裝置的用途命名,同樣方便管理用途

見下文
建立裝置後,會顯示此裝置的
  • Device ID 裝置編號 ,讓 Arduino IOT Cloud 與 真實的裝置配對的唯一編號
  • Secret Key 密碼,安全設計,避免裝置被未經授權人士控制,只在建立裝置後顯示,無法再次獲取
確認資料後,按 CONTINUE

見下文
裝置設定完成後,按 DONE

Wi-Fi
IOT物件,都必須透過 Wi-Fi 才能連接,因此 Arduino IOT Cloud 都必須設定裝置的 Wi-Fi 資料才能生效

見下文
與電腦電話設定 Wi-Fi 相同
  • Wi-Fi Name Wi-Fi名稱 即是 SSID
  • Password 即是 閣下的 Wi-Fi 的密碼
  • Secret Key 剛才建立裝置的密碼
設定完成後,按 SAVE

見下文
完成設定 IOT物件

建立儀表板

見下文
Dashboards 分頁,按 BUILD DASHBOARD

見下文
見下文
與 IOT物件 相同,可以修改 儀表板 的名稱方便管理

見下文
ADD 後,可以選擇需要使用的元件到儀表板上
在下使用 開關按鈕 (Switch) 示範
  • 眼睛圖案 是 觀察模式
  • 紙筆圖案 是 編輯模式

見下文
見下文
Link Variable 後,選擇需要調用的 變數 後,按 LINK VARIABLE

見下文
同樣,可以將元件重新命名,方便管理
設定完成後,按 DONE

建立Sketch

見下文
回到 Things 分頁,選擇需要製作 Sketch 的 IOT物件後,按 Sketch

見下文
見下文
將預設的 Sketch 修改為
#include "thingProperties.h"
void setup() {
	Serial.begin(9600);
	// user code start
	pinMode(2, OUTPUT);
	pinMode(16, OUTPUT);
	// user code end
	delay(1500);
	initProperties();
	ArduinoCloud.begin(ArduinoIoTPreferredConnection);
	setDebugMessageLevel(2);
	ArduinoCloud.printDebugInfo();
}
void loop() {
	ArduinoCloud.update();
}
void onLED0StatusChange() {
	digitalWrite(2, !LED0_Status); // user code
}
void onLED1StatusChange() {
	digitalWrite(16, !LED1_Status); // user code
}

在下製作透過 Arduino IOT Cloud 控制 ESP8266 NodeMCU 上的 LED開關的 Sketch
標示著 // user code 的行數為在下附加的內容
當中的 LED_Status 是在 變數 宣告的名稱
onLED*StatusChange 是在 變數 設定為 On change 發生時,便會觸發行動

見下文
編寫程式後,可以按 Verify (V按鈕) 編譯,確認程式碼是否正確

Arduino Create Agent

由於安全的限制,網頁是不能夠將資料直接寫入至使用者的系統
需要在使用者的系統中安裝一些接駁介面,才能支援特登操作

見下文
https://create.arduino.cc/getting-started/plugin/download ,按 DOWNLOAD ,下載 Arduino Create Agent

見下文
Arduino Create Agent 的下載頁面會嘗試檢查使用者的系統是否已經安裝 Arduino Create Agent

見下文
如果未安裝 Arduino Create Agent 會顯示 OPS SOMETHING WENT WRONG

見下文
見下文
ArduinoCreateAgent*.zip 解壓縮
解壓縮後,執行 ArduinoCreateAgent*.run
不同作業系統不同網頁瀏覽器 都需要安裝對應的 Arduino Create Agent

見下文
執行 ArduinoCreateAgent*.run 後, Arduino Create Agent 都提供直接的互動安裝操作,不需要使用指令操作
Forward

見下文
使用條款,按 I accept the agreement 後,按 Forward

見下文
Installution Directory 使用 ArduinoCreateAgent 便可以安裝當前目錄
設定後,按 Forward

見下文
確認安裝設定後,按 Forward

見下文
等待安裝完成

見下文
安裝完成後,按 Finish

見下文
見下文
安裝後,會建立目錄及一些檔案
當中的 Arduino_Create_Agent 為接駁介面

見下文
執 Arduino_Create_Agent 後,系統任務欄 (System Tray) 會顯示 Arduino Create Agent 在背景運作

見下文
再次回到 Arduino Create Agent 的頁面,按 TRY AGAIN 重新測試
如果 Arduino Create Agent 運作正常,顯示 AGENT CORRECTLY INSTALLED! 後,按 NEXT

見下文
顯示 CONGRATULATIONS! YOU'RE ALL SET. 表示設定完成, Arduino Create Agent 能正確使用

見下文
原本顯示 No associated device found 訊息,會變成顯示 閣下已連接的 裝置 及 連接埠的名稱或位置
To upload a Sketch via a USB port, make sure the Create Agent is installed and running on this computer. 訊息亦會消失

見下文
Upload (右箭咀按鈕) 編譯及將 Sketch 上載至裝置

見下文
Devices 分頁,會顯示已連接的裝置的狀態
  • Offline 離線狀態,未運作
  • Online 連線狀態,已運作

見下文
見下文
到 Dashboards 選擇需要使用的儀表板,進入觀察模式,元件功能便可以執行

見下文
使用 Arduino IOT Cloud 網頁 控制裝置
除了網頁版,Arduino IOT Cloud 亦有提供 Arduino IOT Cloud Remote 應用程式 可以讓 Android 或 iOS 控制裝置
還有 Arduino IOT Cloud 具備雲端同步功能,當資料有變化,其他裝置會自動同步

Arduino Web Editor

見下文
見下文
Arduino 提供網上編輯器,與在電腦運作的 Arduino IDE 基本功能大致相同
但如果閣下不想安裝 Arduino Create Agent ,都可以在 Arduino IDE 安裝相關既函式庫亦可以上載 Arduino IOT Cloud 的 Sketch

在 Open full editor 便會開啟 Arduino Web Editor 並顯示專案的實際內容
  • *.ino Arduino 的 Sketch 檔案
  • ReadMe.adoc 說明檔案
  • thingProperties.h 關於 IOT物件 的屬性資料
  • Secret Arduino 保護敏感資料的專有語法
如果不想額外安裝 Arduino Create Agent ,亦可以將 Arduino Web Editor 下載
或將 *.ino 白的內容複製,並將 thingProperties.h 的內容,取代 *.ino 的 #include "thingProperties.h" 即可

Arduino IOT Cloud 函式庫

不使用 Arduino Web Editor 編譯及上載 Sketch 需要安裝
  • Arduino_ConnectionHandler
  • ArduinoIOTCloud
  • Arduino_DebugUtils
  • ArduinoMqttClient

見下文
見下文
見下文
見下文
見下文
見下文
安裝 Arduino_ConnectionHandler 及 ArduinoIOTCloud 會提示安裝相依函式庫
如果不介意安裝額外函式庫,可以按 Install all 由 Arduino IDE 自動處理
但如果只是使用指定函式庫,便按 Install '*' only 表示只安裝指定函式庫

見下文
見下文
安裝需要的函式庫後,便可以編譯及上載

補充資料

見下文
Arduino IOT Cloud 瀏覽網頁版時,畫面原生闊度必須超過 960像素 才能使用,即使橫向顯示亦不能

總結

經 IOT服務平台 控制 與 自建網頁控制 的效果大致上相同
使用 IOT服務平台 通常都有統一的管理設計及預設工具元件,不需要太多技術知識便可以製作,而且還可以保存取最後狀態
但使用 IOT服務平台 便受功能限制,例如 Arduino IOT Cloud 需要付費才能使用 API 功能
使用 自建網頁控制 則比較自由,所有設計及功能都由使用者自行處理,亦意味著使用者需要具備相關知識
不過很多 IOT函式庫 、網頁設計、功能、程式 都有很多範例,即使 自建網頁控制,現在都不會非常困難
即使不使用範例,使用 Javascript 的 XMLHttpRequest 物件向目標發送 HTTP Request 亦很簡單

參考資料

沒有留言 :

張貼留言