組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)

Preview:

DESCRIPTION

LEGO Mindstorms EV3をmrubyで制御

Citation preview

組込みシステムで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