以前よりArduinoをベースにしたゲーム機が発売されていました。このArduboyです。小さくてかっこいいですね。
でも、日本国内では販売価格が6千円前後なので、中身がArduinoだと思うと購入するかどうかちょっと悩みます。
Arduboyは回路図が公開されているので、互換機を制作したよという記事はネットに幾つかあがっていました。見てみると割と簡単に出来るようなことが書いてあります。それなら自分でも作れるかもと思い、互換機を製作してみることにしました。
参考にしたのはこことここのサイトです。こんな立派な互換機はすぐに作れそうもないので、まずはブレッドボードで試作してみました。
新たに用意したのはHiLetgoのArduino Pro Micro互換機と、同じくHiLetgoのOLED LCDディスプレイSSD1306 128×64 SPIの2つでそれぞれAmazonで¥1,130、¥750でした。その他に圧電ブザー(古いモデムボードから引き剥がしたもの)、小型のゲームパッド(ハードオフで¥100で購入したものを改造)、手持ちのモバイルバッテリーだけでArduboyが完成しました。
3色LEDやリセットボタンは省略していますが、確かに簡単に制作することが出来ました。中古部品も利用したので、この段階の制作費は実機の半額以下です。トラブル発生のリスクはありますが、Arduinoなどの部品を通販で直接中国から購入すればもっと安い費用で製作できますね。
動作確認もとれたので、本格的にArduboyの製作に取り掛かりましょう。
筐体は純正品のような小さなものはとても作れないので、部品の配置スペースやコントロールボタンの押しやすさも考えて7.2x9.5(cm)のユニバーサル基板をベースにしました。この基盤に部品をはんだ付けしていきます。配線は上記のサイトを参考にして行いました。
ブレッドボードで簡単に実現できたので、実機を作るのも簡単だろうと思って作業を開始したのですが、実際に配線していくうちに色々な問題が発生しました。
- 3色LEDのうちグリーンのLEDが点灯しない。
上記サイトの互換機では省略されていますが、製品に搭載されている3色LEDの代用に赤・緑・青の3つのLED(壊れたマウスなどから剥ぎ取ったジャンク品)を配線してみました。しかし、緑のLEDだけ点灯しないのです。ArduboyはLeonardo互換のようですが、今回使用したPro MicroはAVRは同じでも引き出されていないピンがあります。そのため緑のLEDで使用するピンは純正品と異なるピンにつないで、Arduboyのライブラリ書き換えで対応するのですがうまく動作しませんでした。もちろん緑のLEDが正常に点灯するのは確認済みです。
LEDの明るさの制御にPWMが必要なので替わりに使えるピンは殆どないのですが、使えるピンで試してみてもだめでした。
仕方ないのでLEDは省略することにしました。 - OLEDの画面が乱れる
ブレッドボードではまったく問題なかったのですが、基盤に配線していくうちにOLEDディスプレイの表示が乱れるようになってしまいました。症状は様々で、なにか同期できていないように画面が流れたり、表示が途中で静止してしまったり、完全に映らなくなったりしました。配線を確認したり、はんだ付けし直したりしているうちにディスプレイのCS端子に問題があるように思えてきました。この端子をはんだ付けし直すと表示が正常になったからです。しかし、電源を切ってしばらくしてから再度確認をすると、また表示がおかしくなるのです。CSの接続先を替えライブラリ書き換えで確認しても症状は同じでした。
ディスプレイかArduinoを壊してしまったのかと思い絶望的な気持ちのまま、問題点の切り分け作業を行っているうちにArduboyの古いライブラリを使ったときは正常に動作し、新しいArduboy2のライブラリで異常動作することが分かってきました。そこでライブラリで対応できないかどうか調べてみたのですが、CSピンの設定箇所はすでに確認済みの所だけで他には見当たらないのです。困り果てて最後にSPI通信の規格について調べてみたところ、SPIの接続デバイスが一つのときはCSピンによる制御はそれほど重要ではないという情報が見つかりました。そこでダメもとでCSピンをGNDに直結したみたところ表示の乱れが一切なくなったのです。手持ちのArduboyのスケッチ全てで正常に表示されるのを確認しました。
これが正解かどうかは分かりませんが、一応解決としました。 - A・Bボタンが逆
参考にした上記サイトの配線図では、Arduboy製品とボタン配置が逆になっているようです。ケームによっては遊びにくくなるので、A・Bボタンの配線を入れ替えました。
そんな訳でトラブルはありましたが、なんとかArduboyを完成させることが出来ました。
ボタンはuxcellのタクトスイッチ 12x12x8(mm) 10個入りでAmazonで¥388でした。それからコネクタがUSB Mini-Bになっている5V ACアダプターを持っていたので、外部電源として使えるようにMini-Bコネクタをつけました。この端子は昔USBの変換コネクタを作ったときの残り物です。Pro Microの方のUSBコネクタは頻繁に抜き差しすることになるので、保護のためグルーガン(100円ショップで購入)の樹脂で覆いました。
背面は100円ショップで購入したPPシートを基盤サイズにカットした板で、ここに基盤の足(?)をグルーガンで固定しました。
スイッチを押したときに基盤が歪まないように、これも100円ショップで購入した耐震マットを2枚敷いてあります。偶然ですが耐震マットに適度な重さがあるので、Arduinoを手に持ったときに重心が中心より下になり安定感がでたような気がします。
あと、アクションゲームを遊ぶときにタクトスイッチでは辛いものがあるので、ブレッドボードの試作機で使ったゲームパッドもつなげられるようにしました。
Arduboyは世界中に山ほどあるゲームが遊べるし、ゲーム以外のアプリケーションもたくさんあるので、色々楽しめるガジェットですね。当たり前ですが、普通にArduinoとして使えるので面白いことが出来そうです。後でなにか楽しい利用法を考えてみましょう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます