OGIMOノート~家族のためのモノづくり~

OGIMOテックノート ~家族のためのモノづくり~

重度障害の息子を持つ父親エンジニアの備忘録。自作の電子工作おもちゃ/リハビリ器具/ロボット関係の製作記録、思った事を残していきます

息子向けポータブルモリビリティを改造してみた① (ジョイスティック操作)

今回の学び技術: 電動カート改造、回路ハッキング

はじめに(作成動機)

f:id:motokiinfinity8:20181028180440j:plain

歩けない息子が自分の意志で自由に動ける様になるための練習用電動移動機器を作りたいというのが動機です。
電動移動機器を小さな子供のうちから慣れる事は子供の好奇心・成長に大きな効果があるとの研究もあり、息子の将来の可能性を考えると少しでも早く試したい!
本当は電動車椅子でやりたかったのですが、お値段が高く購入には踏み切れないので、まずは子供用おもちゃで操作練習をする事にしました。
しかし、自分で一から作るとなると時間がかかってしまう…(特に子供の体重に耐える強度のものを作ろうとすると金属加工等のノウハウがいるため手をこまねいていました)
という事で、まずは既製品をベースにちょい変更。

目を付けたのが、
子供用電動移動乗り物「mottoy」!!e-akros.com


本機の特徴は、子供用乗り物としては珍しい左右のタイヤが別々に動く独立二輪 
つまり、前後だけでなく左右旋回も出来るので小回りも効き、車タイプの乗り物に比べて移動自由度が高い! 電動車椅子の移動感に近いので、これは練習にうってつけ!

という事で、さっそく購入!

しかし、、、残念ながら、操作レバーが左右2つ別々に付いている。例えば、右側旋回する場合、左レバーは前、右レバーは後ろに倒すイメージですが、、、知的発達も遅れている息子にはまずこの操作インターフェースは扱いきれない……


という事で、このMottoyをベースに、息子に適した操作インターフェースに変更できる様なモビリティベースに改造したいと思う!

要求仕様① 息子が簡単に操作できるジョイスティックでモビリティを操る
 (コントローラの置き場所は自由に変更できる事)
要求仕様② ジョイスティック以外の手段でも操作可能。簡単に交換できる事


※改造はあくまで自己責任ですので、ご注意ください(^^;

完成品

完成動画はこちら

既製品を改造したおかげで、開発期間は約10日間

なお、コントローラ側は以前の記事で開発した
「LEDが光るジョイスティックコントローラ」です。
ogimotokin.hatenablog.com

ちなみに、ジョイスティック以外にも簡単に置き換えれる様にしてみた応用例として、Nintendo LABOのバイクToy-Conで操作してみました。

なお、Nintendo LABOのバイクToy-Conでの操作方法は過去記事を参照ください。
(過去記事の対応から、今回向けに通信ルールを変更したのみです)
ogimotokin.hatenablog.com

ベース機体分析 (分解/ハッキング検討)

まずは制御マイコン部を見てみます。座席部分のフタをあけてみると、制御回路&バッテリーが収まっていました。

f:id:motokiinfinity8:20181028182347j:plain

意外とスカス…もといシンプルに収まっている。これなら何とか回路構成を追えそうだ。
ネジを外して、基板部分を取り出してみます。

f:id:motokiinfinity8:20181104053254j:plainf:id:motokiinfinity8:20181102010016j:plainf:id:motokiinfinity8:20181104052850j:plain

これもまた結構シンプル。両面基板なので配線の流れが追いやすいね。
そんな感じで、簡易回路図+ブロック図に起こしたのが下記図

f:id:motokiinfinity8:20181102010543j:plain


一部間違いなどあるかもしれませんので、その場合はご容赦を ^^) _

ハック構想検討

どの様にハックするか? オリィ研究所で製作された「Nintendo LABOで動く車椅子」を先日体験させて頂きました。
https://twitter.com/Takeru_FTX/status/991267031520460800
それは電動車椅子のハンドルを物理サーボモータ×2で外部から物理ハックするものでした。同様の方法で、本Mottoyもハンドル部分を物理ハックしようと企んでましたが、残念ながら息子が触って壊す可能性があるため、今回はボツ。
なので、少し考え方を変えて、ハンドル部分に配線されているスイッチ自体をハックする「スイッチ回路ハック方式」に変更しました。

注目したのは、マイコンボードとスイッチ間を接続している10Pinのハーネス
ここを分離/延長して、別途ハッキングマイコンに経由させて必要な信号のみをハッキングする方式を考えました。
ハックするのは、左右のレバー操作と繋がっている4本の信号(黄/緑/橙/青)。どうやら、モーターON時は L(GND)に、OFF時はOpenにする仕様なので、
トランジスタによるオープンドレイン回路を構築して、マイコンからモータ制御方向情報に応じたON/OFF情報を通知してもらえばOKそうですね。


必要部品

① M5stack : ESP32 Dev Kitでもよかったが、「動作事前通知(動きを事前に音声でお知らせ)」をやりたかったので簡単にスピーカ再生ができるM5stackを選択
② M5stack プロトタイプモジュール
③ 圧着コネクタ XHP-10 & ハウジング (分岐用ハーネスを作成するため)
④ M5stack電源用 6V→5Vレギュレータ
  L7805CV STMicroelectronics | Mouser 日本
⑤ NPNトランジスタ×4個 

ハードウェア改造

改造後の全体イメージは以下。
f:id:motokiinfinity8:20181102013530j:plain

元の基板とハーネスの間に、自作追加延長ハーネスを追加して、その一部の信号をM5stackにつなげます。
こうすれば、もし将来的に誰かに譲渡する場合、元の市販品の状態に戻す事が出来ます。(Mottoy自体のハードウェアには手を加えていないため)

f:id:motokiinfinity8:20181104044911j:plainf:id:motokiinfinity8:20181104044820j:plainf:id:motokiinfinity8:20181104044849j:plainf:id:motokiinfinity8:20181104044915j:plain

苦戦したのはモータ左後回転。他信号同様にNPNトランジスタ経由でGPIO制御する改造を試みましたが、何故かここだけ制御できませんでした。原因を追っていくと、黄色信号の電圧が特殊であった事でした。 他の端子はOpen時は3.3V電位なのですが、黄色信号のみなぜか 1.0Vのため、M5stackからのGPIO(3.3V)をトランジスタ ベースに接続してもONできない。
ここから、ベース電圧 > コレクタ電圧 になり ベース→コレクタ方向に電流が流れる(トランジスタがPNダイオードとして動作してしまう)事が原因と推定しました。
しかし、トランジシタVf特性上 ベース電圧は0.7V以上である必要がある。悩んだ結果、ベース電圧を抵抗分圧により コレクタ電圧と同程度(1.0V)にする事で無事にON/OFF出来る様になりました。

f:id:motokiinfinity8:20181104052659j:plain

ソフトウェア制作

ソフトウェアについては、ざっと以下の図の思想で作成しています。
f:id:motokiinfinity8:20181104043251j:plain

① コントローラ部とモビリティ部を無線で接続 (どちらかをAP設定にする)
② コントローラ部で得られた操作命令(「前」とか「右」とか)をUDP通信でモビリティに通知。この時、独自で通信コマンドルール(プロトコル)を決めておく
③ ②に応じて、制御モータ量を調整


②のコマンドルールを合わせておけば、モビリティ側は変更する事なく好きなコントローラをどんどん開発&入れ替えする事が出来る、という訳ですね♪
Nintendo LABOのバイクToy-Conによるモビリティ操作も、実は以前に作ったものからコマンドルールのみ改良する作業のみ(1時間程度)で開発できたので、さっと作るには便利な考え方です!

コマンドルール等ソフト設計の詳細はまた別記事に置きたいと思います。
(現状のコードがあまりに突貫すぎて、一部上記思想からずれているので、今後に向けて少しメンテナンスしたいと思います)

まとめと今後

今回息子向けにモビリティをひとまず作ってみましたが、残念ながら搭乗しながらモビリティを動かすとおびえて泣き出してしまうので、幣息子に向けてという観点では、まだまだ改良が必要という事が分かりました。

・安定して座席に座れないので座位固定方法が必要
 →専用シート&ベルトを作る予定)
・コントローラも筐体固定が必要
・動き出しのスピードが速いので、ゆっくり動き出す制御を追加
 → 残念ながらベース機体の回路では不可なので、モータドライバから作り替えが必要そう


ただ、今回の取り組みで、
電動車椅子を購入しなくても簡単に当人に応じたカスタマイズ電動カートを改造作成できるという事が分かりましたので、これから色々と応用可能性が期待できそうです!


引き続き、改良していきたいと思います!