21
2016.4.6 IoTLT@大阪 西村備山@奈良キカイケン BLEラジコン基板でIoTしてみた

BLEラジコン基板でIoTしてみた

Embed Size (px)

Citation preview

Page 1: BLEラジコン基板でIoTしてみた

2016.4.6 IoTLT@大阪

西村備山@奈良キカイケン

BLEラジコン基板でIoTしてみた

Page 2: BLEラジコン基板でIoTしてみた

自己紹介

西村備山 (@lipoyang)

■奈良県在住&勤務

■組込み系技術者

■ミニ四駆

Page 3: BLEラジコン基板でIoTしてみた

ミニ四駆をBLEラジコン化

BLE

Androidアプリ

魔改造ミニ四駆

Page 4: BLEラジコン基板でIoTしてみた

歩くミニ四駆

ニコニコ動画で 40万再生

Page 5: BLEラジコン基板でIoTしてみた

GPduino

Konashi互換のBLEモジュール

Arduino互換のマイコン

DCモータ×2, RCサーボ×3

BLEラジコン基板

http://lipoyang.net/gpduino

Page 6: BLEラジコン基板でIoTしてみた

やりたいこと

BLE 指令

Page 7: BLEラジコン基板でIoTしてみた

Web系はまったく未経験

JavaScript わからん

← C言語歴20年

Page 8: BLEラジコン基板でIoTしてみた

Milkcocoaがお手軽らしい

Page 9: BLEラジコン基板でIoTしてみた

仕組み

send

DataStore

BLE

Page 10: BLEラジコン基板でIoTしてみた

Webアプリ

Page 11: BLEラジコン基板でIoTしてみた

ソース (HTML)

<body> <table><tr><td></td> <td><img id="up" src="up.png"></td> <td></td></tr> <tr><td><img id="left" src="left.png"></td> <td></td> <td><img id="right" src="right.png"></td></tr> <tr><td></td> <td><img id="down" src="down.png"></td> <td></td></tr></table> <script src='https://cdn.mlkcca.com/v2.0.0/milkcocoa.js'> </script> <script src="controller.js"></script> </body>

Page 12: BLEラジコン基板でIoTしてみた

ソース (JavaScript)

window.onload = function(){ var buttonUp = document.getElementById('up'); (中略)

var milkcocoa = new MilkCocoa("アプリのID.mlkcca.com"); var ds = milkcocoa.dataStore('gpduino'); buttonUp.onclick = function() { if( direction != DIR_UP){ direction = DIR_UP; ds.send({direction: 'up'}); buttonUp.src = "up_active.png"; (中略)

} }; (後略)

Page 13: BLEラジコン基板でIoTしてみた

Androidアプリ

BLE Konashi

SDK Milkcocoa

SDK

中継アプリ

※ Android は Konashi SDK が Java版しかない

Page 14: BLEラジコン基板でIoTしてみた

Milkcocoa SDK for Android

jarをダウンロード

Page 15: BLEラジコン基板でIoTしてみた

GitHubのはメンテされてない!?

ぬるぽ 発生!

Page 16: BLEラジコン基板でIoTしてみた

Milkcocoa/Konashi 中継アプリ

Page 17: BLEラジコン基板でIoTしてみた

ソース (Java)

public void onCreate(Bundle savedInstanceState) { (中略)

m_milkcocoa = new MilkCocoa("アプリのID.mlkcca.com"); m_dataStore = m_milkcocoa.dataStore("gpduino"); m_dataStore.addDataStoreEventListener(this); m_dataStore.on("send"); }

public void onSended(DataElement dataElement) { String direction = dataElement.getValue("direction"); (後略) }

public class MainActivity extends Activity implements DataStoreEventListener {

Page 18: BLEラジコン基板でIoTしてみた

動いた~

Page 19: BLEラジコン基板でIoTしてみた

でもリアルタイムって…

→ 数10msecのレイテンシを リアルタイムとは呼ばない

※ メカトロ屋の感想です

Page 20: BLEラジコン基板でIoTしてみた

時間の尺度

10 μsec

100 μsec

1 msec

10 msec

100 msec

1 sec

10 sec

RTOS

メカ

LAN クラウド

Linux, Windows

UI

BLE

分野によって リアルタイムの 意味は違う!

Page 21: BLEラジコン基板でIoTしてみた

次は何しようかな~?

http://lipoyang.net

7/9~10

メイカーズバザール大阪

7/16~18 NT金沢2016

出展予定