友人宅のWiiリモコンをWebから遠隔操作する2(ハードウェア篇)
リモートリモコン(WiiリモコンのボタンをWeb経由で操作する装置)のハードウェア部分の作り方を解説します。
この記事は前回の続きなので、まだリモートリモコンのことを知らない人は、まずそちらへ。
ただし、実際に作る場合は、すべて自己責任でお願いします。
✽ ✽ ✽
準備するもの
今回使ったものは以下のとおりです。
・Raspberry Pi(1台)
・NPNトランジスタ(8個)
・カーボン抵抗10KΩ(16本)
・ユニバーサル基板 (1枚)
・ジャンプワイヤ オス-メス(11本)
・電子ワイヤ(4.8m)
・LANケーブル(1本)
・中古のWiiリモコン(1台)
・Wiiリモコン用の単三電池(2本)
・その他工具など(Y字ドライバ 2.3mm、ニッパ、ペンチ、はんだごて、はんだ、ブレッドボード、ジャンプワイヤ オス-オス)
一部の部品にはリンクをつけておきましたが、必ずしも同じ型番のものを用意する必要はないし、そもそも最適な型番が採用されている保証はありません。
厄介なのがY字ドライバ。
かなり珍しいドライバですが、これがないとWiiリモコンを分解できません。ホームセンターに探しにいきましたが、32点組ドライバセットのなかにたった1本あっただけでした。人間工学では、こういう改造防止を意図したデザインのことをタンパープルーフ (tamper-proof) とよびます。つまり、WiiリモコンのY字ネジは、「TAMPERするな」という任天堂の意思のあらわれである(ともいえますが、筆者は無視しました)。
ハードウェアのつくりかた
ハードウェアは、以下の3つの部分からなります。
・ラズパイ部分
・Wiiリモコン部分
・回路基板部分
以下の手順にしたがって、それぞれの部分を作ります。
①ラズパイ部分
ラズパイを買ってきたばかりでインストールがまだの人は、下のような記事を見ながらインストールします。
ラズパイの基本的な使い方については、「ラズパイ Lチカ」などで検索すると、いろいろ資料が出てくるのでここでは省略します。Lチカとは、電子工作におけるHello, worldなので、とりあえずLチカでピンの使い方を学んでおいてください。
②Wiiリモコン部分
下のような記事を参考にしてWiiリモコンをバラバラにします。
すると、下のような基板が現れます(筆者調べ)。
ボタンの部分は、金属板が対になっています。この金属板がお互いに接触すると、ボタンが押されたものとして処理される仕組みのようです。また、+ボタン、Homeボタン、−ボタンなどは、金属板ではなくプチプチしたボタンが設置されています。
※実際にリモートリモコンでの動作を確認したのは、十字キー、A、B、+、−のボタンだけなので、ほかのところの電極は間違っているかもしれません。また、ものによって仕様が異なっている可能性もあります。
次に、30cmほどの長さに切った電子ワイヤを2本作成し、それぞれボタンの金属板にはんだ付けします。
Wiiリモコンには、電源ボタンとHomeボタン以外に10種類のボタンがあるので、そのすべて(または必要な分だけ)に導線をはんだ付けします。1つのボタンあたり導線が2本いるので、10種類のボタンをはんだ付けする場合は20本の導線が必要です。
また、プチプチしたボタンは、四隅についた小さな金属同士を接触させることにより、金属板を接触させるのと同じ効果が得られるので、その部分をはんだ付けします。
はんだ付けが終わったら、Wiiリモコンのカバーを閉じてネジを締めます。
ここまでで、Wiiリモコン部分は完成です。
今は安全のためにWiiリモコンの電池は外しておいてください。
③回路基板部分
回路基板部分の目玉は、ボタンのオンオフ機能です。
ボタンのオンオフ機能を作るためには、NPNトランジスタという部品を使います。NPNトランジスタには足が3本生えています。3本の足には、それぞれエミッタ、コレクタ、ベースという名前がついています。
NPNトランジスタには、「ベース→トランジスタ本体→エミッタに電気が流れている間のみ、コレクタ→トランジスタ本体→エミッタが導通する」という性質があります(下図)。
この性質をWiiリモコンのボタンのオンオフ機能に利用します。つまり、コレクタとエミッタをWiiリモコンの金属板につなぎ、ベースとエミッタをラズパイにつなぐことで、ラズパイから金属板の接触をコントロールします。
一旦、下図のような回路を作ります(実際にはユニバーサル基板で作りましたが、ここでは試行錯誤のしやすさのために、ブレッドボードで説明することにします)。下図のトランジスタの足は左から順にエミッタ、コレクタ、ベースとなっています。
上図の回路は、ボタン1つを操作するための回路です。ラズパイの右下のピンから電気を流せば、ベース→トランジスタ本体→エミッタに電気が流れることになるので、トランジスタの性質により、コレクタ→トランジスタ本体→エミッタが導通します。つまり、Wiiリモコンの金属板(+)と金属板(−)とが電気的に接触したことになります。
次に、部品を追加して下図のような回路を作ります。
上図はボタン2つを操作するための回路です。
3つ以上のボタンに対応する場合も同じような感じで作っていきます。
ボタンとラズパイのピンの対応については以下のとおりにしました。ソースコード内でも、このように定義してあります。
Aボタン:GPIO 21(ピン番号40)
Bボタン:GPIO 20(ピン番号38)
↑ボタン:GPIO 16(ピン番号36)
→ボタン:GPIO 12(ピン番号32)
↓ボタン:GPIO 26(ピン番号37)
←ボタン:GPIO 19(ピン番号35)
+ボタン:GPIO 13(ピン番号33)
−ボタン: GPIO 6(ピン番号31)
1ボタン:使用しなかった
2ボタン:使用しなかった
電源ボタン:使用しなかった
Homeボタン:使用しなかった
ここまでで、回路基板部分は完成です。
次回予告
ハードウェアはこれで完成なので、次回はソフトウェア篇です。
この記事が気に入ったらサポートをしてみませんか?