まほろば

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

投稿者:マーチン  2020年1月26日 
カテゴリ:障碍者全般::Digispark

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



●きっかけ

 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 A→Type C変換アダプタ"が必要です。(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 を差し込む

Digispark での開発環境を構築した後に、加工をする前の Digispark を使ってチェックをし、Model A か Model B かを調べてください。

デバッグ手法は、
を参考にしました。

●テストプログラム

 まずは簡単なプログラムで、動作確認をしました。 マイクロスイッチを押すと基板上のLEDが点灯し、離すと消えます。Model A 用のスケッチです。
 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);
}


●本番プログラム



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