上位に戻る Andoroid GPSロガー & 速度計          & リアルタイム動態監視 初版20120610
更新20120616

  1. 概要
    アンドロイドのGPS機能を使って、動態監視のシステムを作ってみました。ある決まったコース上を走る車を監視したいなんて話があって、調べて見ると、大体が、物流用で監視周期が遅くて使えそうにありません。スマホのGPS機能を使えば、割と簡単そうだったので試しに作ってみました。1秒周期で、動態の位置を収集して、サーバ上に転送、パソコンからこの位置情報をGETして、パソコンモニター上の地図にプロットします。
    今のところ、実用になるかのか、用途があるのかなんとも状態で、無用の長物かもね・・・・。
    せっかくなので、ロガー機能と、速度計の機能をつけてみました。


  2. アンドロイド側ソフト

    数値と、バーで速度を表示します
    速度は、計算周期の移動距離から算出します。
    例えば10秒とすると、10秒間で移動した距離から算出
    表示は、1秒ごとに算出します
    加速度センサーは考慮していないので、衛星の捕捉状態で位置が微妙にずれるので、計算単位の時間を長くしています
    なので、まあ速度といっても参考程度です

    数値と、バーで高度を表示します
    1秒更新です






    緯度、経度、
    速度計算周期あたりの距離
    総距離
    を表示します



    ソフトを最初に起動したら、メニューから設定画面を表示して各パラメータを設定します

    @記録周期 : メモリカードに記録する周期を入力します。最低1秒ですが、1秒だと、1秒ごとにフラッシュメモリに書込むので、メモリの寿命に留意してください

    A速度計算周期: 速度を算出する計算単位。短いと値がばらつきます。長いと、早い速度変更に追いつきません。衛星が安定して捕捉できる場合は、短くてもOKです。
     
    A速度グラフ最大値: バーグラフの最大スケールです。

    B高度グラフ最大値: バーグラフの最大スケールです。
                        
    Cデータ収集を行う:チェックを入れると、SDメモリカードにGpsApllaのフォルダが作成され、その中に、指定した保存ファイル名+日付の名前で位置情報、速度、距離などが記録されます。パソコン(Windows)利用を想定してShiftJISコードです。
                        
    D省電力モードを無効にする:大抵、電池消耗対策で、なにも操作しないと、省電力モードに移行する設定になっていると思いますが、このモードに移行すると、GPSが機能しなくなるので、設定を追加しました。(もしかしたら、別の方法があるかもしれませんが・・。)

    Eサーバに位置情報を送出する:チェックを入れると、指定された周期で、FTPサーバに位置情報をアップロードします。

    F識別コード:サーバにアップロードするファイル名になります。任意の数字4桁で設定

    Gテストサーバを利用:こちらを選択すると、私の自宅のサーバを経由します。サーバと言ってもAtomCPUのパソコンなので、処理能力はショボイです
    転送された最後のデータは、サーバに残りますので、こちらを利用される場合は、ご理解の上ご利用願います。

    H以下のサーバを利用:別のサーバを利用します。プロパイダ契約を行っていれば、大抵、ホームページのサービスが付いていると思いますので、そのサーバを利用できます。通信できるかどうかを、別途ftpツールか、ieのftp接続で必ず確認してから設定してください
    通信コマンドは、別スレッドで動作させている為、通信できない場合は、キューが貯まりすぎて、スマホの動作がおかしくなるかもしれません。通信の確認が、取れない場合は、送信動作を停止させてください

    Iフォルダ名:ルートではなく、フォルダの配下にデータを格納する場合は、フォルダ名を記入します。フォルダ名は、必ず最後に / を入れてください
      例 [work/]

    Jデータ送信周期:ftpサーバに送信する周期を記入します。10秒以上で、2秒単位で設定します

  3. 収集データについて
    ■GPSロガーデータ
    スマホをストレージモードで接続して、パソコンから見ると、GpsApllaのフォルダが出来上がっており、開くと、GpsData2012xxxx.csvのデータが出来ます




    Excelで開くと、上記のように表示します
    A列は、年月日
    B列は、時間
    C列は、緯度
    D列は、経度
    E列は、高度
    F列は、計算周期の距離(km)
    G列は、速度(km/h)
    H列は、総距離(km)
    I列は、総稼動時間(Sec)
    J列は、GPSの状態


    ■FTP送信データ
    ftp送信にチェックを入れると、上記とは別に、GpsData.csv(日付の入っていないデータ)というデータが出来上がります。



    1行目は、ヘッダ情報で、日付と時間が記入されます
    2行目以降は、A列が緯度、B列が、経度、C列が、高度になります
    1秒ごとのデータが記載されています。10秒周期に設定してあるので、10個の位置データがあります。



  4. Andoroidプログラムのダウンロード
    動作可能なバージョンは、2.2以降です
    下記プログラムをインストールしてください。許可を与えないとインストールできません。


    GpsAplla V1.0 初版





  5. パソコン側ソフト

    起動すると以下のようなフォームが表示されます

    地図のデータと、座標が2点必要です。googleのアカウントがあれば、マイプレイスから、座標を2点選択して、緯度経度を取得します。
    又は、地図上の緯度経度を表示してくれるホームページがありますので、それを利用してもいいでしょう。
    下のサービスを利用しました
    http://www5.ocn.ne.jp/~botan/map_g.html

    上記のページで、利用したいエリアの住所を選択して地図を表示させます。
    地図上の左上のポイントを選択して、ポイントの緯度経度を取得します。
    同じく、右下のポイントを選択して、緯度経度を取得します。
    座標を控えたら、Alt+PrintScreenのキーを押して、画面のコピーを取ります。
    ペイントに貼り付けて、必要な部分を切り抜いて、ビットマップで保存します。

    @地図選択:上記で作成した地図データを選択します

    A地図画面サイズ:地図画面の大きさをピクセルで設定します。上記で、切り抜いた大きさに合わせたほうが、にじまないで綺麗に表示できます
    切り抜きサイズと違っても、地図画面サイズに合わせて拡縮されて、表示されます。

    B地図表示:地図画面を表示させます

    C左上座標:ボタンを押した後、地図画面の左上ポイントを選択します。合わせて、先ほど控えた緯度経度の座標を入力します

    D右下座標:ボタンを押した後、地図画面の右下ポイントを選択します。合わせて、先ほど控えた緯度経度の座標を入力します

    E処理周期:スマホ側で設定した周期に合わせます

    F識別番号:スマホ側で設定した番号に合わせます

    GFTPサーバ:スマホ側で設定した内容に合わせます


    以上で準備が整いましたので、開始ボタンを押して、処理をスタートさせてください
    スマホも起動させます
    GPS情報が取得されると、スマホから位置情報が送出されます
    検知すると、右上のテキストボックに取得したむねのメッセージが表示されます
    データが取得されると、赤のターゲットが表示されます。1秒周期で更新します






  6. パソコン側のソフト

    DoutaiKanshi_V1.0.zip 初版

    DoutaiKanshi_V1.1.zip 2012/06/16 回線に遅延がある場合に、ftp転送できなくなるバグを修正しました


  7. その他
    このソフト、1人で検証するには、非常に苦しいス。よめはんに頼むのも、パソコンばっか相手しているので、頼もうにも予想される結果が・・・・・。
    なので、あんまり検証できていません
    一応処理周期を10秒に設定すると、最大で15秒の遅れで、表示されます。(プログラム上は、)
    後、速度計ですが、車とか、新幹線で測ってみました。車の場合、車の速度計より、5%以上値が小さかったです。プログラム見直しましたが、特におかしなところは見当たらず。どうも、車の速度計は、実速度より、大きく表示されている模様・・。
    ちなみに、このソフト 都会のように、ビルが建っていると、衛星の電波が途切れて捕捉衛星が切り替わり、速度はかなり暴れます。
    スマホには、加速度センサーが付いているので、傾きセンサーと合わせれば、必要な加速度を算出できそうですが、進行方向以外にも、上下方向などにも振れるので、かなり高速で処理して、振れ方向を検出しないと難しいそうです。

    2012/06/16 独りで検証するのが難しいので、会社のDocomoのモバイルモデムを借りてきて、ノートで移動しながら確認しようとしたところ、ftpエラーになり、えらい苦労しました。2つのタイマーを使って2つの処理をさせていたのですが、タイマーでは、お互いの処理が干渉するようで、マルチスレッドを実装しました




    まだまだ、このソフト未完成です
    ご意見、ご希望ありましたら、掲示板にでも投稿してください