chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

Switch Scienceのサイトを見ていたら、技適を通過したPico-Wが販売されていたので買ってしまった

Switch Scienceのサイトを見ていたら、RPi Pico-Wの在庫があるようで、抽選でもなく普通に買えるようだった。ちょっと信じられず確認する意味もあって、発注してしまった。ついでに、液晶パネルが内蔵されているM5StackのATOM S3も買った。数日後、配達された。技適マークは基板本体には刻印されておらずケースにシールで貼られていた。ケースを無くさないように注意。ATOM S3の場合は本体上部のシールに〇と〒で印刷されている。これでもって証明になるのかどうかちょっと分からないが、、まぁ通過している証なんでしょう。

ATOM S3はコンパクトで可愛いのだけど、USBケーブルの上に黄と黒の注意シールのようなものが貼られている。ATOMはシンプルでシュッとしたデザインなのに、これは何だろうか??押すなよ危険という感じだが。ATOM S3の古い写真を見ていると、この部分は液晶と接続するフレキシブル基板がカーブしている部分のようであった。かつてはフレキ基板がむき出しになっていて、不注意で押したりすると断線したりしたのかも。だから、ここは押すなということで、注意を引き付けるために黄と黒のシールになっているのではと推測

■追記
ATOM S3を買ったのは、TV会議システム用にMuteのOn/Offを切り替えボタンを作りたかったから。TV会議していると、普段Mute状態から急に振られたものの、2画面だったりしてマウスカーソルがどっかに行っててなかなか返事できないことがある。この問題に対して、Mute On/Offボタンを使って回避したい。USBシリアル変換チップを介さず直接ESP32に接続されていたら、USBライブラリを使って仮想キーボードが作れるはずなのだが。。MicroPythonnのREPLもUSB経由なので、衝突するような気もする。。
■追記
M5 StackのAtom S3にFirmを焼こうとしているがエラーになる。traceしたらPanicになっているようであった。
なぜなのか? esptoolが古い??

$ esptool.py --chip esp32 --port /dev/ttyS20  write_flash 0x1000 M5STACK_ATOM-20230426-v1.20.0.bin
esptool.py v2.8
Serial port /dev/ttyS20
Connecting...
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
WARNING: Detected crystal freq 0.00MHz is quite different to normalized freq 26MHz. Unsupported crystal in use?
Crystal is 26MHz
MAC: 00:00:00:00:00:00
Uploading stub...
Running stub...

A fatal error occurred: Invalid head of packet (0x47)

結論から言うとesptool.pyが古いのが原因。サポートチップにesp32s3が指定できるぐらいのバージョン(V4.5.1とか)でないと多分不可能

$ esptool.py --chip esp32s3  --port /dev/ttyACM0  write_flash -z 0x1000 adafruit-circuitpython-m5stack_atoms3_lite-ja-8.1.0-beta.2.bin 

そもそも、MicroPythonはESP32S3用にはまだビルドされておらず、バイナリ上の互換性がなかったらESP32C3用ファームを入れても動かないだろう。CircuitPythonではESP32S3用のものが存在する。無理やりBINを焼いてみたらUSBデバイスとしてすら認識されなくなった。そのため、まずはbootloaderを入れて、AtomS3がUSBデバイスとして見えるようにしてから、UF2ファイルをDrag&Dropで焼くことにする。
UF2に対応したboot loaderは以下から入手できる
https://adafruit-circuit-python.s3.amazonaws.com/bootloaders/esp32/tinyuf2-m5stack_atoms3_lite-0.14.0.zip
これを、Adafruit_WebSerial_ESPTool(ブラウザ上で動作)を使ってAtomS3に焼く。そうすると、AtomS3はUSBデバイスとして見えるようになるので、CircuitPythonをDrag&Dropで転送することでファームが焼かれる。
USBからserial over usbとしてTeraTermで接続してみる。表示は以下。CircutPythonが動いている。

>>> os.uname()
(sysname='ESP32S3', nodename='ESP32S3', release='8.1.0', version='8.1.0-beta.2 on 2023-04-26', machine='M5Stack AtomS3 Lite with ESP32S3')
>>> help('modules')
__future__        collections       micropython       terminalio
__main__          countio           msgpack           time
_asyncio          digitalio         neopixel_write    touchio
_bleio            displayio         nvm               traceback
_pixelmap         dualbank          onewireio         ulab
adafruit_bus_device                 errno             os                ulab.numpy
adafruit_bus_device.i2c_device      espidf            ps2io             ulab.numpy.fft
adafruit_bus_device.spi_device      espnow            pulseio           ulab.numpy.linalg
adafruit_pixelbuf espulp            pwmio             ulab.scipy
aesio             fontio            rainbowio         ulab.scipy.linalg
alarm             framebufferio     random            ulab.scipy.optimize
analogbufio       frequencyio       re                ulab.scipy.signal
analogio          gc                rgbmatrix         ulab.scipy.special
array             getpass           rotaryio          ulab.utils
atexit            hashlib           rtc               usb_cdc
audiobusio        i2cperipheral     sdcardio          usb_hid
audiocore         i2ctarget         select            usb_midi
audiomixer        io                sharpdisplay      uselect
binascii          ipaddress         socketpool        vectorio
bitbangio         json              ssl               watchdog
bitmaptools       keypad            storage           wifi
board             math              struct            zlib
builtins          mdns              supervisor
busio             memorymap         synthio
canio             microcontroller   sys
Plus any modules on the filesystem

きになるのは、MQTT用ライブラリが見当たらない点。まぁやりたいのはUSB HIDを作ることなので、MQTTなくてもいいのだが。。
https://docs.m5stack.com/en/core/atom_lite


■追記
「ESP32S3はビルドされておらず」とかなんの疑いもなく書いているが、正しくはビルドされていた。なんでこうも自信満々で書けるのか。。自分
https://micropython.org/download/GENERIC_S3/

LCDはサポートされないが、一般マイコンボード向けのファームがあるのでこれを入れてみる。
file: GENERIC_S3-20230426-v1.20.0.uf2