M5Stack から発売されている ESP32-C3(RISC-V) が搭載されているマイコン、M5Stamp C3 用の開発向け基板を製作してみました!
基板の特徴
- JTAG デバッグのための外部 USB Type-C ポートの接続。
- よく見かける KMR-1.8 とマークされた安価な LCD/SD の SPI 接続。
- 電源入力の選択。M5Stamp 側か USB Type-C 側かの切り替えジャンパーピン。
- ローダーモードに入れるための GPIO9 に接続されたタクトスイッチ(通常のスイッチとしても利用可能です)。
- 利用可能な GPIO を外部に公開するピンヘッダーの接続。
- 使われていない GPIO は GPIO 0(SPI CS を想定)と JTAG とは競合する GPIO18, 19(I2C 接続を想定)
- 名刺サイズ(90x55mm)の基板です。
となっていて、手軽に RISC-V やマイコンプログラミングを楽しみやすいものを目指しました。
オープンソースハードウェア
基板のガーバーデータや部品表、サンプルのプログラムを次の GitHub リポジトリーにコミットしてあります。
https://github.com/h1romas4/m5stamp-c3dev
This is a development board for the M5Stamp C3 (RISC-V/FreeRTOS).
ソースコード、基板ガーバーデータ含め MIT License に設定しています。
ガーバーデータを元にご自身で PCB メーカーに製造発注可能です。なお、リポジトリに含まれている .zip は Fusion PCB 向けの設定になっています。(おそらく他でも大丈夫と思いますが、KiCad 6 形式のファイルも含めていますので、設定を変えることもできます)
基板頒布
また、BOOTH で完成品の基板(部品なし)の頒布も行っています。 2枚セット 130円で、匿名配送可能な BOOTH あんしんパック送料込みで 500 円になるように設定しています。(個人で製造発注しているため在庫がない場合が多々あります。入荷お知らせメールを設定していただければと思います)
サンプルプログラム
GitHub にコミットしてあるサンプルプログラムには以下の実装が入っています。
- 日本語 TrueType フォントの液晶への出力
- SD カード内の PNG 画像の液晶への出力
- WiFi 接続による NTP 同期
- GPIO 0 の ADC 入力
- M5Stamp C3 に付いている RGB LED の点灯
- GPIO 18, 19 への I2C センサー接続テスト(UNIT ENV III の温度湿度気圧センサー)
- AssemblyScript を使ったアナログ時計のサンプル(Wasm3 による WebAssembly の実行)
- AssemblyScript を使った GPS GSV Viewer の実装(Wasm3 による WebAssembly の実行)
またその他の実装として、
- TrueType フォントと .wasm バイナリーを格納している SPIFFS の使い方(
parttool.py
やspiffsgen.py
ツール) - WiFi パスワードを格納している NVS(暗号化可能なキーバリューストア)の利用(
nvs_partition_gen.py
ツール) - esp-idf ビルドシステムを使ったライブラリーのビルド、依存関係の管理
- Visual Studio Code の C/C++ Extention の設定と openocd と連携した JTAG デバッグ設定
- AssembyScript をウェブブラウザーとマイコンで共有する手法
などなどがありますので、この基板に限らず ESP32-C3 や M5Stamp C3 を使う場合の参考になるかもしれません。 GitHub を眺めていただけたらと思います。
ビルドは Windows/Linux/macOS のそれぞれで正常に終了することを確認しています。
M5Stamp C3/ESP32-C3 は、メモリーの malloc もしやすく使いやすいマイコンだと感じました。 Wasm3 の末尾呼び出し最適化なども esp-idf の RISC-V コンパイラツールチェインでうまく動作するようです。
M5Stamp C3 への書き込みとデバッグブレイク方法
プログラムの upload と debug については以下の記事を参考にしてください。Windows WSL2 を使うと、設定も手軽で安定して動作させられます。
ここから下はご参考情報です。
M5Stack Core2 上での同サンプルの動作
Wasm3/AssemblyScript については、M5Stack Core 2 版も作成しています。
https://github.com/h1romas4/m5stack-core2-wasm3-as
M5Stack Core2 With Wasm3/AssemblyScript Demo
M5Stamp C3 版と同じ .wasm を動作させています。ウェブブラウザーからも動作を見ることができます。
https://h1romas4.github.io/m5stamp-c3dev/asclock/
AssemblyScript Analog Clock Sensor values are dummy.
良ければ遊んでみて下さい 😀