第6章 IoTシステムのプロトタイピング開発
6-1 IoTプロトタイピング開発検討概要
p232 プロトタイピング開発
プロトタイピング開発とは,一般に実働するモデルを早期に試作する手法とそのプロセスのことを意味し,製品開発の設計段階での事前検討として位置づけられる.その目的・効果として,モデルの作成と検証設計方法の妥当性の検証,一部機能の先行検証,後工程での出戻り削減,開発工数の削減などが挙げられている.
p232 メイカームーブメント
世界的に普及し始めたDIYやメーカームーブメントの影響もあり,誰もが簡単に安価で短時間でものづくりできる環境が整ってきた.さらにオープンソースハードウェアのマイコンボードArduino(アルディーノ)や,安価で高機能なOSを持ったコンピューターボードのRaspberry Piなどの出現も,IoTシステムプロトタイピング開発を後押しする要因になっている.
p236 データフォーマット
センサデータをIoTサーバにアップするときの検討すべき項目の1つにデータフォーマットが挙げられる.CSVやXMLさらにJSONのいずれかが多く使われるようになってきている.
CSVのメリットはデータがコンパクトで処理時間が早いこと,デメリットは構造化データに弱いことである.
XMLのメリットは構造化データに対応し長期間の保存が可能であり,トランザクション処理向きであること。デメリットは処理時間がかかることや,レコードサイズが大きいことである。
JSONのメリットは構造化データに対応し長期保存が可能であり,エスケープ処理に対応していることである.デメリットはやや処理時間がかかることや,CSVに比べてレコードサイズが大きいことである.
6-2 IoTプロトタイピング・ハードウェア環境
p240 オープンソースハードウェア
IoTシステム・プロトタイピング開発で利用できるハードウェアはオープンソースハードウェアの概念の普及によって増加している.オープンソースハードウェアとは回路図を公開したハードウェアマイコンボード等のことで他社に無償の統合開発環境を提供し広く普及展開していくことを目指している.IoTシステムのプロトタイピング開発でもこの概念が広く取り入れられるようになっている.
p241 GPIO,シリアルポート(UART,I2C,SPI)
IoTシステムに関するハードウェア構成として,センサ類やアクチュエータ類,それを制御するマイコンボードやコンピューターボード,さらにインターネット接続通信機器類がある.
これらハードウェア群の様々な組み合わせによる接続・連携の手段は有線によるものがGPIO,PWMアナログ入力やシリアルポート(UART,I2C,SPI等)による通信となり,無線(ワイヤレス)によるものがIoTエリアネットワーク無線通信と広域通信網(WAN)のモバイル通信のいずれかになる.
p246 ワイヤレス通信機器を使う上でのポイント
(a)電源供給
ほとんどのワイヤレス通信機器はセンサやアクチュエータを利用するにあたり,電源(バッテリ)供給への配慮が必要になる.プロトタイピング開発においても,何年間または何ヶ月間使えるか,あらかじめ通信状態やセンサ値取得状態時での消費電力を考慮した上で,電源供給能力(電源能力:wh)を計算することが必要である.
(b)電波強度
電波強度にはアンテナの種類や接続時の向き(指向性),互いの機器間の遮蔽物や障害物などが関係してくる.アンテナ特性等については事前にわかることもあるが,利用する現場によって電波強度が異なってくるため,遮蔽物・障害物はできるだけあらかじめ調査しておく必要がある.特にワイヤレス通信においては,電波強度は水分によって減衰することから,秋や冬には電波がよく通っていたとしても,春や夏など樹木が生い茂る季節になるとなかなか電波が届かないといったこともある.
(c)通信距離
IoTエリアネットワーク用の通信機器は同じプロトコルの通信機器同士で繋がる.最近では,Wi-Fiを始めBluetooth,ZigBee,EnOcean,Wi-SUN,Z-Wave,Dustと様々な規格やプロトコルに準拠した機器が存在する.これらの通信距離は機器の種類によっても異なるが,近距離(10m以内)から中距離(100m以内),それに遠距離(1kmまで)と通信距離に応じた仕様のものがあり,それぞれ使い分けて利用することが必要となる.
(d)通信頻度と通信エラー
ワイヤレス通信で送受されるデータの内容は,単にスイッチのオンオフを制御するものもあれば,センサ値さらにはカメラ画像などの大量データに至るものなど様々である.少量のデータ受信だとさほど通信エラー処理は問題ないが,大量なデータであればエラー処理も複雑になってくる.
(e)トポロジー
IoTエリアネットワークのワイヤレス通信では,通信機器間のトポロジ構成が重要となってくる.IoTシステムではこのトポロジを検討する目的でプロトタイピング開発を行う場合も少なくない.トポロジを考える場合には,現場の利用環境や機器設置場所,機器間の親子関係,中継機の配慮,通信距離,消費電力などが関係し,最適化を目指す必要がある.
p247
(a)WAN上通信
IoTデバイスとしては,できるだけ出費を抑えるためにWAN用の通信機器を利用は避けたいところだが,屋外や山間部等などに利用される場合はほとんどWANの使用が必須となってくる.また屋内でも利用するケースとして,社内LANとの接続を断ち切るためのセキュリティ対策や,電源ケーブルやLANケーブルなどの配線工事をなくす対策などを目的とした仕様がある.
(b)(c)WANの利用目的
インターネットと直接つながることが優位点となる.
(c)WAN上のモバイル機器
IoTシステムのプロトタイピング開発で使えるWANのモバイル機器は,安価なSIMカードを利用する3G通信の利用が主流となっている.現在この3G通信モジュールを使ったプロトタイピング機器としては,Arduinoとその互換機で使える3Gシールド,3GIM,ラズベリーパイ上で使える3GPIといったものがある.
6-3 IoTプロトタイピング・プログラミング事例
省略
6-4 IoTプロトタイピング・ソフトウェア環境
p267 IoTサーバサイドのソフトウェア開発環境
(1)PHP
利点は,多くのPaaSタイプのクラウドサービスで標準でPHPが提供されているため,簡単に始められる.また,WebUIのフレームワークが数多く提供されており,見栄えの良いWeb画面を作りやすい.しかし,ブラウザサイドの処理はJavaScriptで書く必要がある.
(2)JavaScript
利点は,ブラウザサイドの処理を含めて全てJavaScriptだけで開発できることである.また,JavaScriptと相性の良いNoSQLデータベースであるMongoDBを簡単に利用できる.一方で,コーディングに慣れが必要であることが欠点である.また,大規模開発の際は多言語に比べて厳密にルールを規定し,順守する必要がある.
(3)Ruby
利点は,短く可読性の高いコードが書けることである.一方で,PHPやJavaScriptに比べてユーザが少なく,参考資料が少ない.
6-5 IoTプロトタイピング開発の課題・対策
p274 センサ値の精度,誤差,誤動作
取得したセンサ値は,正確な値との間に誤差が生じる.例えば,温度センサではセンサ部品の個体差や供給する電源電力の誤差,配線ケーブル長,取得時間間隔などで差異が出ることもある.光センサでは,太陽光の環境下で捉えるものと屋内照明機器の環境下で捉えるものとで誤差の幅も大きく異なる.
その対策として,前後のデータ値と比較判断を行う処理や,数回取得して平均値を採用する処理,一部の最大値と最小値を除いた平均値を採用する処理,ソートして中央値を取る処理,などのアルゴリズムを検討するとよい.
p275 センサ値取得の間隔とタイミング
センサ値の取得間隔は,IoTデバイスの目的に応じた内容で調整対応する必要がある.センサ値を常時取得したい場合もあるが,変化がそれほどなければ待機時間を設けてセンサ取得を中断することも必要である.
p275 センサ値の取得時刻
多くのIoTデバイスでは,センサ値を取得した時刻と,IoTサーバなどにデータをアップロードした時刻が異なる場合がある.正確なセンサ値取得時刻を必要とする場合は,IoTデバイスに正確な時刻が取得できる機能を持たせ,IoTサーバにこれらをアップするだけでなく,IoTデバイス自体にローカルなメモリ機能を持たせておく必要が出てくる.センサ値を取得するまでに時間がかかる場合は,時刻を取得してセンサ値を取得するのではなく,センサ値を取得できた段階で時刻を取得する順番で取得時刻を記録するといった配慮も必要となる.
p275 センサのキャリブレーション
センサの種類によっては,キャリブレーション(初期設定)が必要である.キャリブレーションを行わないままでいると誤差が発生し,正確なセンサ値を取得できなくなっていく.具体的にどのようなキャリブレーションをするかは,センサの使用を確認して設定することが必要となる.
参考
IoT技術テキスト第3版
【MCPC】第6回IoTシステム技術検定のうろ覚え過去問
https://www.gg-sikau.com/?p=325
IoTシステム技術検定中級 テキスト第2版抜粋 音声読み上げ用
https://qiita.com/sxnxhxrxkx/items/bda596a4a6abc2504385#%E7%AC%AC1%E7%AB%A0-iot%E6%A6%82%E8%A6%81
難なく MCPC IoTシステム技術検定試験(中級) に合格したい