ESPboyとは
ESPboyはESP8266をコアとする携帯ゲーム機です。
オープンソースハードウェアとして開発が進められており、回路図を参照することで誰でも同じ仕様のESPboyを作ることが出来ます。
また完成済みの製品も販売されています。 (後述しますが、これらの製品は日本で利用するには問題があります)
こちらは初代バージョンで$75です。 www.tindie.com
こちらは改良版で$95です。筐体が違うだけで中の回路は論理的に等価です。 www.tindie.com
ESPboyで遊べるゲームは、いくつかに分類することが出来ます
まずはインディーズ携帯ゲーム機であるArduboy、Pokitto、Gamebuino METAなどのゲームです。 あまり耳なじみがないかもしれませんが、これらは最近この界隈では有名な(?)携帯ゲーム機です。
これらのゲームはバイナリ互換というわけではなく、ESPboy用に移植された各ゲーム機のSDKがあるので、それを使って再コンパイルしたものが遊べます。ゲームによってはハードウェア固有の機能を活用しているものもあり、そういったゲームはそのまま移植することが出来ない点に注意が必要です。
もう一つは、レトロゲーム機、パソコン用のゲームです
ZX spectrum 48k, GameBoy, Chip8/Schipのエミュレータが動作し、それらのプラットフォームで動くゲームを遊ぶことが出来ます。
最後が、ESPboy専用に作られたゲームです。
まだ数は少ないですがESPboyの性能をフルに活用したゲームを遊ぶことが出来ます。 もちろんゲーム開発用のSDKもオープンソースなので、ゲームを自作することもできます。
後述するWeb App Storeの画面からもいくつかのゲームのスクリーンショットを見ることが出来ます。
なぜ自作したのか?
まぁ、そこに回路図があったからだ!というのも大きいのですが、一番の理由は「販売されているESPboyを日本で使うことが出来ない」からです。
どういうことかというと、販売されているESPboyに搭載されているESP8266のモジュールに技適がついていないのです。
もちろん特例申請を使ったりすることで、一時的に日本で使うことはできそうですが、そういったものを人に勧めることも難しく、いまいち購入する気にはなりませんでした。
しかしESP8266を使ったモジュールの中には技適のついた、日本でも利用できる「ESP-WROOM-02」というモジュールが存在します。ESP8266というコアのICは同じなので、うまく設計すれば、技適ありのESPboyが作れるのでは? と思いついたのが自作を始めたきっかけです。
回路図を作る
まぁこういう時はブレッドボードから、作るのが鉄則なのですが、最近は基板づくりも安くできるようになっているので、いきなり基板を発注してみることにしました。
まずは論理回路図を設計します。
と言ってもESPboyはオープンソースハードウェアなので、本家の設計を参考にすることが出来ます。
大まかな構成図は公式ページの下の方に掲載されています。
さらに詳しい回路図はこちらのページにあります。
ESPboy_v4.3 - EasyEDA open source hardware lab
この回路図にはLOLIN-ESP8266というモジュールが存在しており、今回はこのモジュールが使えないのでこの中身も知りたいところです。
その回路図はここで見つけました。 LOLIN D1 mini — WEMOS documentation
このモジュールはESP8266を搭載し、USB端子からシリアル接続でArduinoとして書き込みができるというものです。
LOLIN-ESP8266と同等の機能を持ったESP-WROOM-02を搭載したモジュールとしては ESPr® Developer(ESP-WROOM-02開発ボード) - スイッチサイエンス がよさそうですが、今回は回路図もあるので、このモジュールの部分も自作基板に含めることにしました。
こうして出来上がったのがこの回路図です。
(元のESPboyのライセンスに従って CERN Open Hardware License とします)
(このライセンスは本当は、さらに細かい区分があるようなので、ESPboyではどれに該当するのか聞いています・・)
USBシリアル変換はCH340G、自動リセット回路などに2回路入りトランジスタUMH3Nを利用しています。
LiPoバッテリーの充電に関しては、自分で実装せずに出来合いのモジュールを使うことにします。
部品の購入
大半の部品は秋月電子で購入しました。コアのモジュールであるESP8266、DACであるMCP4725や、I/OエキスパンダのMCP23017/SP、フルカラーLEDのWS2812Bなども秋月電子で扱っていました。
USB Micro端子、AP1117-3.3、UMH3N、TFT液晶、ボリューム、タクトスイッチ、スピーカー、LiPoバッテリー充電モジュールなどは、日本でも購入できるかもしれませんが、AliExpressで購入しました。
液晶モジュールはESPboyと同じものを利用しないと、初期化コードなどが異なりバイナリ互換がなくなってしまうので注意が必要です。
配線図の作成
ちょちょいのちょいで・・・とはいかず、色々と試行錯誤しました。 ESP-WROOM-02のアンテナ部分には配線を通していけないようなので、Keep Outゾーンとしました。
基板の発注
今回の基板はALLPCBに発注しました。というか発注したのは去年の12月ごろです。 そしてあれから半年程度、この基板は積まれていたのです・・・ いや、子育てとかいろいろ忙しくてですね・・(言い訳)
送料込みでこんなお値段。
部品の実装
この基板は表面実装部品ばかりで構成したので、実装も少し苦労しました。
ピッチの狭いICであるUMH3NやMCP3725も6ピンのパッケージで真ん中、左右の順に足を固定すれば手はんだでも実装できました。
一番気を遣ったのはMicro USB端子です、これはホットエアーガンを使って実装しました。(まぁHACHIBARで何度も実装したのでコツはなんとなくつかんでいました)
書き込みテスト
ESPboyはソフトウェアのデプロイ周りも充実しています。
まずはWebブラウザから書き込みできる Web App Storeというものがあります。ブラウザからゲームを選んで、書き込みボタンを押すだけでESPboyにゲームをインストールできます。
もう一つはWiFi経由でアプリをダウンロードできるApp Storeです。これはゲーム機同時にBボタンを押しっぱなしにすることで起動します。初期設定はWiFiのSSIDやパスワードの入力が必要ですが、一度設定すると記憶されます。 一度設定するとインターネット上のAppStoreサーバからゲームの一覧を取得でき、そこからゲームをインストールすることが出来ます。まるでiPhoneやAndroidのようです!(大げさ)
ケースの作成
ここまでで、一応動くゲーム機にはなりましたが、基板がむき出しで遊びづらいです。
ということで3Dプリンタでケースを作ります。
今回はFreeCADで設計しました。
(ディスプレイ固定具用のデータがあったのですが、保存せずに終了して失われてしまいました・・無念)
我が家には3Dプリンタがあるので、精度はともかく、ササっとプロトタイピングが出来て良いです。
ということでひとまず、そこそこ遊べるESPboy端末が出来ました。
まとめ
ということで、日本でも利用できるESPboyを作ることが出来ました。
基板製造、3Dプリント、AliExpressでの部品発注、ESP8266でのプログラミングなど、ここまでで得た知識を組み合わせることで、一つの製品を設計、開発できました。
オープンソースハードウェアを参考に、少し自分用に手を加えて自分のオリジナルのガジェットを作るというのは、非常に面白いので、腕の覚えのある方はぜひ挑戦してみてください。
また、ここで作った基板が数枚余っていますので、もしほしい人がいたら連絡ください。 (可能なら、ボツ基板交換的なノリで、何か自作の面白い基板と交換してもらえると嬉しいです。 私が提供できるボツ基板はこちらにまとめています。)