M5Stack(a mruby script running on mruby/c VM)
Wio LTE Arduino用にライブラリ化したmruby/cを少しだけ改造して、ESP32 Arduino用にしてみました。
GitHub - kishima/mrubyc_for_ESP32_Arduino: An Arduino library of mruby/c for ESP32 ArduinoAn Arduino library of mruby/c for ESP32 Arduino. Contribute to kishima/mrubyc_for_ESP32_Arduino development by creating an account on GitHub.GitHubまだAPIの移植はほとんどできていませんが、M5StackのLCD用のサンプルスケッチと同じ処理をスクリプトで走らせる事ができます。
内部では、ビルド時にM5Stackのフラグが定義されているときだけ、バインディングがビルドされるようにしています。簡単なので、ソースを見ると自前で拡張もできると思います。
サンプルコード:
https://github.com/kishima/mrubyc_for_ESP32_Arduino/blob/master/examples/M5_lcd/M5_lcd.rb
実行例:
https://twitter.com/kishima/status/1010368469773107200
狙い
- ESP-IDFをインストールしなくても、ArduinodeIDEだけで、mrubyでの開発環境を整えられること。
- Arduino環境上でVMを実行することで、様々なデバイスを接続するときに、既存のArduinoのスケッチの資産を最大限活用できるようにすること。
- mruby,mruby/cはバインディングを書くのが簡単なのがよい
- 最終的には、一度mruby/cのブートローダスケッチを書き込めば、それ以降mrubyのコードを触るだけで開発できるようにする。
- 標準のmrubyでもメモリ的な要求が厳しいマルチスレッド(マルチタスク)を気軽に使えるようにしたい。コンパクトなマルチタスクはmruby/cの大きな特徴なので。
使い方
- M5Stack Arduinoの開発環境を準備する
https://github.com/m5stack/M5Stack - mruby v1.3のmrbcを準備する(Windowsの場合は、mrbc.exe)
https://github.com/mruby/mruby/releases - githubからライブラリをcloneして持ってくる
$ 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環境
- マルチタスク機能へも対応
- あと、もう一つ小ネタを