記事内に広告が含まれています

自作ESPBoyの動作確認からゲームをインストールして遊ぶところまでを紹介します

電子工作

はじめに

前回のブログで紹介した通り、自作ESPBoy(ミャクミャクBoy)の基板がPCBWayより到着しましたので挿入部品の半田付けを実施して、動作確認を行ってみました。結果としては動作したのですが、回路的に1か所ミスっておりましたので合わせてご報告します。

基板単体で最低限の確認をする

設計検証を進める上での基本的な考えとして、何らかの原因により回路が想定の動作をしなかった場合の検討用に部品実装をしていない生基板を最低一枚準備しておくことをお勧めします。

部品実装後は、異なる配線間のショートチェックができないことが多々あり不具合原因の特定が困難になるからです。

今回、5枚の基板作成と5枚全数の部品実装をPCBWayに依頼しており、生基板(部品実装をしていない基板単品)を残しておくことをすっかり忘れていたのですが、運良く?部品未実装の生基板も一枚送られてきた(PCBWayさんありがとうございました!)ので、まずは、その基板で電源-GND間のショートチェックを行い問題が無いことを確認した上で、部品実装済の基板で電圧を加えての動作確認にとりかかりました。

手半田付け部品の実装前に動作確認をする

PCBWayへの部品実装依頼でほとんどの部品は実装された状態ですので最も重要であるマイコンの動作確認は電圧を加えさえすれば行うことが出来ることから、挿入部品の手はんだ付け実装は後回しにして回路の動作確認を行う事にしました。

電圧を印加するにあたり、ミャクミャクBoyはリチウムイオンバッテリーとリチウムイオンバッテリー充電モジュールを使用するのですが、私はいきなりLiPo電池を動作未検証回路に接続する度胸がないので、まずは充電モジュールを実装せずに、充電モジュールの入力端子接続用スルーホールと出力端子接続用スルーホールを短絡配線させることで、USBコネクタから供給される5V電圧をそのままレギュレータICに加え、レギュレータICの出力3.3VがメインマイコンのWiFiモジュール(ESP-12F)に正しく加わっていることをデジボルで確認しました。

電圧を印加しても、けむりや嫌な臭いもしなかったことに気を良くして、早速ですが、PCからデータを送りESP-12Fが正常に動作するのかArduinoのLチカで試すことにしました。

Arduino スケッチが書き込めない

何はともあれ、Arduino IDEによるESP8266の使用は今回が初めてだったで、ファイルー>環境設定へと進みボードマネージャの追加から始めます。

ボードマネージャをインストール後の設定は下図の通りです。

シリアルポートも(今回は)COM7として認識できており問題ありません。
Lチカスケッチはごく基本的なもので、ESP-12Fモジュールに実装されているLEDが1秒毎に点滅するものになりArduinoIDEの設定は問題なし。

いざ、コンパイル&書き込み開始!と、いきんでみたところ見事に書き込み失敗でした。
出力エリアに表示されているエラーメッセージから状況を読み取ると、書き込みは始まったのですが、何らかの要因で書き込みが継続できずにタイムアウトになってしまったようです。

とりあえず書き込みは始まっているが自動書き込みのリセットタイミングが良くないのかな?と何の脈絡もなくリセットボタンとBOOTボタンの手動操作を行ってみましたがやはり変化なく書き込みはできませんでした。そこで基本に立ち返りESP-12Fが正しく書き込み状態になっているのかを電気的に確認することにしました。

ESP-12Fに使用されているESP8266マイコンは、通常動作時とプログラム書き込み時では、異なったGPIO端子電圧を設定する必要がありますが、プログラム書き込み中に所定の電圧レベルになっているのかをデジボルで確認してみたところ、プログラムダウンロード時はLowになっている必要があるGPIO0端子の電圧がHigh電圧になってることがわかりました。

modeCH_PD
(EN)
RSTGPIO15GPIO0GPIO2TXD0
Download
mode
highhighlowlowhighhigh
Running
mode
highhighlowhighhighhigh
Description of the ESP series module boot mode
MinTypMaxUnit
Supply voltage2.73.33.6V
I/O, VIL / VIH-0.3 / 0.75VIO0.25VIO / 3.6V
IO端子のlowレベル、highレベルの閾値電圧

Arduino IDEでシリアルポート正しく認識していたのでUSB-UART変換ICのCH340C周辺回路は問題無いはずだが・・・なぜ?

さらにGPIO0電圧を作り出すの元となるDTR電圧が、本来ならlowレベルの電圧であるところが約1.9Vとなっており、そのためにGPIO0の端子がLowレベルに落ちなかったと結論づけました。

もう一度じっくりと、自作した回路図とWemos D1 mini の回路図の配線を比較してみると、なんと自作回路ではCH340Cの4番端子(V3)を未結線処理していることがわかりました。


回路図は一晩寝かせましょう(目視で配線チェックをしよう。データシートの参照回路図とも照らし合わせよう)

自作回路図のCH340C周辺
Wemos D1 min回路図ののCH340周辺

なお、CH340Cの4番端子と16番端子を空中配線で接続する修正を施すことで、プログラム書き込み時のGPIO0の電圧は正常にLowレベルとなり問題無くLチカの動作確認ができました。

気になって残りの4台の基板もプログラム書き込みを試してみたところ、配線修正なしで書き込みができるものが3台、書き込めないものが1台と個体差があるようです。1台目の動作検証時に症状が現れず、2台目以降で書き込み不可の症状が発生した場合は、同じ回路なのに動くものと動かないという不可解な沼にはまり、原因究明に時間を要していた可能性が大きいです。1台目の検証時に症状が現れたことは不幸中の幸いだったのかもしれません。

仕上げに手半田付け部品を実装する

すべての部品実装後の基板は次の写真のようになります。なお、今回はゲーム専用機として組み立てたので、拡張用の20ピンソケットは実装していません。

手半田付けした部品は、LCDモジュール、リチウムイオンバッテリー充電モジュールおよびLiPo電池、音量調整用のボリューム抵抗、小型スピーカーとなります。

液晶は少々高額部品ですので、自作回路に問題があった場合、半田付け後は取り外しが困難ですし、破壊したりすることのないように、まずは基板に半田付けせずに、スルーホールテスト用テストワイヤを利用してLCDと基板を接続し動作確認を行いました。


サクッと手半田付けし余分なリード線をカットしたままなので若干荒々しくお見苦しい点はご了承下さい。

TP4056リチウムイオンバッテリー充電モジュールの動作については、USBコネクタに電圧を印加することで、充電モジュールに実装されている赤色LEDが点灯し充電が開始され、数十分後には充電完了となり青色LEDが点灯しました。

今回使用しているLiPoバッテリーは115mAhの製品を使用しているため、TP4056充電モジュールに実装されている定電流制御用の抵抗を10kΩに交換して使用しました。(もう少し大きめの12kΩのほうが良いのかもしれません)

TP4056データシートに記載の情報より

なお、16Ωスピーカーからは結構な音量を出力することができ、ボリューム抵抗で音量調整ができることも確認しました。

おわりに

ハードウェア的には、裏面の部品がむき出しとなっておりこのままでは少々遊びにくいので、筐体の製作ができれば良いのかなと思っています。

ESPBoy本体にゲームをインストールして試す簡単な方法は、こちらのサイトにあるESPboy Flasherを使うことす。
ちなみに、ブレッドボードで動作確認した際に使用した”Dino”もESPboy Flasherを使用してインストールしました。

インストール手順としては、PCとUSBケーブルで接続した後は以下の3ステップです。
①画面右側の”ESPboy WebAppStore”からゲームを選択(クリック)
②左側の”ESPboy Flasher”のINSTALLをクリック
③PCとESPboyを接続しているシリアルポートを選択して”接続”をクリック
これだけでインストールが完了します。

私が何個かのダウンロードを試したところでは、うまく動作しないものもありましたが、そういうものかもしれませんね。
ほかのやり方もネットには情報がありますので、ご興味のある方はチェックしてみると良いです。

電子工作レベルでゲーム機の作成が楽しめるとは驚きですね。オープンソース、オープンハードウェアのありがたみを肌身で感じた次第です。

コメント

タイトルとURLをコピーしました