ESPBoyの作り方(1)
みなさんこんにちは
あと少しで10月になりますが、まだ涼しくなりませんね!
さて、今日のnoteでは、ESPBoyの作り方をみなさんと共有したいと思います。
ESPBoyの作り方をネットで調べるといろいろ出てきますが、今回私が制作している過程でまとめたものを共有します。
内容が少し多いので、二回に分けて皆さんにお届けしようと思います。
今回のnoteでは、ESPBoyプロジェクトが公開しているPCBで実装した内容となります。次回のnoteでは私のオリジナルPCBの内容を紹介します。
300円の値段設定していますが、最後まで読めます。
さて始めましょう!
ESPBoy
ESPBoyといえば、知っている人も多いかもしれません。
ESPboyはオープンソースハードウェアとして開発されています。製品版もあります。今回作ったのは、公開されているバージョンです。Free ESPboy1 DIY v4.3
より詳細な情報は下記の本家のウェブサイトをご参照ください。
上記のサイトにもリンクがありますが、今回作るFree ESPboy1 DIY v4.3 です。
上記のサイトでは、ESPBoyの説明、回路図、必要な部品など詳しく記載しています。
回路図はこちらです:
こちらの内容を参照すれば、基本は問題なく制作できるはずです。
ここでは、単体のESP8266ではなく、ESP8266をベースにしたWeMos D1 Mini(Lolin)を使っています。
WEMOS D1についてはこちらのメーカーのサイトにありますが、ところが、そこは最新のバージョンしかないようです。https://www.wemos.cc/en/latest/d1/d1_mini.html
今回使っているのは、すこし古いのバージョンのWeMos D1 Mini(Lolin)です。
ちなみに、ブレッドボード版もあります。
こちらです:
今回はPCB版のほうを作りました。
ESPBoy PCBを注文する
PCBを簡単に注文する手順をご説明します。
まず、oshwlabのサイト(https://oshwlab.com/ESPboy/espboy_v4-3)から、下記のように、「Open in Editor」をクリックします。
そうすると、EasyEDAを開くことができます。(ユーザ登録が必要な場合があります。)
EasyEDAが開いて、PCBのデザイン画面でPCBのデザインを確認できます。
気になるところは、ここで修正することも可能ですが、今回はそれを我慢して、そのままのデザインで発注したいと思います。
次は、一番上の「Fabrication(製造)」メニューをクリックして、「One-click Order PCB/SMT 」をクリックすします。
「Yes, Check DRC」をクリックします
次は、「One-click Order PCB/SMT」を選んで、次に進みます。
「OK」をクリックして、進みます。
そうすると、JLCPCBのウェブサイトに飛んで、Gerberファイルも自動的にアップロードされます。
普段はこの手順はいつも手動でやっていましたが、ちょっと感動です!
あとは、全部JLCPCBでPCBを注文すると同じ手順なので、ここで割愛します。
半田付け
配送の選択によりますが、一番安い配達プランでも大体一週間程度で届きます!
PCBデザインにうるさい人は、これを見ていろいろ言いたいことがあるかもしれませんが、ここで我慢してこのPCBを使って半田付けをします。
PCBを注文している間、ほかの必要な部品もLCSCやAliExpressから調達できましたので、すぐ半田付けができるようになっています。
半田付けの過程は割愛します。
出来上がったのはこちらです!
ボタンが注文し忘れて、別のボタンで代用しました!苦笑
UMH3Nのような小さい部品もあって、半田付けは苦労した箇所があります。
WeMos D1 Mini(Lolin)は写真のように、ピンヘッダーにさして使います。
この制作した後、音がとても小さくて、原因は指定した50Ωのスピーカーが手元になくて、下記のスピーカーを使っていたからです。
音を大きくするために、シンプルな5V駆動D級アンプをつけてみました。そうすると、音が大きくなって問題を解決しました。
皆さんの場合は、説明の通りに制作すればこの部分の変更は不要です。
プログラミングの部分
ESPBoyを遊ぶためには、「Little Game Engine」が必要です。
「Little Game Engine」はGitHubに公開しています。
これから、「Little Game Engine」を動作させるまでの手順を説明します。
GitHubのほうにも説明がありますので、合わせてご参照ください。
(「Little Game Engine」を頭文字をとってLGEと言います。)
環境
今回はArduino IDEを使います。
ArduinoIDEの最新版も試しましたが、うまく行かず、すこし古いバージョン1.8.19でうまく行きましたので、こちらをお勧めします。
まず、GitHubのページからLittle Game Engineのファームウェアをダウンロードします。
zipファイルので、解凍した後、そのフォルダをArduinoフォルダ(librariesフォルダが入っている場所)に移動させます。
ESP8266ボードパッケージインストール・確認
ESPboyは上述のようにWeMos D1 MiniはESP8266開発ボードなので、Arduino IDEでスケッチのコンパイルとボードへの書き込みするためにESP8266ボードパッケージが必要となります。
Arduino IDEの環境設定画面で、追加ボードマネジャーのURLにesp8266ボード情報(https://arduino.esp8266.com/stable/package_esp8266com_index.json)を入れて、ボードを使えるようにしましょう。
ESPboy_little_game_engine.ino
次は、[ESPboy_little_game_engine]フォルダ内にある「ESPboy_little_game_engine.ino」を開きます。
このままだとまだ動かないので、必要なライブラリなどをインストールします。(ほかのプロジェクトですでにインストールされたライブラリはスキップしてもよい)
Adafruit_MCP4725
Arduino IDEのメニューバーから、「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理」へと進んで、下記の画面でAdafruit_MCP4725を入れてライブラリを検索します。
見つけたライブラリをインストールします。
TFT_eSPI
同様にTFT_eSPIもインストールします。
Adafruit-MCP23017-Arduino-Library
最新版が動かない場合は、バージョン1.1.0を入れる必要があります。
ESP_EEPROM
coos
最後に「ESPboy_little_game_engine」フォルダ内に[libraries.7z]という圧縮ファイルがあるのでこれを解凍します。
解凍して出来たフォルダ内に[coos]というライブラリが入っているのでこれをArduinoの「libraries」フォルダに移動します。
TFTディスプレイのドライバの関連設定
上の手順でTFT‗eSPIのライブラリをインストールして用意しましたが、それを使えるためには、ESPBoyが使うディスプレーにあわせていくつかの設定を直す必要があります。
User_Setup.h
まず、Arduinoの「libraries/TFT_eSPI」のフォルダにある「User_Setup.h」ファイルを開いて編集します。
47行のコメントアウトを外して、ST7735ディスプレードライブを使うよと宣言する。ESPBoyはST7735のディスプレードライバを使って制御するタイプの液晶ディスプレーを使っているからです。
次は、ディスプレーの縦横のピクセル数を設定します。85、89行面目コメントアウトを外します。
次は、104行コメントアウトを外します。
次は、上のように、169-172行まで、ディスプレーのピンを設定します。-1はそれを使わないことを意味しています。
最後、357行のSPI動作周波数を下記のようになることを確認して、ファイルを保存します!
当然ですが、保存しないと有効にならないので、ご注意ください。
これで一通り準備ができました。
次は、スケッチを実際にESPBoyに書き込みます。
スケッチの書き込み
まずArduino IDEのメニューバーから、「ツール」>「ボード」に進み、「ESP8266 Boards」を選びます。
続いて、「LOLIN(WEMOS D1 R2 & mini)」を選びます。
書き込みに関する設定は下記の通りにしておいてください。
ESPBoyをUSBケーブルでパソコンに差し込んで、シリアルポートを選んで、書き込みを実行します。
問題なく書き込めたら、ゲームが一つ入っています!
早速遊ぶことができます!
おめでとうございます!
しかし、ご覧の通り、私の作りがとても雑だということもあって、とてもプレーしにくい仕上がりになっています!
笑
なので、次回は独自のPCBを設計して、すべてをきれいにまとめるバージョンをご紹介します!
ちょっとチラ見せします!
次回はこちらの詳細を書きます!
ではまた次のnoteで会いましょう!
ここから先は
¥ 300
Amazonギフトカード5,000円分が当たる
株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world