今回はESP32-S3-BOX-Liteを動かしてみます。
M5Stackに似ていますが、Espressif(エスプレッシフ)のマイコンボードです。M5Stackよりひとまわり大きいですね。スペックはこちら。ESP32-S3搭載で、Flash 16MB、SRAM 512KB、PSRAM 8MB、音声認識機能搭載(英語・中国語)でスマート家電のコントロールに使える高性能なマイコンです。LCDは24インチ320×240でコントローラーはST7789V、タッチパネルはありません。同社のESP32-S3-BOXの廉価版ですかね。
Type-CのUSBケーブルでPCとつなぐとデモプログラムが起動します。このデモは設定すればスマホと連携してスマート家電をコントロールできるようですが、初期状態では音楽を演奏させるくらいしかできません。でも音声認識機能が有効になっているので「Hi ESP」と話しかけて「Sing a song」とかの音声コマンドで音楽を再生・停止できます。付属のフルカラーLDEをつないでおくと「Turn Red」とか「Turn Green」でLEDを赤や青や緑に点灯したり消したりすることも出来ます。
これらの高度な機能を使用するプログラムを作るにはESP-IDFを使うようですが、まずは手軽なArduino IDEを開発に利用できるかどうか試してみます。
でもArduino IDEでプログラムを書き込んでしまう前に、工場出荷状態にもどす方法を確認しておきましょう。調べてみるとやり方は何通りかありましたが、一番簡単なのはブラウザ経由で書き込む方法でした。
まず、ESP32-S3-BOX-LiteとPCをつないだらGoogle Chrome(ブラウザ限定)でこのサイトに接続します。
上部にある"Connect"ボタンを押すとダイアログが表示されるので、ESP32-S3-BOX-Liteがつながっているシリアルボートを選択します。
"Select Application"で"ESP-BOX-Lite_Demo_EN_V0_5_0"を選んだら、最後に"Flash"ボタンを押して書き込みます。簡単ですね。
それでは早速Arduino IDEで開発テストをしてみましょう。
ESP32-S3-BOX-LiteをPCにつなぐと、なぜかArduino IDEのシリアルポートに(ESP32 CAM LCD)と表示されていました。この表示は時々別の名前になったりします。でもボード選択を"ESP32-S3-Box"にしないと動作するプログラムは作れません。
ボードの設定項目は少なくPSRAMの設定もできません。ボードを"ESP32S3 Dev Module"にすればPSRAMなどの細かい設定ができ、動作するプログラムも作れますが、そのままではI2Cが使えなかったりということもあるので"ESP32-S3-BOX"を選ぶのがよさそうです。
このボード設定で色々試したところ、グラフィックはLovyanGFXが使えますし、Wi-FiやI2CやSPIが使用できるのは確認できました。
これならばArduino IDEでの利用もありでしょう。そこで以前にESP32-WROOM-32EやM5Core2に移植した「倉庫番」をESP32-S3-BOX-Liteにも移植してみました。
スケッチはこちら。
NunchuckCalibration.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
S3BOXSokoban.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
操作にはヌンチャクコントローラーを使います。キャリブレーションについては以前の投稿を参照してください。I2Cの端子はSCLがG40、SDAがG41で電源はすぐ隣の端子のGND、3Vを利用しました。(ラベルの貼りがきたないよぉ)
ところで以前移植した「倉庫番」なのですが、6面と10面が解けません。絶対に解けない面のか分かりませんがゲームとして楽しめないのは嫌なので、この2つの面のデータを差し替えました。以前のESP32-WROOM-32EやM5Core2でも差し替えたいときは上記のスケッチ内のMap.hをそれぞれのスケッチのファイルと置き換えてください。変更したデータの出典はゲームボーイの倉庫番です。これで1面から10面まで一気に解けるはずです。
「倉庫番」がすんなり動いたのでこちらの「パックマン」も移植してみました。
スケッチはこちら。
S3BOXPacman.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
操作はヌンチャクコントローラー、キャリブレーション値は上記のスケッチで調べて書き換えてください。
動かしてみると早すぎてゲームになりません。19行目の#define GAME_WAITをコメントアウトしてコンパイルするとウェイトが入るようになっています。ウェイト値は好みの数値に変えてください。
ついでにESP32-WROOM-32EやM5Core2にも移植しました。
ESP32Pacman.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
Core2Pacman.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
どちらも操作はヌンチャクコントローラーです。これらも速度が速すぎるので必要なら19行目の#define GAME_WAITでお好みのウェイトをつけてください。
とりあえずArduino IDEでSP32-S3-BOX-Liteを扱えることは確認できました。でも、より細かな設定を行う場合はESP-IDFが必要です。次回はESP-IDF環境を構築しようと思います。ただし、WindowsではなくUbuntu環境で行うつもりです。理由はLinux環境の方が導入が簡単だからです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます