「絵で見てわかるIoT/ センサの仕組みと活用」をめちゃめちゃ簡単にまとめた
↑↑上の本がとても内容が濃かったので、適当にまとめてみた
デバイスの役割
1.センシング:デバイス自身の状態やまわりの環境の状態を収集し、通知する
2.フィードバック:システムから通知を受け、情報の表示や指示された動作を行う
方法としては、可視化、通知、制御が挙げられる
ネットワークの役割
デバイスでIoTサービスにつなぐために必要
・デバイス同士を接続するネットワーク
・デバイスとサーバをつなぐネットワーク
IoTサービス
・フロントエンド部、処理部、データベース
1.ゲートウェイ選択時のポイント
・ネットワークインターフェイス
ゲートウェイの設置場所に影響を与える
・ハードウェア
・ソフトウェア
2.ゲートウェイの機能
・デバイスとの接続
・データ処理
・サーバーへの送信
3.サーバ
HTTP:
最もポピュラー。データ送信を行う一番簡単な方法。
WebSocket:
ネット上でソケット通信するための通信プロトコル。デバイス側から送信サーバに接続し、Web Scketのコネクションを確立する。一度WebSOcけtの接続を確立すると、送信サーバからデータ送信に加えて、クライアント側からデータ送信できる。
MQTT:
パブリッシュ/サブスクライブ型と言われる。一対多の通信可能なプロトコル。ブローカー、パブリッシャー、サブスクライバーで構成されている。
デバイスにHTTPやWebSocketを立てて、サーバ側から接続するのは可能だが、デバイス数が増えた時にサーバがすべての接続先を管理するのは難しい
ブローカー:MQTTの通信を中継する
パブリッシャー:メッセージを送信するクライアント
サブスクライバー:ブローカーに対して、接続を行い接続したいトピック名を伝える。
【デバイスからのデータの受信と送信(同期と非同期通信がある)】
【データの処理と保存】
1.バッチ処理:保存されたデータを定期的にまとめて処理
2.ストリーム処理:受信データを逐次的に処理
【データフォーマット】
XML:わかりやすいがデータ数多くなる
JSON:データ量少ない
MessagePack:バイナリ形式でデータが扱えるので、この3つの中では一番データ数が少なくてすむ。
サービス開発のポイント
【デバイス選定】
・センサ特性
・計測誤差
・法的規制
【デバイスの設置】
・配置設計
・設置場所
・設置環境
【パラメータ設定】
・センシング間隔
・センサネットワークの設定
【データベース】
・RDBやKVS、ドキュメント指向など
・スケールアウトが可能なKVSが採用されることが多い
・初期段階ではRDBが無難。
・拡張性、高性能が必要ならKVS
IoTデバイス
・マイコン:機器制御を行うICチップ。CPU,メモリ、周辺回路が組み込まれている
・入力デバイス:センサ等の使用によって、より詳細かつきめ細かな周囲の状況を把握することができる
マイコンの種類
・H8マイコン
必要最低限の機能が入っている。組み込みを学ぶには少し難しいが最適
デジタル、アナログ、入出力端子、USBポートなどの単純なI/Oポートが小さな基盤にまとまっている。開発しやすいのがメリット。シールドと組み合わせると、大きくなるのがデメリット
・Rasberry Pi
Armプロセッサを搭載したシングルボードコンピュータ。Linuxが入っている。PCとして利用することを主眼におかれた設計となっている。アナログ入力端子がないのがデメリット。
・Beagle Bone Black
Armプロセッサ搭載したシングルボードコンピュータ。Linux、PCT、マイコン、どちらの性能ももっている。値段高め、で日本語資料が少ない。
・Intel Edison
Intelのマイコン、CPUが入っている。Linux。Wifi,Bluetooth4.0搭載。Arduino Unoも装着して使用可。
ドライバ
単純なドライバ回路としてトランジスタが挙げられる
・電流の流れを制御することが可能な電子部品を利用したスイッチング回路
・エミッタ、コレクタ、ベースという3つの端子をもっている
・NPN型、PNP型の2つがある
・ベースに加える電流の変化が非常に小さくてもON/OFFを切り替えれる。コレクタに大きな電源を接続すると、結果的にベースの電流を大きく増幅して出力できるようになる
三端子レギュレータ
・Vin/Vout/GNDという3つの端子がついたもの
・入力された電圧に対し、内部で電圧変換を行い、一定の電圧を出力する。
・高温になりやすいので、取り扱い注意
デジタル信号からアナログ信号への変換
・PWM(Pulse Width Modulation)方式が一般的
・出力のHigh/Lowを高速に切り替えることで、近似的にアナログ出力を実現する。
・周期の中でどれくらいHighになってるかを表す割合をデューティー比(D)で表し、Dが大きいほど、Highになっている時間が長いので、LEDは明るくなる。
ハードウェアプロトタイピング
ポイントは目的の明確化と、スピードの向上とコストの削減
ネットワークとの接続
センシングした情報を蓄積・分析したり、遠隔でデバイスをコントロールするため、ネットワークを介して、サーバと通信する。
ゲートウェイとの接続方法
◯有線
【Ethernet】
・電波干渉の恐れなく安定的に通信できる
・IPを用いた一般的な通信プロトコルが実装可能でPCと簡単に通信できる
・サイズが大きくなったり、設置場所が限定されるのがデメリット
【シリアル通信】
・ゲートウェイにシリアルポートがあれば、接続しやすいが、無いときはUSBシリアル変換ケーブルなどを使い、接続する必要がある。実装するには、通信速度のパラメータや送信するデータのサイズを送受信側双方で設定する必要がある
【USB】
・タイプAと呼ばれるコネクタが採用されやすい
◯無線
【Wifi】
【3G/LTE】
・ver4.0から周波数帯がかわり、Wifiと干渉しなくなった。
・2.4GHz帯を使用する無線通信規格
・伝達速度が低速だが、低電力で稼働
【EnOcean】
データ処理
処理サーバ
1.データ分析
2.データ加工
・バッチ処理:貯めたデータを一定間隔で処理する。
【Apach Hadoop】
・Apach Hadoopの特徴2つ
①MapReduceと呼ばれるデータを効率的に処理する仕組みを持っている。MapReruceは効率的にデータを処理するための仕組み
Map、Shuffle、Reduceの3つの機能を持つ。
Map:処理対象のデータを振り分け
Shuffle:同じ種類のデータを振り分け
Reduce:分類されたデータをまとめる
②HDFS
・分散ファイル・システム
・複数のディスクにデータを分割して格納する。データを読みだすときは複数のディスクから分割されたデータを同時に読み出しを行う
【Apach Spark】
RDDと呼ばれるデータ構造で扱う。RDDはメモリ上で動作するため、とても早い。
◯ストリーム処理
データを保存せず、処理サーバに到着したデータから逐次的に処理する。
【Spark Streaming】
Apach Sparkのライブラリ。Apache Sparkをストリーム処理に利用可
【Apache Storm】
・Stormという処理するデータのことをTupleという。TupleのフローをStreamと呼ぶ。
3.データ保存
4.デバイスへの指令
データベース
データを保存し、活用しやすくする
【リレーショナル・データベース(RDB)】
・最も一般的に使われているデータベース
・SQLを扱う
・画像や音声などのバイナリデータを扱うのが不得意
【キーバリューストア(KVS)】
・NoSQLと呼ばれるデータベースの種類※NoSQLとは、SQLを利用しないデータベースの総称
・バリューというデータの値とキーの値のセットで保存される。
・データ保存先がメモリとハードディスクがあり、RedisというKVSがはメモリ、ハードどちらも保存先にできる。通常メモリ保存で、任意にハードへデータを格納する。
【ドキュメント志向データベース】
・NoSQL
・XMLやJSONといった構造化されたドキュメントの形式でデータを保存できる
・MongoDB
JSONデータを直接保存できる
JSONの値でデータ検索できる
その他
データ分析
・統計的分析
・機械学習
標準化活動
IETE - The Institution of Electronics and Telecommunication Engineers
ITU: Committed to connecting the world
OPEN CONNECTIVITY FOUNDATION (OCF)