組込みシステムでIoTへの扉を開こう!
mruby on LEGO Mindstorms EV3 ®
Takehiko YOSHIDA@chihayafuru
1
アジェンダ
自己紹介 レゴ マインドストームとは◦ 標準プログラミング環境
◦ 拡張プログライング環境 (ev3dev)
組込みシステムにmrubyを採用できるか?◦ マインドストームRCX用光センサーの例
◦ mrubyにて実装したEV3用カラーセンサーのAPI
まとめ "RUBY神社"のデモンストレーション
2
自己紹介
長野県 松本市 在住
情報関連機器メーカーにおいてプログラマーとして勤務
Takehiko YOSHIDA@chihayafuru
3
国内メーカーのヒエラルキー
士
農
工
商
メカ屋
エレキ屋
ソフト屋
4
レゴ マインドストームとは
教材 > 玩具
STEM教育◦ 科学 (Science)
◦ 技術 (Technology)
◦ 工学 (Engineering)
◦ 数学 (Mathematics)
5
レゴ マインドストームの歴史
初代Mindstorms RCX
二代目Mindstorms NXT
三代目Mindstorms EV3
発売時期 1998年 2006年 2013年
CPUH8
16MHzARM7
48 MHzARM9
300 MHz
RAM 32 KB 64 KB 16 MB
6
ビジュアルプログラミング環境
EV3ソフトウェア
7
リモートコントロール
Mindstorms EV3
8
標準ファームウェアアーキテクチャ
OS (Linux)
システムプログラム
デバイスドライバー (kernel module)
VM (仮想マシン)
ユーザープログラム
ダイレクトコマンド
9
拡張ファームウェア
ev3dev◦ フルDebian7 (wheezy)
Linux ディストリビュー
ション
◦ レゴ マインドストー
ムEV3 コントローラ向
けカスタマイズ
◦ microSD/SDHC カード
から起動
利用可能な
プログラミング言語
C / C++
Python
JavaScript (Node.js)
Lua
Go
Ruby
10
mrubyとは?
mruby is the lightweight implementation of Ruby language complying to (part of) the ISO standard. Its syntax is Ruby 1.9 compatible.
mruby can be linked and embedded into your application.
https://github.com/mruby/mruby
11
組込みシステムに"mruby"を採用できるか?
リアルタイム制約• mrubyはデッドラインを守れるか?• GC (Garbege Collection)処理は他の割込処理を禁止する
12
初代マインドストームRCXの光センサーの例
LEDライト
光検出器
13
一般的な光センサーの回路図
信号線
電源線
共通線
出力
入力
LED
フォトダイオード
14
マインドストームRCXのコネクタ
15
RCXの光センサーの回路図
信号線
電源線
共通線
出力
入力
16
RCX用 光センサーの信号波形
オシロスコープ
反射光:強 反射光:弱
17
制御サイクルの遅延
18
mrubyによるマインドストームEV3用カラーセンサーAPI
19
カラーセンサーのイニシャライザー
Ev3Color.new(port)
port : "in1", "in2", "in3" , "in4"
20
マインドストームEV3のコネクター
21
カラーセンサーの3種のモード
Ev3Color#mode=(mode)
EV3Color.Mode.COL-REFLECTEV3Color.Mode.COL-AMBIENTEV3Color.Mode.RGB-RAW
22
マインドストームの進化
インテリジェントブロック
光センサ
初代マインドストームRCX
二代目マインドストームNXT
三代目マインドストームEV3
アナログ
アナログ
デジタル
23
まとめ
mrubyはどんな分野に適するか?
mrubyはどんな分野に適さないか?
24
mrubyが適さない分野
ソフトウェア制御でハードウェア性能の限界まで引き出す。
C/C++やアセンブラと格闘して、メカやエレキを支える縁の下の力持ちとして頑張りましょう!
25
mrubyが適する分野
高機能/多機能な電子デバイス
日進月歩のクラウドサービスと連携して新しい価値を創造
26
リファレンス
LEGO Mindstorms®http://www.lego.com/en-us/mindstorms/
ev3devhttp://www.ev3dev.org/
mrubyhttps://github.com/mruby/mruby
mruby-ev3devhttps://github.com/chihayafuru/mruby-ev3dev
27