7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ETロボコンAdvent Calendar 2016

Day 18

mruby on ev3rt+tecsのBluetoothローダ機能を使う方法

Last updated at Posted at 2016-12-16

本記事では,mruby on ev3rt+tecsのベータ版で公開されたBluetoothローダ機能を紹介します.

mruby on ev3rt+tecsとは

mruby (軽量Ruby)を使って,LEGO Mindstorms EV3を動かすためのプラットフォームです.
TECSによってコンポーネントベースで開発されており,mrubyプログラムからRTOS(TOPPERS/HRP2)の機能を呼び出すことができるように設計されています.
ETロボコン2016から公式プラットフォームに認定され,mrubyを使ってETロボコンに参加されたチームもいらっしゃるようです.

準備

まず,mruby-on-ev3rt+tecs_package-beta1.0.1.tar.gzをダウンロードしましょう.
今回は,Windows環境での紹介になります.
以下のものをインストールしてください.

---ここまではスタンドアローンでの環境構築と同じです---

  • Tera Term
    Bluetoothを用いてバイナリを転送する際に使用します.
  • Bluetooth Stack for Windows by Toshiba (必要であれば)

※Bluetoothの接続方法についてはこちらを参考にして下さい.

私の環境では,Bluetoothドングル(planexのBT-Micro4)とToshiba Bluetooth Stackを用いました.

Bluetoothローダを使ってみる

ここまで準備できたら,Cygwinを起動し,ダウンロードしたパッケージを解凍しましょう.(パッケージの名前は,ev3rt+tecsに省略しています.

mrubyのビルド

まず,mrubyのビルドを行います.

cd ~/ev3rt+tecs/mruby
make

uImageの作成

mrubyのビルドが完了したら,Bluetoothローダを含むプラットフォームをビルドし,SDカードにコピーします.

cd ../hr-tecs/workspace/bluetooth

ここで,Makefile(58行目)を編集し,SDカードのドライブ名を設定します.

Makefile
# SDのドライブ文字を指定
SD_DIR = /cygdrive/e/

設定できたら,ビルドします.

make tecs
make

このような画面になれば,ビルド成功です.
image

mrubyバイトコードの作成

次に,作業ディレクトリに移動します.

cd ../mruby_app

このディレクトリでmrubyプログラム(.rb)を書いていきます.
Makefile (hr-tecs/workspace/mruby_app/Makefile) を編集し,実行したいアプリケーションを指定してください.

Makefile

# mrubyのアプリケーションファイル名
#APP_NAME = battery_sample.rb
APP_NAME = button_sample.rb
#APP_NAME = color_sample.rb
#APP_NAME = color_sample2.rb
#APP_NAME = ev3way_sample.rb
#APP_NAME = gyro_sample.rb
#APP_NAME = lcd_sample.rb
#APP_NAME = lcd_sample2.rb
#APP_NAME = lcd_sample3.rb
#APP_NAME = led_sample.rb
#APP_NAME = motor_sample.rb
#APP_NAME = motor_sample2.rb
#APP_NAME = rtos_sample.rb
#APP_NAME = speaker_sample.rb
#APP_NAME = speaker_sample2.rb
#APP_NAME = touch_sample.rb
#APP_NAME = ultrasonic_sample.rb

デフォルトでは,button_sample.rbになっています.
指定したら,mrubyプログラムをコンパイルします.

make
( ../../../mruby/bin/mrbc button_sample.rb でもコンパイルできます)

button_sample__.mrb__というファイルが作成されたかと思います.
これがバイトコードになります.

Bluetoothを通して転送する

ここまで出来たら,EV3にSDカードを差し込み,起動します.
下のようにスタート画面が表示されたら,Bluetoothのペアリングを行います.
image

Toshiba Bluetooth Stackを立ち上げ,EV3とペアリングします.
PINコードは”0000”を入力してください.
image

ペアリングが完了し中央ボタンを押すと,受信待ちになります.
image

次にTeraTermを起動し,EV3と接続します.

  • __シリアル__を選択し,BluetoothのCOM番号のポートに接続
  • 設定タブ-->シリアルポート-->ボーレート:115200
    で設定完了です.

そしていよいよ転送です.

  • ファイルタブ-->転送-->ZMODEM-->送信
  • 転送するバイトコードを選択
    転送が終わると,mrubyのプログラムが実行されます.

面倒なSDカードの抜き差しを省略

Bluetoothローダを使う利点は,SDカードの抜き差しが不要になることです.
EV3の機体によっては,SDカードの抜き差しがとてもやりづらいことがありますが,Bluetoothローダを使えば,そういったイライラもなくなります.

EV3のBackボタンを長押しすると,プログラムはリセットされます.
mrubyのプログラムを修正し,

make

し,更新されたバイトコードを同じ手順で転送することができます.

Cygwin上からコマンドで転送する

実はCygwin上からmakeコマンドを打つだけで転送することもできます.
(とことん楽をしたい方向け)

まずは,TeraTermにPATHを通して,

ttpmacro.exe

が実行できる状態にします.

次にMakefile(hr-tecs/workspace/mruby_app)を編集します.

Makefile
#  コマンドから転送する場合,TRANSFER = true とする 
#  デフォルトでは,TRANSFER = となっている
TRANSFER = true            # 36行目

#  COM番号
COM_PORT = 40             # 39行目 それぞれの環境に合わせてください
#  ボーレート
BAUDRATE = 115200

あとは,

make

するだけで,転送されます!

Bluetoothローダを使う利点

  • SDカードの抜き差しをしなくて済む
    一番のメリットはこれだと思います.
  • printデバッグが可能
    Bluetoothで接続されていれば,mrubyプログラムで
    p, print, puts 関数の出力をTeraTerm上に表示することができます.
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?