Adaptive Hubに続き、ダメもとでAdaptive Joystick Buttonもゲットしてみました。
弱い力でも押せるのかなと若干期待していましたが、そうでもなく、クリックさせるにはそれなりの力が要ります。というわけで息子が使いこなすのは無理そう。細かい動作はできないけどある程度力はある人向けかなと思いました。クリックさせるのに必要な力に対して、台座部分がどっしりしているわけではないので、実際に使う場合は台座を固定する方法を考える必要がありそうです。
秋にMicrosoftから発表されていたAdaptive Hubが発売されたので、さっそく調達しました。12月6日にMicrosoft Storeで注文して、翌日の7日に発送・当日着というスピード配達でした。
見た目はこんな感じです。同じシリーズのマウスやジョイスティックも接続できるみたいですが、うちはタッチセンサー一択なので、3.5mmジャックを使います。3.5mmジャックは5個ついています。
Bluetooth接続自体は、Windows/Mac/iPad/iPhone/Androidなんでもできるみたいですが、設定はWindowsを使ってやる必要があるようです。Microsoft Storeから、Microsoft Accessory Centerというアプリをダウンロードして使います。画面は下のような感じ。このアプリで、3.5mmジャックごとに処理を割り当てることができます。添付画像のケースだと、1番目と2番目に、それぞれEnter押下とSpace押下を割り当てています。一度Windowsで設定してしまえば、あとはiPad等のほかのデバイスでも使えるみたいです。
同じようなインターフェース装置をArduinoで自作していましたが、レスポンスがいいし画面からカスタマイズできるので、こちらの方が全然良いです。こういったニッチな装置を比較的廉価に提供してくれるのは本当にありがたいことです。マイクロソフトは、ナデラCEOになってから本当にアクセシビリティに力を入れてくれていますね。しかもそれを本国の米国だけでなく、グローバルに展開してくれている。感謝、感謝です。
[2023/1/15 追記]
その後、結構残念なことが判明しました涙。iPadに接続はできて、アプリで設定した通りの動作をさせられるのですが、なんとBluetoothで接続した場合、スイッチコントロールで使えないようです。こことかここでも報告があがってました。有線接続だと使えるみたいで、Youtubeで設定方法をアップしている方がいました。
ちなみにAndroidではスイッチコントロールも使えました。iPadの問題なのか、Adaptive Hubの問題なのかわかりませんが、ファームウェアのアップデート等でなんとかしてもらいたい・・。スイッチコントロールを独自に組み込んでいるアプリだとBluetooth接続でも使えるので、iOS側の問題なんでしょうか。
Xbox Adaptive Controllerは、外部のジョイスティックを接続することができます。冒頭の写真のUSB端子もその一つで、こちらは製品仕様のページやサポートページにも書いてあるし、サムスティックのシルエットでR/Lと書いてあるのですぐにわかります。でも実はもう1セット、ジョイスティック入力を受け付ける端子があります。下の画像で赤枠で囲ったX1とX2です。
このX1とX2は、普通のスイッチを接続して、A/B/X/Yなどのいずれかのボタンに割り振ることもできますが、4極の3.5mmプラグをつなげると、ジョイスティックとしての入力を受け付けます。ジョイスティックって、要は2つの可変抵抗器なのです。そしてMicrosoftが公開している Xbox Adaptive Controller Input Device Specifications という資料を読むと、どの端子に何を接続すればよいかがわかります。資料は下のリンクから入手することができます。
https://support.xbox.com/en-US/help/account-profile/accessibility/xbox-adaptive-controller-input-device-specification
息子はジョイスティックなりサムスティックなりを動かす力は残ってないので、操作はまず無理なのですが、ものは試しということで、1つ作ってみました。
作るといっても、市販のサムスティックと4極ジャックをケーブルでつなげるだけです。今回もマルツオンラインで部品を調達しました。
はんだ付けしてできたのがこちらです。
さっそくX1に接続して動作を確認したところ、きちんと左のサムスティックとして機能していました。ただ、利用したブレークアウトボード(上にリストアップした調達部品の2つめ)は、Y軸が反転しているため、通常のコントローラーについてるサムスティックと同じ操作方法を得るには、このブレークアウトボード抜きで実装したほうがよさそうでした。もしくは、XとYの接続を入れ替えて、90度回転させて使うといいかも。
去年くらいに出ていた、新しいそよ、我が家もようやくゲットしました。前回の新そよがだいぶ期待外れだったので、今回は見送っていたのですが、旧そよ3台も使い込んでだいぶヘタってきたので背に腹は代えられないということで。
息子氏の身長的に、新しく出ていたミドルサイズにも心惹かれましたが、取り回しの良さを優先してハーフサイズをチョイス。届いて実物を見たら、前作の不満ポイントが改善されていてだいぶ良い感じ。ファンのパワーが増したのと、横幅が急そよに戻った、そして厚みが前作に比べてだいぶ減りました。ただ、引き続き内部の部材はスパゲッティ状のクッションで、これはほんと旧そよに戻してほしい。
スパゲッティクッションは、案の定へたりやすいみたいで、数日使ったら息子の体にあわせてへこみができていました。こうなると姿勢が悪くなって換気量に影響があるので、悩ましいところです。でもまあなんとか使えそうなので、メーカーさんに(旧そよの再販を祈念しつつ)あらためて感謝です。
atexdirect.jp
ピエゾスイッチは動作が安定してて良いのですが、端子部分が消耗品であることと、長押しができないことから、ひきつづきタッチセンサー式も使っています。タッチセンサースイッチは主にゲーム用途です。
なのですが、タッチセンサーはどうかすると、感度が不安定なって誤動作が起きてしまう。そこでスケッチを見直して改善を図ってみました。今までは、閾値を超えたらONとみなし、その後一定回数はON/OFF判定しないとしていましたが、閾値を超えたら、その後も2回連続で閾値をこえた場合にONとみなすようにしました。OFFの判定も同様です。
今回もいちおう動いていますが、やはりどうかすると不安定になってしまいます。どうも、センサーのケーブルがループを描いていたり、電磁波を発するものや、電流の流れる/電圧のかかるケーブル類を近くに置いておくとダメみたいです。Xboxの近くは全然だめで、Nintendo Switchの近くは比較的大丈夫だったりするようです。
今後使うときは、電子機器類からなるべく遠ざけたり、ケーブルの取り回しに気を付けてみよう・・。
ということで、翌日さっそく息子氏に使ってみたところ、ケーブル取り回しや電源の取り方に気を付けた効果もあってか、すこぶる安定していました。ついでにセンサーの固定方法も見直して、クランプで固定するようにしました。
先日作ったピエゾスイッチ、いろいろイマイチだったので、作り直しました。変更したのは以下の3点。
回路とコードはこんな感じです。TipスイッチをINPUT_PULLUPしたピンにつないでプラグの挿入を検知するようにしています。Tipスイッチは、プラグを入れるとオフになるので、TipをGNDにつないでおいて普段はオン状態にしておき、スイッチオフを検知したら、すなわちプラグが入ったとみなしてセンサーの状態チェックを行います。コードの方はセンサーが1個になったので本当はもっとシンプルにしてよいのですが、めんどくさいので前回のコードをちょい直すだけにしました。
前回作った時のパーツを再利用して、あらためて作成しました。とりあえず、いい感じに使えています。
先日作った感圧センサーは、やっぱりうまく使えないため、あらためてピエゾセンサーに挑戦してみました。
いろいろ試行錯誤を経て、回路図とコードは次のようになりました。
感圧センサーは、圧力がかかっている間は抵抗が変わるので、抵抗が変わっている間はスイッチをオン状態にするというコードでした。圧電センサーの場合は、圧力が変化するときに電圧が変わるので、それをとらえるようにします。また、圧力が変化するときだけの変化なので、スイッチを押しっぱなしにするということができません。loopの中で、20msec x 12回まったらオフにするようにしました。
また、ピエゾセンサーは消耗品なので、センサー部分は取り換え可能なようにします。そうすると、2つのセンサーのうち、1つのセンサーだけとりつけて使用するといったことが可能になります。しかしそうした場合、センサーを取り付けていない方のスイッチオン/オフが安定しないことがわかりました。そのため、スライドスイッチで1スイッチモードか2スイッチモードかを選べるようにして、センサー1つだけで使う場合は1スイッチモードで使うようにしました。1スイッチモードの場合、2つめのセンサーの入力は受け付けません。
実装は、今回も既存資産を流用して、圧電センサースイッチを改造してピエゾ化しました。センサー部分の回路変更と、スライドスイッチの取り付けだけで済みました。いちおう、きちんと機能しているみたい。
既存資産流用のせいで回路および使い方が複雑になっちゃっているので、そのうち予算と時間が確保できたら、改良版を作ってみようと思います。ピエゾ端子の接続にはイヤホンジャックを使っているので、ジャック側でプラグ(=端子)の抜き差しを検知して、プラグが挿入されている時だけセンサーをオンにすることができそうな気がする。今年の夏休みの自由研究かな。