作者/圖片來源:CAVEDU 教育團隊
本文將介紹如何使用 Wio Terminal 開發板來操作 Grove EMG 肌電圖感測器與 GSR 膚電反應感測器,並將讀取結果顯示於 Wio Terminal 彩色LCD上。後續會說明如何使用 tinyML 架構,根據這兩款感測器的訊號變化來判斷肌肉狀態。
我們已經針對 Wio Terminal 推出了洞洞三套件包~ (原因請洽腦波弱老闆),也別忘了參考阿吉老師所錄製的 Wio Terminal tinyML 系列影片喔!
本文的靈感是來自於這篇 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 關閉視窗。
3. 進入開發板管理員
於 Arduino 工具列點選 Tools -> Board > Board’s Manager,來開啟開發板管理員視窗
4. 尋找並安裝 wio terminal 套件
在搜尋欄(紅框處)輸入
,就可以在下方找到 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編號,以下圖為例是
。或以 Windows 系統來說,也可進入 Windows 的 “裝置管理員” 來檢視。
B. 圖片轉檔
本文範例會在 wio terminal 上顯示圖檔,因此本段會說明如何轉檔,如不需要此功能可直接跳到 C.
1.轉換圖片格式
由於 wio terminal LCD 有特別的輸出的方式,因此 Seeed 原廠有特別寫一篇文章說明如何將圖片轉成 wio 所需的格式,在此就照著做一遍,步驟如下:
1. 下載 Seeed 提供的
(點我下載)
2. 在放置 bmp_converter.py 的資料夾新增一個資料夾,這裡改名為
3.將想要顯示在 wio terminal LCD 上的圖片,用小畫家(Microsoft Paint)開啟,或任何能儲存24位元點陣圖的程式也可以。在此用 CAVEDU LOGO 做範例,調整尺寸後將圖片儲存在
資料夾中,注意要將存檔類型改成24位元點陣圖。
4. 確認python是否有安裝,如未安裝,安裝最新版即可。完成後開啟命令提示字元(cmd),將路徑選到
的位置並執行。
python bmp_converter.py
接下來程式會詢問轉檔格式,請選擇 (2) 16-bit,完成後就會在資料夾中看到
的資料夾,裡面就是正確格式的 .bmp檔了。萬一跳出 ImportError: No module named PIL 的錯誤,請在 cmd 中輸入
安裝相關套件就可以了
5.檔案轉換完成後,將其複製到 microSD 記憶卡,然後再插入wio_terminal 中就完成了。
B2.下載RAWImage.h
此標頭檔是由 Seeed 提供,可將圖片輸出於 Wio Terminal LCD 的函式庫,請由此取得。
直接複製文字後將其貼入一個新開啟的空白.txt檔案,完成後再將其改名為
再直接放入Arduino的
資料夾內 (或任何您覺得順手的做法都可以),例如以下路徑
C.接線圖
由於 wio terminal 只有一個類比訊號輸入的Grove頭,因此在肌電圖感測器 (EMG Detector) 需要接到板子背後的腳位才行,此處可使用Grove轉杜邦線或是直接拿三條公公杜邦線連接(本文章做法)
連接方法為:
- 黑接黑(GND)
- 紅接紅(5V)
- 黃接橘(訊號)
- 白色空接
與wio terminal連接為:
- 上排右邊數來第1格接紅色(5V)
- 上排右邊數來第3格接黑色(GND)
- 上排右邊數來第8格接橘色(訊號)
而皮膚電反應感測器(GSR) 就簡單許多,只需將其用Grove 線與右方的Grove腳位座連接即可(紅圈處)
D.程式
程式中關於圖片名稱需與以下相同:
內的cave.bmp一樣否則便無法順利執行程式,如使用其他名稱圖檔,請自行修改即可。
另外如果跳過步驟B的讀者,請註解這行程式碼,否則程式會無法運行 (因為圖檔不存在呀)
#include
#include
#include "TFT_eSPI.h"
#include "SD/Seeed_SD.h"
#include "RawImage.h"
TFT_eSPI tft;
TFT_eSprite spr = TFT_eSprite(&tft);
#define GSR A0
#define EMG A2
int gsr_value , emg_value ;
uint32_t background_color = tft.color565(0, 0, 0);
uint32_t text_color = tft.color565(174, 255, 205);
void setup() {
Serial.begin(115200);
if (!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)) while (1);
tft.begin();
tft.setRotation(3);
tft.fillScreen(background_color);
tft.setTextColor(text_color);
tft.setTextSize(2);
spr.createSprite(TFT_HEIGHT / 2, TFT_WIDTH);
spr.setTextSize(3);
drawImage("cave.bmp", TFT_HEIGHT / 2, TFT_WIDTH - 200);
}
void loop() {
get_GSR_data(3);
get_EMG_data();
spr.drawString("gsr:= ", 10, 10);
spr.drawString("(finger) ", 10, 40);
spr.drawString(String(gsr_value), 10, 70);
spr.drawString("emg:= ", 10, 100);
spr.drawString("(arm)", 10, 130);
spr.drawString(String(emg_value), 10, 160);
spr.pushSprite(0, 0);
delay(50);
spr.fillSprite(background_color);
}
void get_GSR_data(int calibration) {
long sum = 0;
for (int i = 0; i < 10; i++) { sum += analogRead(GSR); delay(5); } gsr_value = (sum / 10) - calibration; Serial.print("GSR Value => "); Serial.println(gsr_value);
}
void get_EMG_data() {
long sum = 0;
for (int i = 0; i < 32; i++) { sum += analogRead(EMG); } emg_value = sum >> 5;
Serial.print("EMG Value => ");
Serial.println(emg_value);
Serial.println();
delay(10);
}
wio terminal read emg and gsr sensors
E. 執行測試
接下來只要將感測器安裝完畢即可。GSR(皮膚電反應感測器)將布套分別套在食指和中指,EMG(肌電圖感測器) 則是按照Seeed官方示意圖的大略位置將貼片黏於手臂上,安裝完畢後大概位置會如下圖所示
最後就能Wio Terminal上看到當前的量測數值囉!大家可以試試看甚麼情況下的數值可以有變化
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!