組込みシステムでiotへの扉を開こう! mruby on lego mindstorms ev3 (r)

27
組込みシステムで IoT の扉 を開こう! mruby on LEGO Mindstorms EV3 ® Takehiko YOSHIDA @chihayafuru 1

Upload: takehiko-yoshida

Post on 24-Jun-2015

1.569 views

Category:

Technology


0 download

DESCRIPTION

LEGO Mindstorms EV3をmrubyで制御

TRANSCRIPT

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

組込みシステムでIoTへの扉を開こう!

mruby on LEGO Mindstorms EV3 ®

Takehiko YOSHIDA@chihayafuru

1

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

アジェンダ

自己紹介 レゴ マインドストームとは◦ 標準プログラミング環境

◦ 拡張プログライング環境 (ev3dev)

組込みシステムにmrubyを採用できるか?◦ マインドストームRCX用光センサーの例

◦ mrubyにて実装したEV3用カラーセンサーのAPI

まとめ "RUBY神社"のデモンストレーション

2

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

自己紹介

長野県 松本市 在住

情報関連機器メーカーにおいてプログラマーとして勤務

Takehiko YOSHIDA@chihayafuru

3

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

国内メーカーのヒエラルキー

メカ屋

エレキ屋

ソフト屋

4

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

レゴ マインドストームとは

教材 > 玩具

STEM教育◦ 科学 (Science)

◦ 技術 (Technology)

◦ 工学 (Engineering)

◦ 数学 (Mathematics)

5

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

レゴ マインドストームの歴史

初代Mindstorms RCX

二代目Mindstorms NXT

三代目Mindstorms EV3

発売時期 1998年 2006年 2013年

CPUH8

16MHzARM7

48 MHzARM9

300 MHz

RAM 32 KB 64 KB 16 MB

6

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

ビジュアルプログラミング環境

EV3ソフトウェア

7

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

リモートコントロール

Mindstorms EV3

8

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

標準ファームウェアアーキテクチャ

OS (Linux)

システムプログラム

デバイスドライバー (kernel module)

VM (仮想マシン)

ユーザープログラム

ダイレクトコマンド

9

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

拡張ファームウェア

ev3dev◦ フルDebian7 (wheezy)

Linux ディストリビュー

ション

◦ レゴ マインドストー

ムEV3 コントローラ向

けカスタマイズ

◦ microSD/SDHC カード

から起動

利用可能な

プログラミング言語

C / C++

Python

JavaScript (Node.js)

Lua

Go

Ruby

10

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

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

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

組込みシステムに"mruby"を採用できるか?

リアルタイム制約• mrubyはデッドラインを守れるか?• GC (Garbege Collection)処理は他の割込処理を禁止する

12

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

初代マインドストームRCXの光センサーの例

LEDライト

光検出器

13

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

一般的な光センサーの回路図

信号線

電源線

共通線

出力

入力

LED

フォトダイオード

14

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

マインドストームRCXのコネクタ

15

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

RCXの光センサーの回路図

信号線

電源線

共通線

出力

入力

16

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

RCX用 光センサーの信号波形

オシロスコープ

反射光:強 反射光:弱

17

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

制御サイクルの遅延

18

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

mrubyによるマインドストームEV3用カラーセンサーAPI

19

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

カラーセンサーのイニシャライザー

Ev3Color.new(port)

port : "in1", "in2", "in3" , "in4"

20

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

マインドストームEV3のコネクター

21

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

カラーセンサーの3種のモード

Ev3Color#mode=(mode)

EV3Color.Mode.COL-REFLECTEV3Color.Mode.COL-AMBIENTEV3Color.Mode.RGB-RAW

22

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

マインドストームの進化

インテリジェントブロック

光センサ

初代マインドストームRCX

二代目マインドストームNXT

三代目マインドストームEV3

アナログ

アナログ

デジタル

23

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

まとめ

mrubyはどんな分野に適するか?

mrubyはどんな分野に適さないか?

24

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

mrubyが適さない分野

ソフトウェア制御でハードウェア性能の限界まで引き出す。

C/C++やアセンブラと格闘して、メカやエレキを支える縁の下の力持ちとして頑張りましょう!

25

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

mrubyが適する分野

高機能/多機能な電子デバイス

日進月歩のクラウドサービスと連携して新しい価値を創造

26

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

リファレンス

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