M5Stackから新しい製品、ATOMS3が登場しました。ESP32-S3、0.85インチ128×128のLCD搭載です。
ATOMS3 Dev Kit w/ 0.85-inch Screen
https://shop.m5stack.com/collections/m5-controllers/products/atoms3-dev-kit-w-0-85-inch-screen
ESP32-S3 は無印 ESP32 の後継SoC…といった感じでしょうか?
ESP32-C3 とは違い、RISC-V ではないので、ESP32 と同じように扱えそうです。
こちらのサイトの比較表がわかりやすいです。
Lang-ship : ESP32シリーズ(無印, S2, S3, C3, …)比較 2022年1月
https://lang-ship.com/blog/work/esp32-2022-01/
小型で高性能、しかも価格も安価ということで、大人気になることが予想されます。販売日・販売時刻の予告がありましたので、無くならないうちに確保しました!
ATOMS3 来たー! pic.twitter.com/3pjqVZPLzm
— Nochi (@shikarunochi) December 27, 2022
液晶部分がボタンになっているのですが、直接押すのはちょっと怖いですね。(すぐ慣れましたがw)
表示エリアサイズは ATOM Matrix よりちょっと小さめ。
液晶を押すのが大丈夫なのか少々不安ですw pic.twitter.com/m226TlHd5g— Nochi (@shikarunochi) December 27, 2022
その後、日本販売店のスイッチサイエンスも本家M5Stackサイトも、早々に間に売り切れになってしまいました。今後のM5Stack主力商品になると思いますので、待ってればどんどん入荷すると思います。
our store also sold out, and the lcd will arrive after chinese year. so….
— M5Stack (@M5Stack) December 27, 2022
LCD入手が中国の春節後になるために、次回は2月中旬になりそうとのこと…。
さっそくの Hello World.
M5Unified を使ってワールドさんに挨拶。 pic.twitter.com/Y1nZyIYpWU
— Nochi (@shikarunochi) December 27, 2022
M5Unified なら、ATOMS3 で日本語フォントもOK!#M5Stack pic.twitter.com/rruLCqZCOb
— Nochi (@shikarunochi) December 27, 2022
最初、公式ATOMS3ライブラリを使ってみたのですが、まだ動かない状態だったので(LCDのピン指定が違ってたりしてた)M5Unified を使いました。(その後、公式ライブラリもじわじわと修正されている様子です。)
VSCode + platformio でビルドしています。 ATOMS3 FactoryTest の platformio.ini を参考にしました。
ATOMS3 FactoryTest
https://github.com/m5stack/M5AtomS3/tree/main/examples/Basics/FactoryTest
ボードは、ATOMS3 はまだ用意されてなくて、esp32-s3-devkitc-1 を使うようですね。
せっかくの液晶なので、MZ-700エミュレータを動かしてみました。
ATOMS3 で MZ-700 エミュレータ動作できました!
おそらく世界最小のMZ-700! pic.twitter.com/pKNDvs31M7— Nochi (@shikarunochi) December 28, 2022
6×8ドットフォントで240×200で描画したものを、縦横55%縮小 132×110 で、メモリ節約のために132×22ドットで5回に分けて描画しています。
縮小に pushRotateZoomWithAA を使うと、回転の中心がピクセル中心になるので 0.5の誤差が入ってしまうとのこと。
(そのため5分割描画の区切り線が見えてしまってます)
いけました!スキマのチラツキ全く無しですー。すばらしい。
ありがとうございます! pic.twitter.com/1xfaLz8U0A— Nochi (@shikarunochi) December 29, 2022
らびやんさんのアドバイスで、pushAffineWithAA 使うと XY座標 ピシッと指定できてキレイに表示されました。(アフィン変換について、ちょっとだけ理解できた…ような気がしましたw)
ESP32-S3 は USB ホストにも対応しているとのことで、USB キーボードからの入力に対応してみました。電源は Grove 等から取得するか、電源供給付きUSBコネクタを使う必要があります。
ATOMS3 で USB キーボード接続、やってみました!電源は GROVE からです。
プログラム書き込み時の USB 接続し直しがめんどくさいとこですね。 https://t.co/9YtfqFbjpb pic.twitter.com/0esstjWgVT— Nochi (@shikarunochi) December 30, 2022
ATOMS3 の MZ-700 エミュレータ、USB キーボード対応できました!ESP32-S3 すばらしい。
それでは良いお年を! https://t.co/8Sz2eZRDLB pic.twitter.com/LBHpuZDWvI— Nochi (@shikarunochi) December 31, 2022
電源入力付きUSBケーブルでの接続でUSBキーボード使えました。 pic.twitter.com/ovvWbzkLDB
— Nochi (@shikarunochi) January 4, 2023
こちらのプログラムを参考にしました。
esp32-usb-host-demos
https://github.com/touchgadget/esp32-usb-host-demos
小型のUSB-Cキーボードはうまく認識してくれませんでした。
キーボードによってうまくいったりいかなかったりがあるかもしれない?
ATOMS3 で BBQ20KBD は認識されず。残念。(変換アダプタがダメな可能性もあるが。) pic.twitter.com/AKaxSZL0zF
— Nochi (@shikarunochi) January 1, 2023
現状は、単体機能のキーボードを直接接続した場合のみ動作します。USB HUB 経由していたら認識できないです。BBQ20KBDは、キーボード+マウスの複数機能なので内部的に USB HUB経由の扱いなのでしょうね。
プログラムはこちらで公開しました。env:m5atoms3 でビルドしてください。
m5z700AtomHDMI/
https://github.com/shikarunochi/m5z80/tree/master/m5z700AtomHDMI
(Atom Display 版に対応端末追加してるので、プロジェクト名称が AtomHDMI のままなってます。そのへんは気にしないでくださいw)
実行時には、SPIFFS のルートにシステムROM・フォントROM・テープイメージを配置してください。フリーの互換ROMも公開されていますので、MZ-700実機をお持ちでない方も実行可能です。
詳細はこちら。
プログラム書き込み時に、電源ボタン2秒長押し(電源ボタン下のLEDが緑色に光る)で書き込みモードに入ることが必要です。転送後に再起動も必要みたいです。(USBホストを使うときだけかも?)
画面押下でファイル選択、長押しでシステムメニューです。
ファイル選択・システムメニュー画面では、画面押下でカーソル移動(下方向のみ)、長押しで決定です。
ちなみに、platform_packages のバージョンをESP32-S3対応の最新版にすると、以前の M5ATOM Liteでのエミュレータ動作がめちゃ遅くなってしまいました…。なぜかはわからないのですが、今のところは深追いせずに、ATOM Lite 用には旧バージョンを指定することにしてます。
ワンダーハウスへようこそ! pic.twitter.com/SCZfRzTx1P
— Nochi (@shikarunochi) December 28, 2022