【tinyML系列專題】使用wio terminal 與氣體感測器收集咖啡氣味資料!

作者/攝影 曾吉弘
難度

★☆☆☆☆

材料表 機器人王國購買【AI嗅覺實驗套件】連結

  • wio terminal
  • 氣體感測器
  • 麵包
  • 咖啡
  • 清潔用75%酒精或酒類

wio terminal 與 tinyML

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嗅覺實驗套件】連結

開始吧!

1.wio terminal 的基本環境設定

關於 wio terminal 的基本環境設定,請參考 上一篇文章。我也錄製了影片帶您一步步操作:

不過呢,這次就不用自己再寫 arduino 的上傳程式了,直接使用 seeed 所提供的好用 firmware (點我下載 .uf2 檔)。請把 wio terminal 接上電腦,再把它的開關往 use port 的方向拉兩下,它會變成一個 Arduino 的磁碟,請把 .uf2 檔丟進去就會自動更新這個韌體,之後再重新插拔 usb 線讓他重開機就好了,簡單~

開啟 cmd 或 anaconda prompt,開始上傳資料 (如果還沒有安裝 node.js 的畫,請安裝 node.js v14 以上) :

2. 連上 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 網站了。

3. 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:遠離咖啡與酒精的環境氣味資料

4.建立 impulse 來訓練神經網路

詳細設定請參考上一篇,請看我的 impulse 與神經網路設定:

使用以下設定來訓練,準確度有到 100% !別高興太早,這應該只能說這三種味道的差異本來就很大,您之後可以試試看去分析紹興酒與高粱酒的差別,挑戰性應該很高

5.使用 EON tuner 最佳化

EON tuner 可針對各平台來最佳化,整個流程需要數小時,不過這期間您還是可以進行其他操作,請參考以下設定來設定 target:

  • Dataset category: continous motion (震動、氣味等時間較久的訊號),如果是上一篇的手勢,請改選 motion events
  • Target device:wio terminal
  • Time per inference: 2000 ms (這裡可以自由設定,氣味的話就久一點吧)

 

6.匯出檔案

      匯出步驟請參考上一篇,恭喜完成囉!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *