作者/圖片來源:CAVEDU 教育團隊
TinyML 是指在 Arduino 這類 MCU 板子上也能做到簡易的神經網路推論,讓基本的感測器資料分析也能透過機器學習來找到更多有趣的資訊。Wio Terminal 就是在這股浪潮下所產生的一個產品,除了使用 ATSAMD51 核心並搭配 Realtek RTL8720DN 的 Wi-Fi / 藍牙晶片,還支援自家的 Grove 系列感測器。最重要的當然是本文核心 – TinyML,可將所收集到的資料透過 Edge Impulse 網站來進行一條龍的處理、訓練與測試流程,再把神經網路檔案匯出到 Wio Terminal 上來執行,過程不能說超簡單,但確實已經方便非常多了!
我們已經寫了一篇文章來介紹了如何使用 Wio Terminal 的光感測器來辨識手勢,本文要介紹使用 Wio Termianl 所提供的好用韌體,來收集咖啡、酒精的氣味資料。非常有趣的題目,您一定會喜歡的喔!
註
本文章將使用 Grove – 多通道氣體感測器 V2,直接接上 Wio Terminal 的任一個 Grove 接口就好,也歡迎購買套件包喔~(機器人王國購買【AI嗅覺實驗套件】連結)

Grove – 多通道氣體感測器 V2
Wio Terminal 的基本環境設定
關於 Wio Terminal 的基本環境設定,請參考 上一篇文章。我也錄製了影片帶您一步步操作:
【Wio Terminal 深度學習-阿吉老師小教室】Ep1 認識Wio Terminal
【Wio Terminal 深度學習-阿吉老師小教室】Ep2 Arduino IDE建置
不過呢,這次就不用自己再寫 Arduino 的上傳程式了,直接使用 Seeed 所提供的好用 Firmware (點我下載 .uf2 檔)。請把 Wio Terminal 接上電腦,再把它的開關往 use port 的方向拉兩下,它會變成一個 Arduino 的磁碟,請把 .uf2 檔丟進去就會自動更新這個韌體,之後再重新插拔 usb 線讓他重開機就好了,簡單~
開啟 cmd 或 anaconda prompt,開始上傳資料 (如果還沒有安裝 node.js 的畫,請安裝 node.js v14 以上) :
連上 Edge Impulse
先安裝 Edge Impulse cli 工具:
npm install -g edge-impulse-cli
接著輸入以下指令來登入 Edge Impulse 網站 (當然您需要先註冊帳號,並在網站上建立一個專案):
edge-impulse-daemon --clean
請依序輸入帳號密碼、命名 Wio Terminal 裝置 (如圖中的 wio_nose)、、選擇專案 (我也取名為 wio_nose),最後看到 “[WS ] Go to https://studio.edgeimpulse.com/studio/63509/acquisition/training to build your machine learning model! ”,就可以回到 Edge Impulse 網站了。
Edge Impulse 收集資料
請確認氣體感測器已經接好,並開啟 Edge Impulse 網站,進入您所建立的專案,點選左側的 Data acquisition,先看到右側的 Sensor,從下拉式選單可以看到wio 內建與常用的感測器只要接好就好,這樣就不用修改上一份教學中的 upload.ino 的讀取邏輯了 (感動)。
先輸入 Label 為你所定義的類別,在此有以下三個類別:
- coffee: 泡一杯香濃的咖啡吧~
- 75_alcohol: 容易取得的 75% 洗手酒精
- surrounding:遠離以上兩種氣味的環境
將感測器置於該情境中,例如咖啡杯上方、噴了酒精的衛生紙,按下 Start sampling,在此我們把 Sample length (ms) 樣本長度設定為 10000 ms,因為氣味會延續一段時間。
收集完三類別的資料如下圖,可以看到四軸的資料變化:
coffee 的資料:
75_alcohol 的資料:
Surrounding:遠離咖啡與酒精的環境氣味資料
建立 Impulse 來訓練神經網路
詳細設定請參考上一篇,請看我的 Impulse 與神經網路設定:
使用以下設定來訓練,準確度有到 100% !別高興太早,這應該只能說這三種味道的差異本來就很大,您之後可以試試看去分析紹興酒與高粱酒的差別,挑戰性應該很高!
使用 EON Tuner 最佳化
EON Tuner 可針對各平台來最佳化,整個流程需要數小時,不過這期間您還是可以進行其他操作,請參考以下設定來設定 target:
- Dataset category: continous motion (震動、氣味等時間較久的訊號),如果是上一篇的手勢,請改選 motion events
- Target device:Wio Terminal
- Time per inference: 2000 ms (這裡可以自由設定,氣味的話就久一點吧)
匯出檔案
匯出步驟請參考上一篇,恭喜完成囉!
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!