VIVE討論
瀏覽 : 5416
分享

[教程] 彎曲傳感手套(一) - 硬體製作

新手會員2018-9-22 17:48

大家好,小弟上來野人獻曝一下,在此公開個人製作"彎曲傳感手套"的全部過程,希望對有興趣的同好有所幫助,以下影片內容是預計填寫的各章節簡介與製作完成後的展示影片:
[Youtube]https://www.youtube.com/watch?v=kMfHDuT-jzg&t=8s&index=6&list=PLQOz6RrNZk7W2_bMIecxzgzHHGooVZw9e[/Youtube]

下面開始第一篇的教學說明,敬請不吝指教:
=============================================================================

【前言】

    人機介面或稱人機互動(Human-Machine Interface;HMI)是一門非常深奧的領域,其專業範圍跨足多項科技領域,何謂人機介面?簡單的解釋就是在人與機器之間,透過某種介面,讓人們可以對機器下達指令,然後機器也能夠透過此介面將執行狀況或結果回報給使用者,好的人機介面除了可以降低人們對機器的學習曲線外,還能在機器使用中達到保護操作人員安全的作用,這也是今天我們所要製作的"彎曲傳感手套"的發想初終,藉由人類最熟習的雙手直覺的與機器互動,因該是最理想化的輸入方式,話止與此接下來就一步一步的說明如何製作"彎曲傳感手套",也期望大家能在了解原理後可以精進或改良這個技術,並使用這個技術創造出更多有趣的應用。
【準備材料】
  • 單向彎曲傳感器        X 5
  • Arduino NANO                X 1
  • 迷你170孔麵包板        X 1
  • 杜邦線-公對公                X 20
  • 杜邦線-公對母                X 20
  • 10kΩ電阻                X 5
  • 手套                                X 1
  • 熱縮套管                        些許
  • 透明膠帶                        X1
  • 25mm大頭針                X1
  • 3M超強力雙面膠        X1


【準備工具】
  • 焊錫槍
  • 焊錫
  • 尖嘴鉗

【使用軟體】
  • Arduino 1.82

【程式下載】【電路圖】
【製作方法】
Step 1:將公對公杜邦線插入單向彎曲傳感器並焊上少許焊錫,如下圖:


Step 2:在焊處套上熱縮套管,如下圖:


    • 重複以上兩個步驟製作剩下的四個單向彎曲傳感器


Step 3:參考電路圖將所有元件與電線插入麵包版上,如下圖:

Step 4:請將從GitHub下載的檔案解壓縮並使用Arduino軟體開啟位於[Tutorials_1\Arduino\CurvedSensingGlovesTutorial_1\CurvedSensingGlovesTutorial_1.ino]的檔案,程式碼說明如下:
#define PIN_THUMB   A0    // 拇指.
#define PIN_POINTER A1    // 食指.
#define PIN_MIDDLE  A2    // 中指.
#define PIN_RING    A3    // 無名指.
#define PIN_LITTLE  A4    // 小指.

// 拇指數值.
int thumbValue = 0;
// 食指數值.
int pointerValue = 0;
// 中指數值.
int middleValue = 0;
// 無名指數值.
int ringValue = 0;
// 小指數值.
int littleValue = 0;

String str = "";

//-------------------------------------------------------
// 初始.
//-------------------------------------------------------
void setup() {  
  Serial.begin(9600);
}

//-------------------------------------------------------
// 主迴圈.
//-------------------------------------------------------
void loop() {  
  // 拇指數值.
  thumbValue = analogRead(PIN_THUMB);
  // 食指數值.
  pointerValue = analogRead(PIN_POINTER);
  // 中指數值.
  middleValue = analogRead(PIN_MIDDLE);
  // 無名指數值.
  ringValue = analogRead(PIN_RING);
  // 小指數值.
  littleValue = analogRead(PIN_LITTLE);

  // 顯示手指各部分訊息(拇指數值|食指數值|中指數值|無名指數值|小指數值|)
  str = (String)thumbValue + "|" + (String)pointerValue + "|" + (String)middleValue + "|" + (String)ringValue + "|" + (String)littleValue + "|";  
  Serial.println(str);
  
  delay(100);
}


  • 請在編譯無誤後上傳到Arduino NANO



  • 上傳成功後可在Arduino編輯器內按下(Shift+Ctrl+M)以叫出以下視窗並測試每個單向彎曲傳感器數值是否輸出正常(垂直到彎曲數值是否呈現遞減狀態)



Step 5:建議在所有電子零件跟單向彎曲傳感器測試都正常後才執行以下動作,不然等將所有電子零件固定到手套後才發現零件有問題,然後要在拆開來替換或調整就會比較麻煩了,以下繼續將所有單向彎曲傳感器固定到手套上,如下圖:
  • 先將五個單向彎曲傳感器用膠帶貼緊在手指上
  • 上面在用大頭針固定單向彎曲傳感器
  • 大頭針固定後使用尖嘴鉗將大頭針尖頭處夾除,在將大頭針轉折固定


  • 將迷你麵包板與Arduino NANO用3M超強雙面膠黏在手套適當位置上

【後記】
下一篇教學我們將繼續讓傳感手套擺脫USB線的束縛,透過Bluetooth無線傳輸來傳接收資料,那就下次見囉



檢舉 回應

一般用戶

等級1

路過旅人

Woodrose2018-9-23 00:45

太猛了,自己產糧的意思不過不知道是不是藍芽界面的問題,感覺反應沒有同步

檢舉 回應

新手會員2018-9-23 10:07

鐵船 發表於 2018-9-23 00:45
太猛了,自己產糧的意思不過不知道是不是藍芽界面的問題,感覺反應沒有同步
...

報告鐵船大。。因為用了最簡單的取樣跟旋轉內插演算法,所以看起來才會有點延遲感覺,如果直接將手套接收到的數據直接使用就會非常非常的即時,不過衍生的問題就是會有嚴重的抖動問題,所以這邊就要請有經驗的大大幫忙改良了。。

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2018-9-29 21:50

教學超棒~~非常感謝你的分享~~~
最近剛好有需要 正在研究這個 目前也是使用彎曲傳感器+藍牙
我比較有問題的是後續建手模跟數值轉換的部分  
之前完全沒碰過這類的東西
想請問應該是要先用另外的軟體去做模型然後訂出手指關節嗎?(3dsMAX / maya)
謝謝!





本文章最後由( Ning )於 2018-9-29 21:53 編輯

檢舉 回應

新手會員2018-9-29 22:39

Ning 發表於 2018-9-29 21:50
教學超棒~~非常感謝你的分享~~~
最近剛好有需要 正在研究這個 目前也是使用彎曲傳感器+藍牙
我比較有 ...

Hi Ning謝謝。。。
先回答一下您的問題,就純建模部分其實有很多軟體可以達成,包括您列出的3dsMAX / maya 。。
不過一般會先考量您所使用的程式軟體支援哪種模型規格而定,像我是使用Unity所以您說的3dsMAX / maya都可以輸出模型給Unity用。。
如果您也是使用Unity的話,會建議您先到Unity商店找一下免費或便宜的手模型先試作,等確定作法後再請3D美術人員出3D模型給您正式使用。。。
下面是Unity商店的手模型,給你參考一下。。。

https://assetstore.unity.com/packages/3d/characters/humanoids/hand-for-vr-96403

另外你說的部份我因該在第三篇教學會說到,第二篇已經快寫完了,所以第三篇要在等等了,最近工作有點小忙啊,敬請期待。。。




檢舉 回應

一般用戶

等級1

路過旅人

Quinton2018-10-1 09:41

這個有意思~~但是最麻煩的是~~如何把訊號傳到vive 定位器後傳到vive控制單元??

這一塊哪裡有資訊可以看嗎??


謝謝

檢舉 回應

新手會員2018-10-1 18:38

johnny-yeh 發表於 2018-10-1 09:41
這個有意思~~但是最麻煩的是~~如何把訊號傳到vive 定位器後傳到vive控制單元??

這一塊哪裡有資訊可以看嗎? ...

Hi johnny yeh...
據我所知一般是透過藍牙裝置,這個在小弟的第二篇教學裡面會說到,文章正在趕工中。。

檢舉 回應

分享