Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mruby on IoT devices.

Y_uuu
February 18, 2023

mruby on IoT devices.

Fukuoka RubyistKaigi 03
2023.02.18 Sat. 13:30-13:55
https://regional.rubykaigi.org/fukuoka03/index.html

Y_uuu

February 18, 2023
Tweet

More Decks by Y_uuu

Other Decks in Programming

Transcript

  1. • IoT開発(特にPoCフェーズ)で頻発するチューニングに柔軟に対応しやすい • Web/クラウドと同じRubyで開発ができる IoT開発におけるmrubyの可能性 7 クラウド デバイス センサー 収集

    加工 分析 可視化 インターネット センサーの値を送信 7 別のセンサーを 使いたい 送信データの 形を変えたい 送信周期を 変えたい 機能を拡張 したい
  2. mruby-esp32 • binファイルをROMに書き込むことで起動 • FreeRTOS(組込み向けのリアルタイムOS)上でmrubyが動作 12 ESP-IDF Project Component Main

    Component mruby Toolchain mruby-esp32.bin ESP32-DevKitC FreeRTOS アプリケーション mruby MrubyTask コンパイル・リンク アップロード (ROMに書き込み) Library
  3. 使い方1. ESP-IDFをインストール • インストール手順はESP-IDF Programming Guide > Get Startedを参照 13

    https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html
  4. 使い方6. 書き込み・起動 • idf.py -p (PORT) flash monitor コマンドで書き込み・起動します 18

    LEDと反対側のボタンを押して、 モードを切り替える 実機での出力を シリアル通信で確認
  5. 問題2: Legacy event loopでコンパイルエラー • Wi-Fi接続やIP取得といったイベントを検知するために使用 • v5.0ではLegacy event loopが消滅している

    30 V5.0にLegacy event loopの ドキュメントは存在しない https://docs.espressif.com/projects/esp-idf/en/release-v4.4/esp32/api-reference/system/esp_event_legacy.html
  6. 問題4: Error: app partition is too small for 〜 が出る

    • ビルドの終盤でエラーが発生 35
  7. 問題4: Error: app partition is too small for 〜 が出る

    • パーティション=ROMの構成情報 36 ブートローダー パーティションテーブル nvs: 24KB phy_init: 4KB factory: 1MB 空き 0x00000000 0x00001000 0x00009000 0x0000f000 0x00010000 0x00110000
  8. 問題4: Error: app partition is too small for 〜 が出る

    • デフォルトのパーティションテーブルではapp領域は1MBしかない 37 ブートローダー パーティションテーブル nvs: 24KB phy_init: 4KB factory: 1MB 空き ここがapp領域 0x00000000 0x00001000 0x00009000 0x0000f000 0x00010000 0x00110000
  9. 問題4: Error: app partition is too small for 〜 が出る

    • パーティションテーブルをカスタマイズして1.5MBまで拡げて対策 38 ブートローダー パーティションテーブル nvs: 24KB phy_init: 4KB factory: 1.5MB 空き 0x00000000 0x00001000 0x00009000 0x0000f000 0x00010000 0x00180000 ここには後々 
 ファイルシステムを構築予定 一部のESP32はROMが2MBしか 
 ないため、全体を2MB以内としたい https://github.com/mruby-esp32/mruby-esp32/pull/30
  10. 参考: リアルタイム性とmruby • IoTシステムで求められるリアルタイム性がそこまで高くない • 組込みシステムの中でも、mrubyが敬遠される要素が少ない 61 時間の流れ タスクA タスクB

    イベントが発生 レイテンシ タスクA イベントが発生 レイテンシ タスクB ハードリアルタイム 例: 自動車のブレーキ、緊急停止装置 ソフトリアルタイム 例: GUI、環境測定、データ配信 mrubyはソフトリアルタイム 処理期限