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

mrubyでマイコンの世界に足を踏み入れる

Y_uuu
March 04, 2023

 mrubyでマイコンの世界に足を踏み入れる

鹿児島Ruby会議02
2023.03.04 Sat. 15:40-16:00
https://k-ruby.com/kagoshima-rubykaigi02/

Y_uuu

March 04, 2023
Tweet

More Decks by Y_uuu

Other Decks in Programming

Transcript

  1. マイコンとは • マイクロコントローラ (英: microcontroller) とは、 
 CPUに加えてRAM、ROM、I/Oポートなどを 
 1つの集積回路(IC)にまとめた、いわば極小のコンピュータ。

    • 主に機器の制御に使われる。 6 https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9
  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を参照 14

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

    LEDと反対側のボタンを押して、 モードを切り替える 実機での出力を シリアル通信で確認
  5. 参考: 福岡Rubyist会議03の登壇スライド • テーマ: mruby on IoT devices. • ESP-IDF

    v5.0への対応、mruby-esp32-mqttの開発について話しました • https://speakerdeck.com/yuuu/mruby-on-iot-devices 19
  6. ROMのパーティション定義 • ROM上にstorage領域を設け、ファイルシステムとして利用する 26 ブートローダー パーティションテーブル nvs: 24KB phy_init: 4KB

    factory: 1.5MB 空き 0x00000000 0x00001000 0x00009000 0x0000f000 0x00010000 0x00180000 ここをファイルシステムとして使用 main.rbを保存する storage: 200KB 0x001B2000 main.rb ROM
  7. GitHub Actionsでmruby-esp32のROMイメージを生成 • ソースコードをビルドして、mruby-esp32.binをリリースする 30 ESP-IDF Project Component Main Component

    mruby Toolchain mruby-esp32.bin ESP32-DevKitC FreeRTOS アプリケーション mruby MrubyTask コンパイル・リンク アップロード (ROMに書き込み) Library ここをGitHub Actionsで
  8. 使い方3. 書き込み・起動 • esptool.py --chip esp32 --port $(YOUR_SERIAL_PORT) write_flash -z

    0 mruby-esp32-flash.bin • シリアルモニタを接続するとサンプルプログラムが動作 35
  9. Rubyのプログラムを書き換える • spiffs.binをROMに書き込み • esptool.py --chip esp32 --port $(YOUR_SERIAL_PORT) write_flash

    -z 0x190000 spiffs.bin 39 spiffs.bin main.rb ROM上のstorageの部分だけ 新しいイメージで上書き 39