AI 魔杖搭配 TensorFlow Lite for Microcontrollers 和 Arduino

1. 簡介

建構項目

在本程式碼研究室中,我們將學習如何使用 TensorFlow Lite for Microcontrollers,在 Arduino Nano 33 BLE 上執行深度學習模型。微控制器變成數位「魔杖」揮手並施展各種咒術。使用者移動魔杖時,這些複雜的多維度感應器資料會難以被人類破壞,且會做為模型的輸入內容傳遞。這些資料會輸出簡單的分類,在發生其中一種動作時通知我們。

9208eb1207211349.gif

微控制器的機器學習技術

機器學習技術可用於打造智慧工具,提供更便捷的生活,例如 Google 助理。不過,這類體驗需要大量的運算或資源,包括強大的雲端伺服器或桌上型電腦。不過,現在也能在微型低電的硬體 (例如微控制器) 上執行機器學習推論。

微控制器非常常見、成本低廉,需要的能源極少,而且十分可靠。這些元件屬於各式各樣的家庭裝置:電器、汽車和玩具。事實上,每年生產約 300 億部採用微控制器的裝置。

1914a419dfacf0b5.jpeg

透過在極小的微控制器提供機器學習技術,我們得以為生活中數十億部 Google 裝置提供智慧功能,不必依賴昂貴的硬體或可靠的網路連線。想像一下,如果智慧家電可以依照您的日常作息調整,還有智慧型工業感測器可瞭解問題與正常操作之間的差異,而有魔法玩具可以幫助孩子以有趣且愉快的方式學習。

TensorFlow Lite for Microcontrollers (軟體)

864114d0c2b4c919.png

TensorFlow 是 Google 的開放原始碼機器學習架構,用於訓練及執行模型。TensorFlow Lite 是一種軟體架構,此為 TensorFlow 的最佳化版本,專門用於在手機等低階裝置 (例如手機) 上執行 tensorflow 模型。

TensorFlow Lite For Microcontrollers 是一種軟體架構,是 TensorFlow 的最佳化版本,主要目標為在微弱的小型硬體 (例如微控制器) 上執行 Tensorflow 模型。它遵守這些內嵌環境中所需的限制,例如二進位檔大小較小、不需要作業系統支援,也不需要任何標準 C 或 C++ 程式庫,或是動態記憶體配置等。

Arduino Nano 33 BLE (硬體)

bcd452d4d660efa9.jpeg

Arduino 是熱門的開放原始碼平台,可用於建構電子專案。其中包含:

  1. 本程式碼研究室中使用的實體可程式電路板 (通常是微控制器),例如 Arduino Nano 33 BLE。
  2. Arduino IDE (整合開發環境),用來撰寫電腦程式碼並上傳至實體板。

Arduino 33 BLE 是以微控制器為基礎的平台:一種使用單一電路板的小電腦。搭載處理器、記憶體和 I/O 硬體,可傳送及接收數位訊號至其他裝置。微控制器與電腦不同,因此不具有強大功能,且通常不執行作業系統。而是使用小型的處理器,而非大量記憶體,以及您直接在硬體上編寫的程式。但因為在設計上盡可能簡單,微控制器只會耗用極少的能源。

執行步驟

  • 設定 Arduino 33 BLE 微控制器,並將其轉變成數位「魔杖」
  • 設定 Arduino IDE 並安裝必要的程式庫
  • 將程式部署至裝置
  • 揮動魔杖,即可擺出各種咒語,瀏覽預測結果

軟硬體需求

2. 設定 Arduino Microcontroller

解開 Arduino 的包裝

從包裝盒中取出電池,從裝箱取出。是導電的,否則可能會造成問題!

6ed84a651c871a58.jpeg

插入筆電

  • 將 MicroUSB 傳輸線插入晶片的插座。
  • 將傳輸線的另一端插入筆電的 USB 插座。
  • Arduino 上的左下方 LED 燈 (如下圖左上方) 會亮起。

c6936696f9659104.jpeg

熟悉工作流程

99852afbed7e78b0.png

如上圖所示,Arduino 上的 TFLite 解譯器會定期對模型執行推論。模型會使用處理過的加速計資料做為輸入內容,並輸出預測結果,指出最有可能發生的手勢。此外,系統還會列印出你想要的輸出內容,正確的 LED 燈會亮起。

3. 設定 Arduino IDE

1. 下載 Arduino IDE

為了將程式部署至 Arduino Microcontroller,我們使用 Arduino IDE。

下載完成後,請按一下位於以下圖示的應用程式,以便安裝並開啟 Arduino IDE:75717f13527f36b9.png

初始到達網頁的開啟方式如下:

933c91e6e1997c61.png

2. 設定董事會管理員

  1. 在 Arduino 選單中選取「Tools -> Board: "Arduino .." —> Boards Manager
  2. 搜尋 "Arduino Nano 33 BLE" 並安裝 Arduino nRF528x Boards (Mbed OS)。確保 Arduino 33 BLE 微控制器受到 Arduino IDE 支援。817c63346152eda9.png
  1. 在 Arduino 選單中選取「Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

9357691e1a1348eb.png

  1. 最後,請確認選取的主面板為「Arduino Nano 33 BLE」。位於 IDE 右下方。

aa08706bb84fa9b2.png

3. 設定通訊埠

在 Arduino 選單中選取 Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)。畫面大致如下所示:

8c25990d0c6fb6f8.png

4. 檢查董事會的連接

在 Arduino 選單中選取 Tools -> Get Board Info。畫面大致如下所示:

ccd8f5305be6cf59.png

4. 安裝程式庫

1. TensorFlow Arduino 程式庫

這個程式庫包含所有 TensorFlow Lite for Microcontroller 範例,包括本程式碼研究室所需的魔杖原始碼。

  1. 在 Arduino 選單中選取「Sketch -> Include Library -> Add .ZIP Library...
  2. 新增你下載的 TensorFlow Arduino 程式庫 .zip

2. LSM9DS1 Arduino 圖書館

這個程式庫可讓您讀取 Arduino Nano 33 BLE Sense 上 LSM9DS1 IMU 的加速計、磁力儀和陀螺儀值。

  1. 在 Arduino 選單中選取「Sketch -> Include -> Manage Libraries...
  2. 搜尋及安裝「"Arduino_LSM9DS1"」。ac2f78a737c5f233.png

5. 載入並建構範例

1. 載入範例

在 Arduino 選單中選取 File -> Examples -> Arduino_TensorFlowLite -> magic_wand,以載入程式碼範例。

de349f2d3cb49b98.png

這樣就能載入魔杖原始碼。

cda8c35a597b0798.png

2. 建構範例

按一下素描視窗中的 Upload 按鈕。

71cb1474d5e14669.png

幾分鐘後,您應該會看到表示閃爍完成的紅色文字。上傳過程中,右側 LED 燈會閃爍,然後結束昏暗畫面。

3df1d0858c6e40a4.png

6. 展示模式

魔杖目前可偵測 3 種手勢,如下所示:99a607da66af9fc8.png

  1. Wing:從左上角開始,仔細追蹤字母「W」設定 2 秒
  2. 響鈴:直立下,將指揮棒往順時針圓圈移動 1 秒。
  3. 斜坡:先將指揮棒朝上,讓 LED 燈朝向你。將指揮棒往左側往下移動,再往右移動一秒。

下圖示範了兩種手勢。第一個是斜坡,然後是 Wing (將此作為示範用的參考)。

9208eb1207211349.gif

如要執行示範,請按照以下說明操作:

  1. 插入 USB 後,從 Arduino 選單中選取 Tools -> Serial Monitor。一開始會開啟一個沒有輸出的空白畫面。

38e8d53652eb28f2.png

  1. 移動 Arduino 微控制器,仔細追蹤上述各個形狀,看看序列監視器是否偵測到這個手勢。

60b8a0017bcae419.png

  1. 從序列監視器的輸出內容中,我們發現魔術棒確實偵測到了所有形狀!您也會看到正確的 LED 燈亮起。

7. 後續步驟

恭喜,你已經透過手勢成功建構第一個「魔杖」體驗 Arduino 微控制器!

希望你喜歡這份簡短的簡介,瞭解如何使用 TensorFlow Lite for Microcontrollers 進行開發作業。在微控制器中,深度學習的構想是新點子,令人感到振奮,建議您去嘗試看看!

參考文件

647c3ef0dc103804.png

謝謝,祝一切順利!