M5Stamp C3が届いた!

まだまだFader Unitで遊んでるのに、次なる刺客M5StampC3がスイッチサイエンスから届きました。

積まないように開発環境だけは確認しておきたいと思います。

f:id:hollyhockberry:20211023190424p:plain

www.switch-science.com

スペック

細かい仕様は https://docs.m5stack.com/en/core/stamp_c3 を読んでもらうとして、 M5StampC3はその名の通り Espressifの ESP32-C3 が搭載されているのがワクワクポイントですかね。RISC-Vだったり色々とセキュアだったりと特徴がありますが、個人的にはBluetooth® 5.0 LRに興味津々です。

また、タイプCのUSBで書き込みも給電もできるので、電源周りを用意するのが面倒な私にぴったりです。

Arduino IDEでの開発

M5Stackのマネージャにはまだ見当たらないので Espressifの ESP32 ArduinoにあるESP32C3 Dev Moduleを選択してみました。

f:id:hollyhockberry:20211023191759p:plain

とりあえずそれっぽいシリアルポートを選択して書き込んでみます。

書き込めましたか?私は失敗しました🥲

f:id:hollyhockberry:20211023192025p:plain

よく分かりませんがエラーが出てるので、エラーメッセージをコピペしてググると同じエラーの記事が出てきました。

qiita.com

M5StampC3もUSB-Serial変換チップにCH9102が載っているので同じ現象ですね。

記事の通りにドライバをインストールして、ポートを /dev//dev/cu.wchusbserial***** を選択すると無事に書き込みできます。

Platform IOでの開発

BoardsでESP32C3を選ぶと出てきます。・・がFrameworksにArduinoがないですね。

f:id:hollyhockberry:20211023194152p:plain

ウロウロと検索していると PlatformIO Communityにそれっぽいスレッドがヒットしました。

community.platformio.org

なんか解決したのかどうかよくわからないんですが、こちらを参考にiniファイルを作成してなんとか書き込みできました。

まずは使用するツールチェーンをダウンロードしてローカルに展開しておきます。

https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz

もともとインストールされているツールチェーンのpackage.jsonを展開した先にコピーします。 (私はDownloadフォルダにriscv32-esp-elfという名前で展開しました)

cp ~/.platformio/packages/toolchain-riscv-esp/package.json  ~/Downloads/riscv32-esp-elf

そこまで準備して下記のplatformio.iniを使えばコンパイルから書き込みまでできるようになりました。

[env:esp32c3]
platform = espressif32
platform_packages = 
    toolchain-riscv-esp@file://先程展開したツールチェーンのフルパス
    framework-arduinoespressif32@https://github.com/espressif/arduino-esp32.git#master
framework = arduino
board = esp32dev
board_build.mcu = esp32c3
board_build.partitions = huge_app.csv
board_build.variant = esp32c3
board_build.f_cpu = 160000000L
board_build.f_flash = 80000000L
board_build.flash_mode = dio
board_build.arduino.ldscript = esp32c3_out.ld
build_unflags = 
    -DARDUINO_ESP32_DEV
    -DARDUINO_VARIANT="esp32"
build_flags = 
    -DARDUINO_ESP32C3_DEV
    -DARDUINO_VARIANT="esp32c3"
monitor_speed = 115200
monitor_filters = time
upload_port = /dev/cu.wchusbserial************

正直正しい設定なのかよくわからない部分もありますが、とりあえずは開発できそうです。

とはいえ、そこそこ面倒な感じなので対応を待つためにちょっと積んでみましょうかね。