Firefox OS for Embedded System
-
Upload
honma-masashi -
Category
Technology
-
view
1.119 -
download
2
Transcript of Firefox OS for Embedded System
6/31
IoT (Internet of Things)
様々なモノをインターネットに接続 クラウド上のコンピュータで
情報を集計 デバイスの制御
クラウド
モノ
新宿区で交通事故発生信号、ディジタル標識
の制御
8/31
WoT (Web of Things)
Web = ブラウザ? 全て JavaScript で書けるようになる
ブラウザ
HTTP
IP
モノ
WoT
アプリアプリ
IP
モノ
IoT
CC/Java
JavaScript
9/31
プラットフォームとしてのブラウザ
Web = ブラウザの方がしっくりくる モノへのアクセスやネットワーク接続もブラウザ経由で
行う モノの制御もHTTPもJavaScriptでできる IoTの場合はモノの制御はC言語等で行う必要がある
⇒ブラウザ自体がプラットフォームになる これが WoT ではないか
11/31
全てのモノにブラウザが必要?
Smart Endpoint vs Dumb Endpoint IoTにおいて議論になる問題
クラウドにつながる「モノ」は優秀であるべきか?
Smart と Dumb の両極で考えるのではなく中間層を設 けてはどうか ⇒ フォグコンピューティング
Smart Endpoint Dumb Endpoint
単純な動作しかできない - 取得したデータを上に伝える - 指示された動作を行う
複雑な動作ができる - データの集計/分析結果を上に伝える - 自律動作ができる
12/31
フォグコンピューティングとは
クラウド層とモノ層の間にフォグ層を置く
クラウド
モノ
クラウド
モノ
フォグ
データ受信サーバ、データベース、統計分析サーバ等
温度、加速度、放射線等各種センサークラウド
コンピューティングフォグ
コンピューティング
データの集計、フォーマット変換等
14/31
フォグコンピューティング製品
Cisco フォグコンピューティングはそもそも Cisco が提唱 Cisco IOx というフォグ開発プラットフォームがある 高価なため世界的な大企業以外は導入が困難
15/31
Firefox OS でフォグ
Firefox OS Firefox OS でフォグという手もあるのでは?
Chrome、Safari、IE と比較してハードウェアにアクセスするWeb API が最も充実しているため
16/31
フォグのために必要なもの
Firefox OS からのハードウェア制御が必要 Firefox OS は全てが Web
Android の NDK のような仕組みは無い ネイティブ言語は使用できない
JavaScript でハードウェアを制御しなければならない
17/31
Web からモノを制御する方法 その1
ネットワーク経由で制御 HTTP, nodejs, WebSocket, WebRTC こちらは既にできている
センサーFirefox OS
ネットワーク
20/31
Web API とは
二種類のWeb API Web 上のサービスとして提供
Twitter API、Youtube API、... ブラウザ上のJavaScript API (今日扱うのはこちら)
navigator.getUserMedia, navigator.geolocation, ...
21/31
ハードウェアを制御するWeb API
何を作るのか navigator.getusermedia のように
navigator.hardwareaccessxxx のような API を作る
どうやって新しい Web API を作るのか Firefox を修正する
22/31
Firefox を修正する
Firefox では Gecko が Web API を実装している なので Gecko にコードを追加することで新しい Web API を作
ることができる gecko/dom/geolocation 等
Gecko
Web アプリ
Web API
23/31
必要な Web API は
IoTでよく使うハードウェア 入力側: センサー 出力側: モーター どちらもインターフェイスは GPIO や I2C が多い GPIO 及び I2C を扱う Web API を作れば良い
24/31
GPIO とは
GPIOとは General Purpose Input/Output(汎用入出力)の略。 コンピュータと周辺機器を接続するためのピン。 ピン番号を指定して、 on/off を設定したり、 on/off を読み取ったりできる。
LED やモーターの on/off を制御できる。
25/31
I2C とは
I2Cバスとは シリアル通信のためのバス GPIO では on/off しか制御できないのに対し、値を読
み書きする等、細かく制御できる センサーやモーター等、このバスで接続するモノは多い
26/31
Web GPIO API
Web GPIO API (抜粋) navigator.requestGPIOAccess()
GPIO アクセスオブジェクトを取得する
gpio.ports.get(GPIOピン番号) GPIO ポートオブジェクトを取得する
port.write(value) ポートへの書き込み
port.read() ポートからの値の読み出し
27/31
Web I2C API
Web I2C API (検討中) navigator.requestI2CAccess(デバイス名,アドレス)
I2c デバイスの取得
i2c_device.write/read(レジスタアドレス, 値); レジスタへの書き込み、レジスタの読み取り
例 DRV8830 を用いたモーター制御
var i2c_device =
navigator.requestI2CAccess("/dev/i2c-1", 0x64);
i2c_device.write(0x00, 0xfd);
29/31
標準化
WoT=Gecko だけとは限らない V8 や Trident でも WoT
標準化が必要 Web GPIO は W3C Browsers and Robotics
Community Groupにて標準化検討中
http://www.w3.org/community/browserobo/