前言
本文將介紹如何使用 Wio Terminal 開發板來操作 Grove EMG 肌電圖感測器與 GSR 膚電反應感測器,並將讀取結果顯示於 Wio Terminal 彩色LCD上。後續會說明如何使用 tinyML 架構,根據這兩款感測器的訊號變化來判斷肌肉狀態。
我們已經針對 Wio Terminal 推出了洞洞三套件包~ (原因請洽腦波弱老闆),也別忘了參考阿吉老師所錄製的 Wio Terminal tinyML 系列影片喔!
撰寫/攝影 | 邱柏憲 | ||
時間 | 1小時 | 材料表 |
|
難度 | 2 (滿分5) |
本文
本文的靈感是來自於這篇 hackster.io文章,使用Grove – 肌電圖感測器 EMG 與 Grove – 皮膚電反應感測器 GSR 搭配 tinyML 框架來分析肌肉痠痛的狀態,很有趣。但在這之前,必須要正確由 Wio terminal 來讀取感測器的狀態,所以寫了這篇簡短教學與大家分享。
注意:這兩款感測器都無法用於醫療用途,有相關需求請洽專業醫療單位。
A.下載 Arduino IDE,並設定開發板
請先取得 Arduino IDE,本文章所使用的版本為Arduino 2.0.0-rc8。本文章推薦使用2.0以後的版本以方便之後有關AI部分的範例 。請根據您所用的作業系統與希望的安裝方式自行下載即可。
開啟Arduino IDE後首先要新增 Wio Terminal 開發板相關定義,步驟如下:
1. 點擊File(檔案)->Preferences(偏好設定)
2. 新增開發板定義網址
在彈出視窗中,在 額外的開發板管理員網址 處(紅框處)輸入以下內容,再按下 OK 關閉視窗。
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
3. 進入開發板管理員
於 Arduino 工具列點選 Tools -> Board > Board’s Manager,來開啟開發板管理員視窗
4. 尋找並安裝 wio terminal 套件
在搜尋欄(紅框處)輸入wio
,就可以在下方找到 Seeed SAMD Boards 的選項,直接安裝即可。本篇文章安裝的版本為 1.8.3。請注意,先前於 2. 的偏好設定網址一定要輸入,否則會找不到對應結果。
5. 設定開發板
上述步驟完成後就能在 Tools > Board > Seeed SAMD Boards 選項中找到 Seeeduino Wio Terminal 與其他系列產品,不要選錯囉。
6. 連接開發板與電腦,確認 COM port 編號
接著使用 USB typeC 傳輸線連接 Wio Terminal 與電腦之後,Wio Terminal 就會自動開機,稍等一段時間等電腦安裝Wio Terminal的驅動程式後,就可以在 Tools(工具)->Port(序列埠)中找到其COM編號,以下圖為例是COM62
。或以 Windows 系統來說,也可進入 Windows 的 “裝置管理員” 來檢視。
B. 圖片轉檔
本文範例會在 wio terminal 上顯示圖檔,因此本段會說明如何轉檔,如不需要此功能可直接跳到 C.
1.轉換圖片格式
由於 wio terminal LCD 有特別的輸出的方式,因此 Seeed 原廠有特別寫一篇文章說明如何將圖片轉成 wio 所需的格式,在此就照著做一遍,步驟如下:
1. 下載 Seeed 提供的 bmp_converter.py
(點我下載)
2. 在放置 bmp_converter.py 的資料夾新增一個資料夾,這裡改名為 bmp
3.將想要顯示在 wio terminal LCD 上的圖片,用小畫家(Microsoft Paint)開啟,或任何能儲存24位元點陣圖的程式也可以。在此用 CAVEDU LOGO 做範例,調整尺寸後將圖片儲存在 bmp
資料夾中,注意要將存檔類型改成24位元點陣圖。
4. 確認python是否有安裝,如未安裝,安裝最新版即可。完成後開啟命令提示字元(cmd),將路徑選到bmp_converter.py
的位置並執行。
接下來程式會詢問轉檔格式,請選擇 (2) 16-bit,完成後就會在資料夾中看到 rgb565
的資料夾,裡面就是正確格式的 .bmp檔了。萬一跳出 ImportError: No module named PIL 的錯誤,請在 cmd 中輸入 pip install pillow
安裝相關套件就可以了
5.檔案轉換完成後,將其複製到 microSD 記憶卡,然後再插入wio_terminal 中就完成了。
B2.下載RAWImage.h
此標頭檔是由 Seeed 提供,可將圖片輸出於 Wio Terminal LCD 的函式庫,請由此取得:
https://files.seeedstudio.com/wiki/Wio-Terminal/res/RawImage.h
直接複製文字後將其貼入一個新開啟的空白.txt檔案,完成後再將其改名為 RawImage.h
再直接放入Arduino的library
資料夾內 (或任何您覺得順手的做法都可以),例如以下路徑 C:\Program Files (x86)\Arduino\libraries
C.接線圖
由於 wio terminal 只有一個類比訊號輸入的Grove頭,因此在肌電圖感測器 (EMG Detector) 需要接到板子背後的腳位才行,此處可使用Grove轉杜邦線或是直接拿三條公公杜邦線連接(本文章做法)
連接方法為:
- 黑接黑(GND)
- 紅接紅(5V)
- 黃接橘(訊號)
- 白色空接
與wio terminal連接為:
- 上排右邊數來第1格接紅色(5V)
- 上排右邊數來第3格接黑色(GND)
- 上排右邊數來第8格接橘色(訊號)
而皮膚電反應感測器(GSR) 就簡單許多,只需將其用Grove 線與右方的Grove腳位座連接即可(紅圈處)
D.程式
程式中關於圖片名稱需與以下相同:
drawImage<uint16_t>("cave.bmp", TFT_HEIGHT/2, TFT_WIDTH-200);
內的cave.bmp一樣否則便無法順利執行程式,如使用其他名稱圖檔,請自行修改即可。
另外如果跳過步驟B的讀者,請註解這行程式碼,否則程式會無法運行 (因為圖檔不存在呀)
E. 執行測試
接下來只要將感測器安裝完畢即可。GSR(皮膚電反應感測器)將布套分別套在食指和中指,EMG(肌電圖感測器) 則是按照Seeed官方示意圖的大略位置將貼片黏於手臂上,安裝完畢後大概位置會如下圖所示
最後就能Wio Terminal上看到當前的量測數值囉!大家可以試試看甚麼情況下的數值可以有變化