Help us understand the problem. What is going on with this article?

ウェアラブルキーボード作ったった

タイトル_small.png

ウェアラブルキーボードとは

体に身につけて使用できる入力デバイスです.
今回は市販の手袋を使用しました.
まずはPVをご覧ください.↓

https://youtu.be/wl-knkEEWxo

ユースケース

以下の場合を想定しています.

  • AR・VRデバイスの使用中
  • スマートウォッチ使用中
  • 運動中
  • ベッドで横たわっているとき

片手で操作できるので,片手しか動かせない人も使えます.

技術的な話

ここからはデバイスの原理的な話と作製方法について書いていきます.
材料さえ手に入れば誰でも簡単に作製が可能です.

使用した材料

ハードウェア側の作製

デバイスの原理の公開は検討中...

1. 手袋を裂く

市販の手袋の縫い合わせを解いていきます.
裂くのは4本指の部分だけです.
S__10518549.jpg
↑このように裂きます.

P.S.
布地から手袋を作製できる方は裂く必要はありません.
手形から布地を切り抜いてください.

2. 回路を縫う

導電糸で回路を縫います.家庭用ミシンで縫えます.

3. ボタンを作る

4本指のボタンと親指のリード線は導電性インクで塗って作ります.
導電性インクが手に入らない方は導電糸で縫っても大丈夫です.

4. 配線する

ArduinoとRN-42,手袋を配線します.

あらかじめ電池ボックスとDC-DCコンバータをハンダしておきます.
このDC-DCコンバータを使うことで,乾電池1本でも(電池がへたっても)3.3Vが常に出せることができます.
電池2本でいいよ,という方は読み飛ばしてください.

ピン配置の確認

  • RN-42のピン配置
    RN42ピン配置.png
    J3の列は使用しないのでピン配置は省きます.

  • ArduinoProMiniのピン配置
    スクリーンショット 2019-11-08 11.59.34.png

回路図(ブレッドボード)

下図のように配線します.
fritzingにAE-ATMEGA328-MINIがなかったためArduinoProMiniで代用しています.ピン配置に注意してください.
(ArduinoとRN-42の配線のみ公開)
yubibo回路図_ブレッドボード_手袋なし.png

ポイントは

  • RN-42のCTS(J2-4番)RTS(J2-5番)はショートさせます.
  • ArduinoのD7をRN-42のTXD(J2-6番)に,ArduinoのD8をRN-42のRXD(J2-7番)に接続します.
    ArduinoのD7をRX,D8をTXとして使い,RN-42とシリアル通信します.
  • RN-42の3.3V(J1-11番)をArduinoのVCC(5V)に,RN-42のGND(J1-12番)をArduinoのGNDに直結させます.
    RN-42の電源はArduino経由で供給します.
P.S.

Arduinoの5Vピンに3.3Vを入力していますが,きちんと3.3Vで駆動しますし5Vピンからはもちろん3.3Vが出力されます.
RN-42は5V入力すると壊れるので注意.

ソフトウェア側の作製

全てArduinoで制御します.
環境は以下.

  • Windows 10
  • Arduino IDE
  • TeraTerm

1. RN42をHID化する

RN-42評価キットはUSB-microB端子がついているので,USBケーブルでPCと繋げます.

RN-42の設定は全てターミナルソフトでコマンドを打つことで設定します.
コマンド一覧はここが詳しく書いてあります.

基本動作

TeraTermを起動し,BaudRate=115200bpsで接続します.
TeraTerm上で

$$$

を入力してコマンドモードに入ります.このときだけEnterキーは押しません
CMDと返ってきます.コマンドモードに入ると緑色のLEDが非常に早く点滅します.

コマンドモードでは入力が表示されないので,+コマンドでエコーを有効にします.

+

ECHO ONが返ってきます.これで打った文字が見えるようになります.

デバイスの基本的な設定を表示するには

D

コマンドモードを終了するときは

---

と入力してEnterキーを押します.

各種設定

以下,コマンドモードに入っていることを前提とします.

# デバイスに名前を付ける(SNコマンド)
SN,YUBIBO
# HIDモードにする(S~コマンド)
S~,6
# 再起動して設定を反映させる(Rコマンド)
R,1

R,1で再起動するとコマンドモードが終了し,緑色LEDがゆっくりと点滅するようになります.

テスト

TeratermでRN-42と接続したまま,スマホなどでRN-42とペアリングしてみましょう.

先ほど設定した名前で表示されているか確認し,接続してみます.

接続ができたら,Teraterm上で何かキーを打つと,接続先にキーが送信されます.

参考にさせていただいたサイト

2. Arduinoにプログラムを書き込む

Githubに公開予定.

キーをカスタマイズ

RN-42はHIDキーボードとして認識されるため,文字以外にも矢印キーやFnキーなども送信できます.

特定の文字を送りたい場合は,次のように単にその文字をシリアルでprintすれば良いです.

btSerial.print('s');

btSerialは別で定義してあります)
次のようにすれば複数の文字列も送れます.

btSerial.print("hello,world!");

自分で送信するキーをカスタマイズしたい場合は,下の表のCodeの数字(16進数)の先頭に0xを付けてbyteで送信します.
ファンクションキーF1を送信したい場合は

sendKey((byte)0x3A);

とすれば良いです.(sendKey関数は別で定義してあります)

スクリーンショット 2019-11-08 11.22.40.png

上の表はここの11ページから拝借しました.

参考にさせていただいたサイト

3. 閾値を設定する

各キーの領域を決定するため読み値の閾値を設定します.

ペアリング

Bluetoothが使えるデバイスとペアリングします.
ペアリングを完了すると,ゆっくりと点滅していた緑色LEDが点灯したままとなります.

iPhoneSEで確認しました.
スマホでは,事前にキーボードを日本語にしておく必要があります.

最後に

GUGEN2019に応募しました!

ぜひほしいねをよろしくお願いします.

ヒーローズ・リーグに応募しました!

XUIリーグ決勝に進出しました.
→ 個人賞『XinSuzuki賞』を受賞しました!
→ MAリーグ決勝審査に進出しました.

yumion
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした