手の中に収まるスイッチインターフェース
投稿者:マーチン 2020年1月26日
カテゴリ:障碍者全般::Digispark
カテゴリ:障碍者全般::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接続はやめておきます。
IT機器に詳しくないヘルパーさんだったので、Bluetooth接続はやめておきます。
●購入品
品名 | 個数 | 価格 | 備考 |
---|---|---|---|
【Amazon】Digispark Kickstarter Attiny85 マイクロ USB 開発ボード | 1 | 950円/3 | |
【Amazon】Lightning - usb メス カメラアダプタ iPhone/iPad専用 | 1 | 1,399円 | Apple製ではありません |
【Amazon】SF-01 模型用スタイロフォーム 細目 小 | 少し | ||
マイクロスイッチ | 1 | 200円 | |
【Daiso】歯ブラシカバー | 1 | 110円/6 | |
【Daiso】USB - micro-B 充電・転送ケーブル | 1 | 110円 | |
【Daiso】スイッチ付きUSBハブ | 1 | 220円 | USBケーブルの抜き差しで代用も可 |
M2×10ネジ 2個、M2×5ネジ 2個、M2ナット 4個、リード線 | |||
約 2,500円 |
WindowsPC の場合は、カメラアダプタは不要です。
●Digispark とは
アメリカ Digistump LCCの製品。AVRマイクロコントローラーAtmel Attiny85を搭載しており、小さいながらもArduino IDE(開発環境)を使用し、プログラミングを行うことができます。Arduinoのプログラミングに慣れた方ならすぐに使えます。(https://www.elefine.jp/digispark/ より)
今回は、HiLetgo という格安で電子パーツを製造販売している中国企業の製品、いわゆるクローン品です。USB直挿しタイプとmicro-usbコネクタタイプがあるようですが、後者を選びました。
今回は、HiLetgo という格安で電子パーツを製造販売している中国企業の製品、いわゆるクローン品です。USB直挿しタイプとmicro-usbコネクタタイプがあるようですが、後者を選びました。
【Qiita】安価なUSB直挿しマイコンDigisparkのススメ
【digistump】Digispark Quick Reference
【digistump】Digispark Keyboard, Mouse, and Joystick Libraries
【digistump】Connecting and Programming Your Digispark
などの情報を参考にすれば、Arduinoをいじったことがある人なら使えると思います。【digistump】Digispark Quick Reference
【digistump】Digispark Keyboard, Mouse, and Joystick Libraries
【digistump】Connecting and Programming Your Digispark
●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)スタイロフォームとケースを両面テープでくっつける。
(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 かを調べてください。
デバッグ手法は、
を参考にしました。
手順をざっくりと説明します。詳しくは、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
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);
}
●本番プログラム
◆連載
- 【まほろば】手の中に収まるスイッチインターフェース
- 【まほろば】手の中に収まるスイッチインターフェース(続)
- 【まほろば】Digisparkにプログラムを書き込む
- 【まほろば】Digispark 開発環境のチェック
- 【まほろば】手の中に収まるスイッチインターフェース 第2弾
- 【まほろば】手の中に収まるスイッチインターフェース プログラム改良
- 【まほろば】手の中に収まるスイッチインターフェース 第3弾
- 【まほろば】手の中に収まるスイッチインターフェース 第4弾
◆関連記事
- 【まほろば】1スイッチでアプリ操作(設定)
- 【まほろば】1スイッチでアプリ操作(使用例1)
- 【まほろば】1スイッチでアプリ操作(使用例2)
- 【まほろば】1スイッチでアプリ操作(使用例3)
- 【まほろば】iOS11のスイッチコントロール1 (設定1)
- 【まほろば】iOS11でスイッチコントロール2 (設定2)
◆関連サイト
- Digisparkを動かす
- Digispark 超小型ARDUINOクローン WINDOWS インストール
- デカスギ電源ボタン
- HiLetgoのDigispark互換機で手こずりました
- USB直挿しマイコン Digispark(ATTINY85)