mruby-esp32 を使って ESP32 上で動くアプリケーションを Ruby 言語で書いてみる(入門編)
はじめに
@GORO_Neko です。ご存知の方ご無沙汰してます。初めての方お初にお目にかかります。
いつも通りではありますが、まずお断りをば一言。
以下は、ボクが所属する会社の意向を反映したものでもスタンスを示すものでもなく、単なる一個人の趣味の活動から産まれた記述です。
ESP32 & mruby
ESP-WROOM-32(以下 ESP32)は、Espressif 社製の、Arduino 互換マイコンボードです。
(上記の写真は ESP-32 を手軽に使えるように開発ボード化した ESP32-DevKitC )
少し前に、mruby-esp32 を使うことで、ESP32 上で、メインロジックを Ruby のコードで記述して、アプリケーションを動作させることが出来ることを紹介する記事を書きました。
前の記事では、どうすれば任意の機能のアプリケーションを、Ruby を使って書けるかまで、紹介しておりませんでした。
今回は、mruby-esp32 のどこをどうカスタマイズ(もちろん書くのは Ruby のコードだけ!)することで、任意の機能を持った、ESP32 用のプログラムが作れるのか、説明しようと思います。
mruby-esp32 の構成
GitHub から clone 等して得られる mruby-esp32 プロジェクトの構成を、ものすごーく荒っぽく書くと以下のように言えると思います。
- mruby-esp32 をビルドするためのスクリプト類
- アプリケーションのエントリーポイントとなる C 言語で書かれたコード
- mruby vm 構成コード
- Ruby で書かれたユーザプログラムのコード
mruby-esp32 ベースなアプリケーションの起動シーケンス
mruby-esp32 をビルドした結果出来上がったアプリケーションは、ESP32上で以下のようなステップを踏んで動作します。
- C 言語製のエントリーポイント機能が起動
- 自身に格納された mruby vm を起動
- 自身に格納された、ruby 言語製のユーザアプリケーションコード( mruby vm が実行可能なバイトコード形式に変換済みの物)を起動した mruby vm にロード
- mruby vm が渡されたユーザアプリケーションコードを実行
Ruby 言語を使って、アプリケーションを書く方法
Ruby 言語製のユーザアプリケーションコードは、任意の名前をつけたスクリプトファイルとして記述が可能です。
作成したスクリプトファイルは、必ずディレクトリ "mruby-esp32/main/examples" に格納する必要があります。
"mruby-esp32/main/examples" に格納されていて、ビルド時にパラメタ "MRUBY_EXAMPLE" の値としてファイル名を指定された Ruby スクリプトファイルの内容が、アプリケーションとして動作することになります。
以下の内容のファイルを "loop_test.rb" という名前で作成し "mruby-esp32/main/examples" ディレクトリに格納したとします。
loop do
puts "test"
ESP32::System.delay(10 * 1000)
end
そして、開発用の PC と ESP32 を USB ケーブルで接続した後、"mruby-esp32" ディレクトリ直下で以下のコマンドを実行したとします。
$ make MRUBY_EXAMPLE=loop_test.rb
$ make MRUBY_EXAMPLE=loop_test.rb flash monitor
10 秒おきに延々と "test" という文字列が表示されます。
と、言う訳で、最初の目論見通り、Ruby 言語でスクリプトを書くだけで、任意の動きをする、ESP32 用アプリケーションが作成できました。
ESP32 は、他の電子部品を接続可能なマイコンボードなので、次は何かセンサー類をくっつけて、そこから計測値等を取得できるようなアプリケーションを、Ruby スクリプトを書くだけで実現してみようと思います。
では、また。
Author And Source
この問題について(mruby-esp32 を使って ESP32 上で動くアプリケーションを Ruby 言語で書いてみる(入門編)), 我々は、より多くの情報をここで見つけました https://qiita.com/GORO_Neko/items/4156331cbd7f5cdaf4ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .