まほろば

手の中に収まるスイッチインターフェース




.

手の中に収まるスイッチインターフェース

投稿者:マーチン  2020年1月11日 【記事印刷】

 手の中に収まる1個のスイッチだけのガジェットを、自作キーボードでは良く使われている安価なマイコンボード"Didispark"で作りました。押すとSPACEキーのコードを送るキーが1個だけのUSBキーボードだと説明したほうが分かりやすいかも。Appleの純正品でないカメラアダプタも使えました。
 (2019.1.11 追記) iPad のスリーブ(自動ロック) を解除した後に、スイッチを押したり離したりしてもLEDが点滅しなくなることがあります。そんな時は、USBケーブルを抜き差ししてください。または、個別スイッチ付きのUSBハブを使って、電源をOFF/ON してもリセットができました。



●きっかけ

 iPadで文字入力がしたいとの相談があった。トラックボールの操作や音声入力を試みたが、残念ながらできなかった。右手中指でボタンを押すことはできそうなので、1個のスイッチだけのUSBキーボードを作って、スイッチコントロールのグライドカーソルを試してもらおうと考えています。
 IT機器に詳しくないヘルパーさんだったので、Bluetooth接続はやめておきます。

●購入品

品名個数価格備考
【Amazon】Digispark Kickstarter Attiny85 マイクロ USB 開発ボード1950円/3
【Amazon】Lightning - usb メス カメラアダプタ iPhone/iPad専用 11,399円Apple製ではありません
【Amazon】SF-01 模型用スタイロフォーム 細目 小少し
マイクロスイッチ1200円
【Daiso】歯ブラシカバー1110円/6
【Daiso】USB - micro-B 充電・転送ケーブル1110円
【Daiso】スイッチ付きUSBハブ1220円USBケーブルの抜き差しで代用も可
M2×10ネジ 2個、M2×5ネジ 2個、M2ナット 4個、リード線
約 2,500円
※USB-CコネクタがついているiPad Pro の場合は、"USB C to USB A 変換アダプタ"が必要です。(100均にもある)
 WindowsPC の場合は、カメラアダプタは不要です。



●Digispark とは

 アメリカ Digistump LCCの製品。AVRマイクロコントローラーAtmel Attiny85を搭載しており、小さいながらもArduino IDE(開発環境)を使用し、プログラミングを行うことができます。Arduinoのプログラミングに慣れた方ならすぐに使えます。(https://www.elefine.jp/digispark/ より)
 今回は、HiLetgo という格安で電子パーツを製造販売している中国企業の製品、いわゆるクローン品です。USB直挿しタイプとmicro-usbコネクタタイプがあるようですが、後者を選びました。
などの情報を参考にすれば、Arduinoをいじったことがある人なら使えると思います。

●USB HID

 今回やりたいUSB HID(USB接続したキーボードやマウス)の実例が以下のサイトに書かれていますので、参考にしました。

●スタイロフォーム


 手にフィットする形状にしたかったので、加工が容易なスタイロフォームを使いました。電熱線で切る発砲スチロールカッターで容易に加工ができます。カッターナイフで削ることもできます。発泡スチロール用接着剤が使えます。
 模型屋さんに売っているジオラマ用の高密度なもの(細目)を使いました。
 画材屋さんでも売っています。名古屋 セントラル画材
 ホームセンターで売られている断熱目的で壁に使うものは、密度が低いのでにあまり適しません。 

 スタイロフォームは耐久性がないので、形状が決まったら「おゆまる」で作り直すのがいいかもしれません。

●製作手順

(1)歯ブラシカバーに、マイクロスイッチが通る四角の穴と、マイクロスイッチ固定用の穴2個、基板固定用の穴2個、USBケーブル通し穴をあける。

(2)基板にピンヘッダーをはんだ付けする。
(3)マイクロスイッチのC(コモン)とN.O.(ノーマリーオープン)の端子を直角に曲げ、N.C.(ノーマリークローズ)の端子を切断する。
(4)マイクロスイッチのCと基板のG(グランド)、マイクロスイッチのN.O.と基板のP0 をリード線でつなぐ。
(5)ネジ2本づつで、マイクロスイッチ、基板を歯ブラシカバーに固定する。

(6)スタイロフォームをケースが収まって、手で握りやすい形状に加工する。

(7)スタイロフォームとケースを両面テープでくっつける。

●環境構築

 手順をざっくりと説明します。詳しくは、Digisparkを使ってみる を参照ください。
(1)Arduino IDE をインストールする。
(2)[ファイル] [環境設定] "追加のボードマネージャのURL" http://digistump.com/package_digistump_index.json
(3)[ツール] [ボードマネージャ] [Digistump AVR Boards by Digistump] [インストール]
(4)post_install.bat を手動実行
(5)[ツール] [ボード] "Digispark (Default - 16.5mhz)"
(6)書き込み装置に「Micronucleus」を選択する
(7)IDEのUI上で書き込み操作を実行後、USBにdigispark を差し込む

●テストプログラム

 まずは簡単なプログラムで、動作確認をしました。 マイクロスイッチを押すと基板上のLEDが点灯し、離すと消えます。
 switchtest.zip

 switchtest.ino

const int PinSw1 = 0;
const int PinLed = 1;

void setup() {
pinMode(PinSw1, INPUT_PULLUP);
pinMode(PinLed, OUTPUT);
}

void loop() {
if (digitalRead(PinSw1) == LOW) {
digitalWrite(PinLed, HIGH);
}
else {
digitalWrite(PinLed, LOW);
}
delay(10);
}


●本番プログラム

 スイッチを押すと、キーボードのSPACEキーを押したことになります。押しっぱなしにすると、長押しになります。チャタリング(1回押したつもりでも、短い間隔で複数回入力される)対策を、追加しています。
 Send1Keycode_191231.zip  


◆連載
◆関連記事
◆関連サイト

  このエントリーをはてなブックマークに追加
.
△ 先頭へ


 
△ 先頭へ