はじめに
2022年12月23日にATOMS3が(日本で)発売になり、入手することができたので、Moddable SDKのターゲットデバイスに追加する過程をメモに残します。(2022年12月27日に入手)
以前、M5StickC Plusを追加したことがあったので、おおよその見当はついていましたが、いくつかハマりどころがありました。
開発環境の構築
こちらの記事を参考に、サンプルコードが動作することを確認しました。
M5AtomS3ではなく、M5Unifiedで動作を確認しました。
液晶ディスプレイ(液晶ドライバ)
ATOMS3のMCUはESP32-S3で、扱うのは初めてでしたが、Moddable SDKのターゲットデバイスにESP32-S3-DevKitC、Adafruit QT Py ESP32-S3、Adafruit ESP32-S3 TFT Featherが登録されていましたので、参考にしました。
液晶ディスプレイはGC9107で、こちらも扱うのは初めてでしたが、事前にデータシートにアクセスできたのと、ST7789互換という情報をいただいたので、あまり心配していませんでしたが、結果的に動かすまで一苦労ありました。
仕様調査
ST7789のinitコードでは動作しなかったので、サンプルコードが動作したM5Unifiedのinitコードを確認しました。
実際にはM5GFXの中でinitコードを確認することができます。
そのままのinitコードでは、最初、動かなかったので、同じ液晶ディスプレイを使用しているLILYGO T-QTのinitコードを確認しました。
initコードは似ていますが、部分的に異なっています。また、データシートに記載されていないコマンドコードもあり、解釈が難航しました。(コマンドコードの意味が判明していないものが残りました)
結果的にInter register enable 1 (FEh)、Inter register enable 2 (EFh)のコマンドコードを送るタイミングを調整(遅延の時間を変更)して、動くようになりました。
表示位置のズレは(行方向の)オフセット値を調整し、回転操作(ローテーション)も問題ないことを確認しました。
表示色(色味)のズレ
動作テストも終盤になり、(Node-RED MCU Dashboardの)表示色がおかしいことに気づきました。
(M5Stack FIREは色味が異なっていますが、正面から見ると正常で、見る角度によって色味が変わっています。)
色指定の順番(RGB、BGR)と色の反転(DISPLAY Inversion)を疑い、データシートを参考にして、initコードを変更したところ、問題を解消できました。
- M5GFXのinitコード → 色指定をRGB→BGR、DISPLAY InversionをON→OFFへ変更
- LILYGO T-QTのinitコード → DISPLAY InversionをON→OFFへ変更
GC9107の設定を追加し、パラメータシート(比較表)を更新しました。
6軸IMU (MPU6886)
最初、M5Atom Matrixと同じ設定をしたところ、Y軸の向きが反転していると指摘をいただきました。
M5StickC Plusで液晶ディスプレイ表示を見ながら動作を確認しました。
setup-target.jsの中でX軸、Y軸、Z軸の向きと値を入れ替えて問題を解消できました。
ついでに、ボタンが1つしかないので、ボタンを押す度にAccelとGyroの表示を切り替えるサンプルコードを作成しました。
さいごに
一通りテストで問題が出なくなったので、プルリク(PR)を送りました!
- Moddable SDKのサンプルコード(piu/balls、piu/images)
- Node-RED MCUフロー(コアノード、ネットワーク接続)、Sensorノード(I2Cでdefault(GroveポートにM5 ENV Ⅲ Unit)、internal(MPU6886))、rpi-gpioノード(ボタン)、Dashboardノード(ボタン、テキスト、ゲージ)