IoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by...

60
【ヒカ☆ラボ】IOT開発のキホン‼~ IOT開発初心者必見~ハードウェアと WEBの違いから説明します! 株式会社Pluto 電気通信大学 市東拓郎

Transcript of IoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by...

【ヒカ☆ラボ】IOT開発のキホン‼~IOT開発初心者必見~ハードウェアと

WEBの違いから説明します!

株式会社Pluto 電気通信大学市東拓郎

自己紹介

は特にないので仕事場所の紹介

部屋

オフィス

研究室

当日のみ

講演内容

• Webから身の周りの機械を動かす楽しさ

• 身近な機械に入っているマイコンとパソコンのスペックの違い

• 身近な機械をハックする

今回の内容は哲学よりですあんまりタイトルを気にせずに

話します

WEBから身の周りの機械を動かす楽しさ

PLUTOとは?

家電を操作するWebサービス

PLUTOとは?

家電を操作するWebサービス

Web(仮想世界)と現実世界をつなぐIOを提供したい

pluto.io

なぜPLUTOを始めたか?

なぜPLUTOを始めたか?

最終目的は自由に宇宙のすべてを操作できるシステムの構築

当日のみ

当日のみ

当日のみ

PLUTO年表• 2001年 Turbo Linux 6.0 WS上で仮想世界の実現出来ないかいろいろテスト

• 2004年 部屋のセンサーで現実の情報を集めるプロトタイプ 個人でMSDNを契約して作った WIN2K Serverベース PC名が MarsとSaturn

• 2006年 部屋の家電をWEBから動かすシステムを作った PC名がPluto

• 2008年 初代社長と夢を語る

• 2010年 メンバー合流

• 2011年 法人作成

• 2012年 サービス開始

• 2016年 いろいろ予定

当日のみ

当日のみ

身近な機械に入っているマイコンとパソコンのスペックの違い

スマホで操作するIOT機器の構成

マイコン センサーモジュール

BLEモジュール

スマホ

プログラム

プログラム

ハードウエア

IC間通信

IC間通信

BLEアクチュエータ

プログラミングの種類• Webシステムの構築 Perl Ruby Java Script

• スマホアプリ Obj-C C# Java

• アプリケーション C# C BASIC

• 組み込み アセンブラ C(組み込み用)

組み込み特有の事

WikiよりマイコンのPIC

組み込み特有の事

• メモリが非常に少ない

• アーキテクチャに依存する

• マルチタスクではない(OSを使えば別)

CPUの気持ちになってみよう

メモリレジスタ

ハードとか

メモリを介してのみアクセス

CPUはメモリ、レジスタしか見えない

CPUの気持ちになってみよう

メモリレジスタ

ハードとか

メモリを介してのみアクセス

CPUはメモリ、レジスタしか見えない

すべてのコンピュータも同じだけど有り余る計算力で隠蔽している

組み込みでは変なCも書くかも((void(*)(void))0xf000)();call 0xf000

自分で書いていてひどいと思ったコード

最近はうまーくハードを隠蔽した環境も出ているのでどこまでこだわるかは自分次第

ただ、隠蔽した環境を使えば使うほど出来ることは少なくなる

組み込み系のリソース• メモリ 4096BYTE

• Flashメモリ 64KBYTE

• 4MHz

• センサーの情報量 4BYTE

• 電池で動作

組み込み系のリソースアセンブラとC言語(ほとんどのライブラリは使えない)

でPCの様な1000BASEのイーサネットの通信大容量のメモリを使ったりはそもそも難しい

10BASEと1000BASEではハードウエアの構造やコストも変わってくる

高性能のハードを用意する必要はないし使いこなせない

組み込み系のリソースアセンブラとC言語(ほとんどのライブラリは使えない)

でPCの様な1000BASEのイーサネットの通信大容量のメモリを使ったりはそもそも難しい

10BASEと1000BASEではハードウエアの構造やコストも変わってくる

高性能のハードを用意する必要はないし使いこなせない

高速化すればするほど交流特性など難しい事が増えていく

不必要な高性能化はただ問題を増やす

役割分担をちゃんとしよう

WEB

iPhone

IoTSensor

UIとしては最高

どこからでもアクセスできる

現実世界にアクセス出来る

IOT機器がすべきこと

• 現実の情報を読み

• WEBもしくは端末に送る

IOT機器がすべきこと

• WEBもしくは端末からの情報を現実に適応する

難しい処理は計算、ストレージ資源が

無限にあるサーバーに任せよう!IOT機器が戦うところじゃない!

IOT機器は情報の送り方が重要

IOTを普及させる起爆剤BLE

BLEの特徴

• 非常に消費電力が少ない

• iPhone Androidに対応している

• GATTなのどの設計がIoTにマッチしている

オブジェクト指向に近い

BLEの消費電力を下げる工夫

消費電力は回路が使った電流で決まるC[Ah]が電池の容量に達したら電池切れ

C =

ZI(t)dt

T =CeI電池切れまでの時間

※CR2032は225mAh

BLEの消費電力を下げる工夫

電池切れまでの時間を延ばすこつは平均消費電流を下げる事

瞬発的な大電力はOK

BLEは送信速度を上げて送信時間を減らした

BLEの消費電力を下げる工夫

※CR2032は225mAh

随時受信を受け付ける状態 (10mA消費する)22.5時間

送信だけをする場合 (送信時20mA消費する)11.25時間分送信可能

BLEが向かない場合

• 大容量通信をしたい

• ストリーム通信をしたい

• TCPなどを使って直接インターネットに接続したい

無線はBLEを使いましょう大容量はWIFIを使いましょう

でもIOTで大容量の通信をするのはやめましょう

身近な機械をハックする

機器をハックする手順

1.機器を分解して、ICとセンサーの間の通信を調べる 1−1.センサーのデータシートを調べる 1−2.ICのデータシートを調べる2.通信を乗っ取る

1.機器を分解して、ICを調べる 1−2.ICのデータシートを調べる2.通信を乗っ取る

とりあえず機械があったら分解をする

タニタのはかりを分解してみる

ADCを使ったらハック出来る!

EEPROM

MCU

タニタのはかり

出力電圧が0.7Vで重さによっては出力電圧が変化する

(最大で0.1V程度の変化)

OPアンプの差分増幅回路で変化を増幅しないとADCで検出出来ない

鍵のハック

大家に怒られたので割愛

アナログ回路ディジタル回路

アナログ回路のハックとディジタル回路のハックでは難しさが違う

ディジタル回路ではIOと繋げれば後はソフトの問題アナログでは電圧レベルを合わせるなど必要

ソフトだけではどうにもならない

センサーを使いこなす事が非常に重要

• 温度センサー

• 加速度センサー

• 光センサー

• 音センサー

だいたい世にあるセンサーはこんな物

秋月のHPより

センサーとの通信方法• ADC アナログデジタルコンバータ

• SPI  IC間通信の規格

• I2C  IC間通信の規格

• UART デバイス間通信も可能な規格

SPIとI2Cに対応しているのが多い

秋月のHPより

初心者はSPIかI2Cを使ったセンサーの方がいい

アナログは非常にやっかい

温度センサーは温度しか測れないか?

温度センサーで体重を量る

温度センサーで体重を量る

理想気体

ピストン気体の温度を測れば上から

押す力が分かる↓

温度センサーを圧力センサーとして利用

断熱過程になっているd0W = �pdV

熱力学に従って計算すればいい

センサーを活用するために測定とは?

測定対象系S

メーター系M

相互作用がおきて相関が発生する

操作するために操作とは?

操作対象系S

相互作用がおきて相関が発生する

コントローラー系C

IOTは現実世界と仮想世界に相関を起こす

FINご静聴ありがとうございました