新しいものづくりがわかるメディア

RSS


マウス操作で痩せるの!? 「DDR風の足マウス」を自作キーボード界で有名なPro Microで作製してみた

普段、私はスタートアップ企業のお手伝いをしており、100%リモートワークで仕事をしています。起きてすぐに仕事を始められる一方で、会議も机の上で行えるので必然的に机から動かない生活が続いています。

仕事をするには不向きの机だが、作業スペースが広くとれる。 仕事をするには不向きの机だが、作業スペースが広くとれる。

このままでは運動不足になると、近所のジムを契約しましたが、歩いて5分の距離にあるのですが全く行っておらず、先日休会しました。やはり、家で手軽にできないと続かない! 仕事の合間に運動して、気分転換できないか……。そこで考えたのが、体全体で操作できるマウスでした。仕事をしながら体を動かせば一石二鳥だからです。

足に敷いたマットでマウスのカーソルを再現し、腕に取り付けたボタンで左クリック/右クリックをします。 足に敷いたマットでマウスのカーソルを再現し、腕に取り付けたボタンで左クリック/右クリックをします。

部屋はそこまで広くないため、出窓に板を渡しただけの簡素なデスクを使っています。立って作業をしても良い高さのデスクなので、立ちながらでも使えるように足で操作できるマウスを作製することにしました。

マウスはキーボード用マイコン「Pro Micro」で作れる

写真は「Arduino Pro Micro」と互換性のある「Pro Micro」。縦3~4cm程度と小さい。 写真は「Arduino Pro Micro」と互換性のある「Pro Micro」。縦3~4cm程度と小さい。

マウス自体を手作りするのは意外と簡単で、自作キーボードを作製するときに使うマイコンボードと同じものが使えます。自作キーボードで一般的に使われている「Arduino Pro Micro」は、PCと接続したときにキーボードやマウスとして認識されるヒューマンインターフェースデバイス機能が搭載されているのが大きな特徴です。この機能があるおかげで、PCに接続すれば自動的にキーボードやマウスとして認識してくれます。

さらに、「Arduino IDE」と呼ばれる開発環境を使い、無料で提供されている「Mouse.h」ライブラリを使えば、プログラミング的な知識がほとんど無くても自作マウスを作れます。

Arduino IDEで使えるMouse.hライブラリ。 Arduino IDEで使えるMouse.hライブラリ。

狭い室内で立って使えるマウスを考えたときに、身体に貼り付けるマウスを思いつきました。しかし、PCの前から離れた時に有線だと危ない、無線だとバッテリーが重いという課題があったので、床に敷いて使えるマットにしました。

しかし、マット状のスイッチを作ったことがないので、人が乗っても安全で、足元を見ないで操作しても引っかからないものが分かりません。予算の壁もあるので、どうやって探せば良いのか悩みました。

ネット上にアイデアが無いか調べていたときに、ふと「圧力センサーなら使えるのではないか」と思いつきました。圧力センサーであれば、ON/OFFや圧力をかけている時間が取得できるので、スイッチとしても使えると思います。

ただ、大きな圧力センサーは一般的に販売しておらず、小さな圧力センサーでは、ピンポイントに押す必要があるのではないかという懸念がありました。そこで、Amazonで6×6cmの圧力センサーを購入して試してみることにしました。

Amazonで見つけた圧力センサーのスクリーンショット。 Amazonで見つけた圧力センサーのスクリーンショット。

圧力センサーをスイッチ代わりに使う

購入した圧力センサーのVCCとGNDに耐熱電子ワイヤーを取り付けた。 購入した圧力センサーのVCCとGNDに耐熱電子ワイヤーを取り付けた。

購入した圧力センサーには2本の端子が出ています。この2本の端子は+(プラス)と−(マイナス)で、2本の端子に極性はないので、どちらか片方をPro MicroのGNDに接続し、もう片方をPro MicroのPINに接続します。

プログラムは、Arduino IDEで作成しました。パソコンにインストールするArduino IDE以外にも、Webブラウザーで開発ができる「Arduino Web Editor」があります。環境構築の必要がなく、すぐに始められるので初心者にはArduino Web Editorがお薦めです。今回の作品も、Arduino Web Editorを使いました。

Arduino Web Editorにログイン後、「Create new」から「Sketch」を選択する。 Arduino Web Editorにログイン後、「Create new」から「Sketch」を選択する。
左のナビ「Examples」から、09.USB > Mouse > ButtonMouseControlを選択。 左のナビ「Examples」から、09.USB > Mouse > ButtonMouseControlを選択。
圧力センサーをPro MicroのGNDとPIN(5)に接続した状態で、PCにUSBケーブルで接続する。 圧力センサーをPro MicroのGNDとPIN(5)に接続した状態で、PCにUSBケーブルで接続する。

圧力センサーをPro Microに接続して、ButtonMouseControlのサンプルプログラムを書き換えることなく、そのまま書き込んだところマウスとして認識しました。そして圧力センサーに圧をかけると、パソコンの画面の上をカーソルがスクロールしていきました。

圧力センサーに圧をかけたときの様子。カーソルがすぐに動いた! テンションが上がります。 圧力センサーに圧をかけたときの様子。カーソルがすぐに動いた! テンションが上がります。

圧力センサー1個で1方向に動かすことに成功しました。さらにサンプルのプログラムを見ると、upButton、downButton、leftButton、rightButtonとどうやら4方向を割り当てられそうなので、圧力センサーを増やし4つにしました。

マウススクロールをupButton、downButton、leftButton、rightButtonに割り当てている。圧力センサーをPro Microの対象のPINに接続する。 マウススクロールをupButton、downButton、leftButton、rightButtonに割り当てている。圧力センサーをPro Microの対象のPINに接続する。
圧力センサーを4つ使い、マウスの十字カーソルを再現した。 圧力センサーを4つ使い、マウスの十字カーソルを再現した。
プログラムを一切修正することなく、圧力センサーを4つ接続した。 プログラムを一切修正することなく、圧力センサーを4つ接続した。

圧力センサーを4つにしてプログラムを書き込んでみたところ、これも思い通りに上下左右に動きました。とうとう1つもつまずかず実装できるようになったのかと、自分の成長に涙しました。

クリック操作はmicro:bit×MakeCodeでサクッと実現

自分の成長に浮かれて、作製した足マウスを操作していたときにとんでもないことに気づいてしまいました。そう、クリックができないのです。

足は上下左右のコントロールで大忙しなので、足にクリックの動作を入れるのは到底無理そうです。仕方がないので、クリックは手で操作することにしました。マウスのカーソルと同じようにPro Microでもクリック部分を作れますが、今回は「micro:bit」と呼ばれるマイコンを使ってクリックを再現することにしました。

micro:bitは、教育向けのマイコンボードです。しかし、「MakeCode」と呼ばれるブロックプログラミングの環境で、拡張機能「microbit-pxt-blehid」を使うと、micro:bitを簡単にBluetoothキーボードやBluetoothマウスとして動かせます。

MakeCodeの拡張機能「microbit-pxt-blehid」を選択すればBluetoothマウスがプログラミングできる。 MakeCodeの拡張機能「microbit-pxt-blehid」を選択すればBluetoothマウスがプログラミングできる。
たった数個のプログラムを組み立てるだけで、マウスのクリックが再現できる(micro:bitのAボタンが左クリック、Bボタンが右クリック)。 たった数個のプログラムを組み立てるだけで、マウスのクリックが再現できる(micro:bitのAボタンが左クリック、Bボタンが右クリック)。
Bluetoothマウスとして認識されているのを確認した。 Bluetoothマウスとして認識されているのを確認した。

これで、マウスの上下左右は足元の圧力センサーとProMicro、クリックは手元のmicro:bitで操作する準備が整いました。

ダンスダンスレボリューション的な装飾を施す

最後に、圧力センサーで作製したマウスを操作しやすいようにマットに貼り付けていきます。マット部分は、100円ショップに売っているスポンジのような質感のカラーボード(赤、青、黒)を使いました。また、裏には補強のため、段ボールのような質感のカラーボード(黒)の2つの素材を利用しました。

なんでしょうか。子どもの時に必死でプレイした「DDR(ダンスダンスダンスレボリューション)」を思い出してきました。今思うと画期的かつ、考え込まれたコントローラーだったのかもしれません。ボタン部分が分かりやすいように、上下ボタンに赤いカラーボード、左右ボタンに青いカラーボードを使い、その下に圧力センサーを取り付けました。

黒いカラーボードと、色付きのカラーボードの間に圧力センサーを挟むように設置した。 黒いカラーボードと、色付きのカラーボードの間に圧力センサーを挟むように設置した。

圧力センサーの検知度が落ちてしまわないか、6×6cmという小さいサイズで検知されるかが不安でした。しかしカラーボードの弾力性と厚さがちょうどよかったのか、色付きのカラーボードに足が乗っていれば、押していると認識されました。

ダンスダンスレボリューションを思い出させる形状になった。それぞれ円の下には圧力センサーが設置されている。 ダンスダンスレボリューションを思い出させる形状になった。それぞれ円の下には圧力センサーが設置されている。
圧力センサーの配線をすべてPro Microにつないだ。 圧力センサーの配線をすべてPro Microにつないだ。
足で操作するマウス用に作り直したプログラム。圧力センサーが押されていればカーソルが動く、圧力が0なら止まるシンプルなもの。 足で操作するマウス用に作り直したプログラム。圧力センサーが押されていればカーソルが動く、圧力が0なら止まるシンプルなもの。

ここまでつまずくことなく、サクサクと進んだので楽勝と思いプログラムを書き込んで動作を確認してみたところ、うっ、動く!

しかし、何だか操作している感じがない。一定のスピードでしか動かないので、フィット感がまったく感じられないという結果になりました。この日は、フィット感の正体が分らないまま作業を終了しました。

操作イメージはこんな感じ。一定のスピードで移動するだけなので、自分で操作している感が無い。 操作イメージはこんな感じ。一定のスピードで移動するだけなので、自分で操作している感が無い。

同僚から現状を打破するナイスなアドバイス

失意のまま迎えた翌日、たまたま参加した会社の親睦会に、学生時代にロボット開発をしていたエンジニアが参加していました。幸運にも帰りの電車が一緒の方向だったので、足で操作するマウスとフィット感の悩みについて相談しました。

「それ、加速度無いからじゃないですかね?」相談した瞬間に早速良いフィードバックが返ってきました。「加速度!? マウスにあるの?」そう返す私に、若干おいおいという表情で「マウス動かしたときにカーソルが一定のスピードじゃなくて、速く動かせば速く動くし、ゆっくり動かせばゆっくり動きますよね? それが加速度ですよ。どんなマウスにも入っていますよ」と教えてくれた。

「なるほど……加速度が必要なのか。しかし、圧力センサーを押すときにどうやって加速度をつけたら良いのか……?」家に戻り、もう一度Pro MicroのPIN配列を何気なく見ていたところ、アナログでデータを取得すれば良いと気づきました。最初のプログラムでは、ON/OFFしか考えてなかったのでデジタルでデータを取得していました。

analogRead() 関数を使い、アナログピンから値を取得して反映しています。 analogRead() 関数を使い、アナログピンから値を取得して反映しています。

圧力が強ければ速く動いて、弱ければゆっくり。踏み込み具合で調整すれば、フィット感が上がるのではないか。早速プログラムをデジタル入力からアナログ入力に変更し、踏み込み具合によってマウスのカーソルスピードを変更しました。

上部がデジタルで取得したプログラムのマウス。下がアナログ値で取得したマウス。動きに緩急が出てフィット感が増した。 上部がデジタルで取得したプログラムのマウス。下がアナログ値で取得したマウス。動きに緩急が出てフィット感が増した。

おおおお! 期待通りの動きをしてくれました!! 操作性も問題なし! これなら使えるかもと手応えを感じた瞬間でした。

photo
マウスの動かし方と、PC画面のカーソルの移動。 マウスの動かし方と、PC画面のカーソルの移動。

私は休憩時間にネットサーフィンをしたりYouTubeを見たりすることがあるので、作製した足マウスを使い、まずはブラウザー操作ができるか試してみました。普段何気なく、手で扱うマウスで操作していますが、それが足に変わった途端にものすごく難しくなるというのが最初の印象でした。

始めに、狙ったところにカーソルを持っていくことに四苦八苦します。特に縦スクロールをカーソルとクリックを使って操作するのは非常に難しかったです。そして、手で操作するマウスの偉大さに気付かされました。もっと発明した人がたたえられても良いのではないかとさえ感じました。

簡単なゲームコントローラーとして使ってみる

しかし「足で操作するマウスは難しかった」だけで終わってしまうともったいないので、操作がしづらいことを逆手に取って楽しめることはないかを考え、簡単なゲームをあえて足マウスで操作してみることにしました。

そこで、手始めに「CrazyGames」で公開されている、ラインをつなげていく簡単なゲーム「Lines」を足マウスでプレイしてみました。CrazyGamesは、ブラウザーで手軽に遊べる無料のゲームプラットフォームです。7000以上ものゲームを無料で楽しめます。

Linesは、足マウスに慣れていなくても簡単な操作で遊べる。 Linesは、足マウスに慣れていなくても簡単な操作で遊べる。
真剣に操作している姿がほほ笑ましい。ダイエット効果も考えて、クリックは頭の上に上げた手で操作している。 真剣に操作している姿がほほ笑ましい。ダイエット効果も考えて、クリックは頭の上に上げた手で操作している。

ラインをつなげていくだけですが、適度に頭も使うので気分転換にはピッタリでした。ただ少し簡単すぎたので、次は卓球に挑戦しました。

上下にカーソルを移動すればスタート。左右にマウスを動かしてボールを打ち返す。 上下にカーソルを移動すればスタート。左右にマウスを動かしてボールを打ち返す。
だんだんと足先が慣れて、繊細なタッチができるようになってきた。 だんだんと足先が慣れて、繊細なタッチができるようになってきた。

この卓球は白熱しました。手でやれば簡単なスポーツなのに足だとすごく難しい! 徐々にラリーができるようになると集中して戦ってしまい、気づいたら汗をかいていました。

足マウスは効率的ではないが、ゲームに使うと面白い!

作ってみた感想としては、「足マウスを手で操作するマウスの代わりにするのは無理」でした。一方で、「なぜ世の中に足マウスが無いのか?」と思うくらい、足で操作したらゲームは楽しいという感覚が得られました。特に体全体が動くのでポカポカして、冬場には良さそうです。

また、簡単なルールのゲームも難しくなるので、老若男女問わずゲームで盛り上がれそうです。足マウスを2個作製して対戦ゲームをしても楽しそうですね。

リモート会議中もただ座っているだけになっているので、運動不足解消のため、こっそり足マウスを使って画面を操作してみようと思います。

PCのカメラには一切映らないので、操作しててもバレなさそうです。 PCのカメラには一切映らないので、操作しててもバレなさそうです。

今回使用したパーツリスト

名称 税込価格(円) 個数 小計(円) 用途
Pro Micro - 青基板 2000 1 2000 マウスのプログラム書き込み用マイコン
20g-10kg薄膜圧力センサーRP-S40-ST 1475 2 2950 マウスのカーソル部分
※テスト、本番使用
圧力センサーFSR X 406 1200 2 2400 マウスのカーソル部分
※本番使用
中クリップ付コード 5色 300 1 300 センサーとProMicro接続用
カラーボード 110 3 330 足マウス部分のシート作成用
プラダンボール 110 4 440 同上

合計金額は8420円でした。

おすすめ記事

 

コメント

ニュース

編集部のおすすめ

連載・シリーズ

注目のキーワード

もっと見る