【ヒカ☆ラボ】IOT開発のキホン‼~IOT開発初心者必見~ハードウェアと
WEBの違いから説明します!
株式会社Pluto 電気通信大学市東拓郎
講演内容
• Webから身の周りの機械を動かす楽しさ
• 身近な機械に入っているマイコンとパソコンのスペックの違い
• 身近な機械をハックする
今回の内容は哲学よりですあんまりタイトルを気にせずに
話します
WEBから身の周りの機械を動かす楽しさ
PLUTOとは?
家電を操作するWebサービス
PLUTOとは?
家電を操作するWebサービス
Web(仮想世界)と現実世界をつなぐIOを提供したい
pluto.io
なぜ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機器が戦うところじゃない!
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ご静聴ありがとうございました