M5Stack/ESP32 Arduino向けのmruby/cライブラリを作る

TechArduino, c, Embedded, ESP32, Japanese, M5Stack, mruby/c

M5Stack
M5Stack(a mruby script running on mruby/c VM)

Wio LTE Arduino用にライブラリ化したmruby/cを少しだけ改造して、ESP32 Arduino用にしてみました。

https://github.com/kishima/mrubyc_for_ESP32_Arduino

まだAPIの移植はほとんどできていませんが、M5StackのLCD用のサンプルスケッチと同じ処理をスクリプトで走らせる事ができます。
内部では、ビルド時にM5Stackのフラグが定義されているときだけ、バインディングがビルドされるようにしています。簡単なので、ソースを見ると自前で拡張もできると思います。

サンプルコード:
https://github.com/kishima/mrubyc_for_ESP32_Arduino/blob/master/examples/M5_lcd/M5_lcd.rb

実行例:

狙い

  • ESP-IDFをインストールしなくても、ArduinodeIDEだけで、mrubyでの開発環境を整えられること。
  • Arduino環境上でVMを実行することで、様々なデバイスを接続するときに、既存のArduinoのスケッチの資産を最大限活用できるようにすること。
    • mruby,mruby/cはバインディングを書くのが簡単なのがよい
  • 最終的には、一度mruby/cのブートローダスケッチを書き込めば、それ以降mrubyのコードを触るだけで開発できるようにする。
  • 標準のmrubyでもメモリ的な要求が厳しいマルチスレッド(マルチタスク)を気軽に使えるようにしたい。コンパクトなマルチタスクはmruby/cの大きな特徴なので。

使い方

 $ git clone https://github.com/kishima/mrubyc_for_ESP32_Arduino.git
  • ライブラリをArduinoのライブラリフォルダへコピーする
    普通のArduinoライブラリ利用の手順と一緒です。
    https://garretlab.web.fc2.com/arduino/libraries/installation/index.html#manual
  • ArduinoIDEを起動して、スケッチ例からスケッチを読み込み、適当な名前をつけて保存する。
    ファイル→スケッチ例→mruby/c for EPS32-Arduino→basic
  • 保存したスケッチのフォルダにあるRubyスクリプト(basic.rb)を更新する
  • basic.rbのあるディレクトリで、バイトコンパイルする
 $ mrbc -Bcode -E basic.rb 

バイトコンパイルの結果、basic.cが更新されているはずです。

  • M5StackをUSBで接続して、ArduinodeIDE上でビルド&書き込みする。

basic.rbのファイル名は自由に変更可能です。

今後やりたいこと

  • APIバインディングの拡張
  • 一度ArduinoIDEで書き込めば、C/C++のコードを一切触らないで開発できるCLI環境
    • マルチタスク機能へも対応
  • あと、もう一つ小ネタを