R2P2 はRaspberry Pi Pico上で動作する PicoRuby で書かれたシェルシステムです。
私はこのR2P2をESP32という別のマイコンで動作させる取り組みをしています。先日、 R2P2-ESP32 という名前でGitHubリポジトリも公開しました。
本記事では「ESP32でも動くならちょっと試してみようかな」と思った方向けに、R2P2-ESP32のはじめかたをまとめようと思います。
準備物
R2P2-ESP32をはじめるにあたり次のものを準備してください
- PC
- MacOSおよびUbuntuでビルド・書き込みができることを確認しています
- ESP32マイコンボード
- 現時点(2025-02-28)では、次の2種類のマイコンボードで動作確認をしています
- ESP32-DevKitC
- M5Stamp C3 Mate
- 他のESP32マイコンボードでも理論上は動作するはずなので、「動作確認できたよ!」という方は教えていただけると大変助かります🙇♂️
- 現時点(2025-02-28)では、次の2種類のマイコンボードで動作確認をしています
開発環境の構築
R2P2-ESP32はESP-IDFと呼ばれるESP32向けの公式開発環境を用いて開発しています。現時点ではビルド済みのイメージは公開していないですし、ビルドなしで任意の .rb
.mrb
といったファイルを実機上に配置する手段も用意できていないため、ESP-IDFを用いた開発環境を構築いただく必要があります。
こちらのドキュメントを参考に、環境を構築してください。ESP-IDFのバージョンはv5.4で動作確認ができています。
上記に加えて、PCにRubyをインストールしておいてください。
コードの取得とセットアップ
開発環境を構築できたらソースコードを入手してセットアップをしてください。次のコマンドをPCで実行します。
$ git clone --recursive https://github.com/picoruby/R2P2-ESP32.git
$ cd R2P2-ESP32
$ rake setup_esp32 # ESP32-DevKitCをお使いの場合
$ rake setup_esp32c3 # M5Stamp C3 Mateをお使いの場合
rake setup_esp32
コマンドではR2P2-ESP32が内包しているPicoRubyのビルドを行っています。
もしここでエラーが出る場合、ESP-IDFの環境変数が設定できていない可能性が高いです。こちらの手順 を参考に、以下のコマンドを実行した上で再度実行するようにしてください。
$ . $(ESP-IDFのインストール先)/export.sh
ビルド・書き込み・シリアル接続
ESP32マイコンボードをPCに接続した状態で rake
を実行すれば、ビルド・書き込み・シリアル接続まで全自動で実行できます。
個別に実行したい場合のコマンドも併記しますので適宜活用ください。
rake # ビルド->書き込み->シリアル接続
rake build # ビルドのみ
rake flash # 書き込みのみ
rake monitor # シリアル接続
起動確認
ここまでの手順を正常に実施できていれば、次のような見慣れたロゴが出力されるはずです。
使い方
irbを起動する
R2P2と同様、irbが使えます。シリアル接続したときに表示されたプロンプトに対して irb
と入力してみてください。
.rb .mrbを書き込む
前述の通り、現時点ではビルドを経由しないとESP32マイコンボードにスクリプトを書き込むことができません。プロジェクト直下の storage/home
配下にファイルを格納して、ビルド・書き込みを実行することで書き込みができます。
$ cat storage/home/sample.rb
message1 = 'Hello'
message2 = 'World!'
puts [message1, message2].join(' ')
$ rake build flash
書き込んだファイルは ls
コマンドで確認でき、 ./(ファイル名)
にて実行ができます。
ちなみに、 app.rb
または app.mrb
という名前のファイルを /home
直下に格納すると、起動時に自動的に実行されるようにしています。(両方のファイルが同時に存在する場合 .mrb
のみを実行)
まとめ
このように必要最低限の動作はするようになりましたが、ペリフェラルは現時点でGPIOのみ実装した状況ですし、まだまだポーティングすべき機能は山ほどあります。
興味を持っていただけた方はぜひお試しいただき、もしよければフィードバックやコントリビュートを頂けると大変嬉しいです...!