技術は深し、されど

過去10回に渡り進めてきた本コラムもいよいよ最終回です。

本連載では、BLEを中心に据えて話を進めてきました。前半は、概念や基礎知識を分かりやすくお伝えすべく、身近にあるスマートホンを事例にあげました。後半は、知識や技術を身につけるには、体得が必要ということで、PSoC BLE Pioneer kitを使ったBLE活用方法をお伝えしました。

PSoC BLE Pioneer kitの開発環境の操作手順にも触れたこともあり、また、入門編ということもあり、IoTの「Things」のさわりの部分で留まっています。

BLEに絞って言えば

  • バッテリーを長持ちさせるためのこまめな電力制御
  • 盗聴や改ざん防止のための、セキュリティ(認証/署名/データ暗号化)対応

は、PSoC BLEでサポートしているにもかかわらず、触れずじまいです。

また、本連載7回でビーコンを作りましたが、流したデータは作られたデータでした。本来なら、温度や湿度といった活きたデータを、センサを使って取り出す必要があります。

最近のセンサは、内部でアナログ-デジタル変換して、デジタル情報として出力するタイプも存在します。その場合、センサーデバイスとCPUの間の通信として、多く利用されるのが、

  • I2C(I2CまたはIICとも表記される)
  • SPI

です※1

※1 本連載8回で紹介した、センサビーコンは、PRoC(PSoCの親戚)と温度・湿度センサで構成されているのですが、PRoC内CPUとセンサ間は、I2C規格で接続されています。

連載の中でも用語は紹介しましたが、技術には触れずじまいでした。

これらの要素は、製品化・実用化するにおいては、必要不可欠なものとなります。またまだ探求は続きます。

許されるのであれば、本連載を継続してお伝えしたいところではあるのですが、残念ながらそうはいきません。

ならばということで……

筆者は、PE-BANK/IoT研究会を主催しています。会の活動内容や技術解説をPE-BANK/AnketというWebサイト上の広場を通じて、発信しています。

BLEについて、本連載より掘り下げて解説していますし、今後もしばらくBLEの話題が続きます。I2C/SPIについても、研究会レポートとして触れています。よろしければ、そちらもご覧ください。

知識・技術を自分のものにするには、学んだ知識・技術を踏まえたガジェット(おもちゃ)を作ることだと筆者は考えています。できれば、持てる知識や技術の120%程度高めのテーマを設定することをおすすめします。あまり欲張ってはいけません。楽しく知識や技術を広げることにも繋がります。

ということで、最後にもう少しだけ実行環境をいじってみましょう。

ガジェット化してみよう

第8回「ビーコンオブザーバを作ろう」で紹介した、温度・湿度センサビーコンを使った実用的な(?)ガジェットを紹介します。

実行環境のご提供

本稿で紹介する実行環境を以下のリンクからダウンロードいただけます。ぜひ、こちらも参照しながら、解説をご覧ください。

なお、サンプルアプリケーションは、利用する環境によっては動作しない場合があります。お問合せへの対応は難しいため、大変恐縮ですが、動作しない場合は、周囲の経験者などに支援してもらってください。こちらの条件にご同意のうえ、ダウンロードをお願いいたします。

>> 実行環境ダウンロード (要 IT Search+会員登録)

手元に5個のセンサビーコン※2がありますので、室内各所の温度・湿度を1つのビーコンオブザーバに集めたいと思います。また、第8回のコラムでは、受信データをPC上のターミナルエミュレータ上に表示させました。

しかしながら、これではPCが常に必要ですし、表示が流れるので、稼働性・可読性が良くないですね。

※2 CYALKIT-E03を購入するとセンサビーコンを5個手にいれることができます。

そこで、表示器をPSoCベースボード上に搭載します。今回は、比較的安価に入手できて、実装も比較的容易な、キャラクタ液晶表示器(キャラクタLCD)を使います。

5個+1個のセンサビーコンと、キャラクタLCDを搭載したPSoC温度湿度センサガジェットは、図1の様になります。

図1 : PSoC温度湿度ガジェットとセンサビーコン

ユーザーSW2を押下することで、センサビーコンが順次選択されます。

ID0には、本連載7回目で紹介したダミービーコンのドングル版※3を割り当てています。動作確認に利用できますね。

※3 ダウンロード提供している実行環境の中にドングル版ビーコン実装を含めています。

また、以前は扱わなかった受信信号強度(RSSI)を用いた、近似距離表示も行っています。

図2 : LCD画面拡大( Dm: 距離[m]、T: 温度[℃] 、H:湿度[%] )

さらにThings入門からはそれてしまうのですが、IoTというタイトルを冠していますので、インターネットを通じて、集めたデータをクラウドにアップすることにもトライしてみました。

お手軽にLinuxサーバーを構築できるRaspberry Piを利用します。今回は、Wi-FiやBluetoothインタフェースを標準で用意しているRaspberry Pi3モデルを選択しました(Bluetoothをサポートしていないモデルでも、USBドングルタイプのBluetooth4.x準拠アダプタを用意すれば、BLE通信は可能です)。

BLEは無線ですので、先のガジェットとの共存はもちろん可能です。

図3 : Raspberry Pi3と センサビーコン

クラウド側は、IoTデバイスとの接続を比較的容易に実現できるサービス「IoT Hub」を提供しているMicrosoft Azure※4を利用します。

※4 Microsoft Azureは、クレジットカードの登録・アカウント設定は必要ですが、期間限定の無料お試しが可能です。

IoT Hubは、ローカル側にAzureが用意している開発環境(SDK : Software Development Kit)を利用したプログラムを作成すれば、クラウド側のIoT Hubサービスとの連携が図れるサービスです。C/C++、C#、Java、node.js、Python用のSDKが提供されています。

中から、最近人気が高いインタープリタ型言語Pythonを選択しました。なお、誌面の関係で触れませんが、Raspberry Pi3には、Bluetooth用のライブラリである「BlueZ」、および、同ライブラリをPythonから利用できる様にする「pybluez」もインストールしています。

もちろん、PythonベースのIoT Hub SDKもインストールしています。

図4 : Azure IoT Hub 管理画面

今回は、クラウド上のデータベースに登録するに留めていますが、node.jsを使ってのWebブラウザ上でのグラフ表示や、今はやりの機会学習を適用させて、有益なデータパターンを見つけるなんてことも可能です。

先に紹介しましたIoT研究会でも、こうした上流テーマを扱っていく予定です。お披露目できる形になりましたら、Anketやこの場を通じて紹介していきたいと思います。

ひらめきを形に

私の貧弱な発想と誌面の関係で、センサガジェットは、あまり広がりを持たせることができませんでしたが、みなさんは、もっとユニークな活用法をひらめいたのではないでしょうか。

是非、時間を作って、そのひらめきを形にしてみてください。

形にすることで、わくわくが起こりますし、形にしたことで達成感が生まれます。そうして感じたわくわくや達成感がまたあらたなひらめきや行動を呼び起こし、知的好奇心の充足循環へと繋がります。

筆者は、エンジニアとしてもそれなりの年輪をかなり重ねてきていますが、このわくわくや達成感を味わいたく、今も仕事外でのモノづくりにチャレンジしています。宇宙エレベータや、衛星開発もその1つです。

最後に

一年に渡って、お読みいただきありがとうございました。

本コラムが、子供のころ感じたものづくりの楽しさを再認識するきっけとなり、豊かなエンジニアライフを送るための一助となれば幸いです。

また、お会いできることを楽しみにしています。

著者紹介

飯田 幸孝 (IIDA Yukitaka)
- アイアイディーエー 代表 / PE-BANK 東京本社所属プロエンジニア

計測機器開発メーカ、JAVA VMプロバイダの2社を経て、2007年独立。組込機器用ファームウェア開発に多く従事。2015年より新人技術者育成にも講師として関わる。PE-BANKでは、IoT研究会を主宰。

モノづくり好きと宇宙から地球を眺めてみたいという思いが高じて、2009年より宇宙エレベータ開発に、手弁当にて参画。 制御プログラムを担当。一般社団法人宇宙エレベータ協会主催「宇宙エレベータチャレンジ2013」にて、世界最長記録1100mを達成。

宇宙エレベータ開発のご縁で静岡大学の衛星プロジェクトStars-Cに参画。2016年12月、担当ユニットが一足先に宇宙に行き、地球を眺める。