Raspberry PiとNode.jsで作る独立稼働モバイルサーバ

2013年8月22日(木)
渡辺 知男

応用編:サーバpush型のカーナビのプロトタイプを作ってみた

これまでの経緯を踏まえ、プロトタイプを作成してみました。せっかくのモバイルサーバですから、走るサーバ「push型配信のカーナビゲーションシステム」をプロトタイピングしてみました。構成は以下のようになります。

図4: カーナビプロトタイプの全体システム構成概要

前述で説明したシリアル通信の部分に、USBタイプのGPSモジュールを接続するようにします。これで、GPS情報をRaspberry Piに取り込んで位置情報を取得できるようになります。サーバとしては取得した位置情報をGoogle Maps上に表示するだけで、アクセスしてきたブラウザ等では自車の位置が表示されるようになります。サーバアプリはGPSからの位置情報を受信すると、そのままクライアントに対してJSON形式の位置データをpush送信するようにしています。500msくらいの間隔で1回の更新が行われます。クライアント側では、位置情報が更新される際に前の位置からラインを引くようにしておき、軌跡が表示されるようにします。

せっかくなのでAndroidアプリも作ってみた

基本的にはAndroidやiPhoneでもChromeなどのブラウザからサーバのURLにアクセスすることで位置が表示されますが、せっかくなのでAndroidアプリを作成してみました。著者が作成したWebSocket用クライアントを利用して改良しました。サーバからJSON形式の位置情報がpushで送信されて来るので、端末のGPSを使うことなくMaps上に位置を表示するだけの非常に簡単なアプリになります。電池の消費量も抑えられますね。完成したプロトタイプを車に乗せるとこんな感じになりました(写真3)。GPSはUSBを延長してダッシュボードの上に貼り付けています。Android端末のケーブルはシガーソケットからの電源供給用です。

写真3: 車載サーバとしての走行試験環境

実走行試験をしてみた結果

さて、準備が整ったので実走行試験してみました。AndroidアプリとPCブラウザでのスクリーンショットと、実走行試験を動画撮影もしてみました。

図5: Androidアプリでの軌跡表示

図6: PCブラウザでの軌跡表示

実際に運転していても比較的安定して更新されますが、さすがに少しの遅延はあります。LTE(Xi)ではあまり接続できず3G通信(FOMA)となっていたようです。走行試験中は2回ほどネットワークが切断されたのか、サーバの反応が無くなってしまいました(リカバリは入れていません)。また、走行試験中にTwitterなどでURLを公開し、第3者にサーバにアクセスしてもらい、どこからでもリアルタイムに位置がバレる(笑)ことも確認できました。

このシステムのメリットは、以下のようなものが考えられます。

  • あくまでサーバが位置情報をpushするので、クライアントアプリとしてのマッシュアップの要素が大きい
  • 位置をキックに周辺情報やルート探索なども実装できる。
  • Android端末の場合はGPSを使用しないので電池消費量を抑えられる
  • 車のように何人かで移動する時でも情報やコンテンツのシェアが可能

このシステムを利用すると、車1台1台にURLが付くという面白いシステムができます。車載サーバとして発展させれば、様々な車両データを記録保存したり、配信したりできるようになります。

まとめ

記事の集大成として、Raspberry Piを使ったモバイルサーバを構築してみました。またそれを使った製品プロトタイプの作成を行いました。

いわゆる通常のPCレベルの性能が小型化することで、汎用技術を使った応用が比較的簡単に行えます。また今回の要素技術にNode.jsがありますが、これはHTML5の広義規格であるWebScoketを用いたpushサーバの実装になります。HTML5というとブラウザ依存がなくなり、Webの世界が広がるイメージがありますが、WebSocketのようなプロトコルを取り出して考えると、組込み機器などへの応用も幅広く考えることができます。特に今回のシステムは、クライアントではなく、サーバにGPSを接続し、サーバ自体が移動体センサーサーバになることで、情報をpush配信する。というところが面白いところです。その他にも3G通信網でのIPv6によるネットワーク・リーチャビリティを確保することで、M2Mとしての応用も考えられます。

クラウドが当たり前になりサーバがデータセンターにある時代から、手元に乗るクラウドサーバが実現できるようになりました。HTML5時代のシステムアーキテクチャを描き直すことで、Webだけではなくデバイスなどの機器も含めた広がりを考えてみることもできます。Raspberry Piはその可能性を十分に示してくれる魅力的なデバイスと言っていいでしょう。

フリービット株式会社 R&D部所属 元メーカ系組込み系エンジニア。今はRaspberry Pi、Android、Arduinoなど、WebとMobileとHardwareの組合せ系エンジニア。デモや講演なども承ります\(^o^)/
Twitter: @tomo_watanabe / blog : http://tomowatanabe.hatenablog.com/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています