« GPS測位情報を聞いてみた | トップページ | GPS受信モジュール・まとめ »

2013年10月17日 (木)

根性でGPS情報を読んでみた(訂正・補足あり)

(根性はともかくとして)根気はあんまり必要ありませんでしたので前回の続きを書きます。

こういう記事をご覧になってなんでそんなめんどうなことをするのだろう、レベルコンバーターを通してPCのRS232に接続すれば済む話だろうとか世の中にはPICというものかあるのにとかいろいろ思われそうですが、やりたいことは測位情報を読取ることより録音・録画に記された掩蔽の時刻=位置を正しく知るということですからぜんぜん意味がないことではないような気がしないでもないです。

--------

GPSモジュールの1PPS出力はとても正確なようです。でもそれでわかるのは正しい「秒」のタイミングだけであって時刻まではわかりません。GPSモジュールを星食観測に使おうとすると時刻を1PPS出力以外の方法で知る必要があります。

ここではGPS受信モジュールGM-316のTXA端子のデフォルトの__つまり垂れ流しの__出力データを調べました。今回はそのデータを録音して調べているのですがもう少し発展させて動画(画像)に時刻の情報を書き込むことも検討中です。

--------

前回の話

  「GPS測位情報を聞いてみた

の話をもう少し詳しく書きます。

測位情報=TXA出力は毎秒1PPS出力から0.3秒ほど遅れて送出されます。UTCを知るために必要なGPGGAというメッセージは毎秒送出されるデータの先頭にありますので好都合です。

なおこの記事で示した波形はTXA出力でイヤフォンを駆動しその音を録音したものです。直接電気的に接続して録音すればボーレートから見て矩形波になりそうなのでもっとわかりやすくこの記事に書いたよりもっと簡単だと思います。

TXAを録音したものの波形を見るとこうなっていました。
$池袋駅南口の天文計算

上側のひげを1、下側のひげを-1、ひげが出ていないことを0で表すと

 0 0 -1 1 0 -1 1 0

となっています。

(この波形は位相が逆なので)上側にひげが出ていればレベルが下がったつまり出力が0になったことを、下側にひげが出ていればレベルが上がったつまり出力が1になったことを意味しています。
(最初のスタートビットのところでレベルが0になっていることを考慮にいれると)レベルは

 0 0 1 0 0 1 0 0

となっていることがわかります。
(これが左右どちらから見ても同じなのであんまりいい例ではないのですが)これを右側から二進数としてみたものが送られているデータ(キャラクター)になります。
16進でいうと24Hのキャラクターつまり“$”です。

これをずっとスタートビットのところから繰り返して行けばGPSモジュールGM-316からどういうデータが送出されているか知ることができます。そしてその中には私がもっとも知りたい時刻(UTC)も含まれています。

------

書くのは簡単ですがじっさいにやるのは根気が要りそうです。そこで得意(?)のExcelを活用します。
上の図のひげの出方を黄色いところに書き入れると上に書いた操作を行ってキャラクターに変換してくれるものを作ります。GPGGAというメッセージを解読(?)してみました。このメッセージはメッセージタイプのあとすぐにUTCが出力されます。

そしてメッセージの最初の部分はこうなりました。
(下の図では「1bitの幅を20msecにしてデータを読み取りやすくするため」とありますが「1bitの幅を0.2msecにしてデータを読み取りやすくするため時間軸を4800/5000に短縮してあります」が正しいです。4800というのは送出されるデータのボーレートです)
池袋駅南口の天文計算

071015.000つまり07h10m15.000sと無事UTCタイムを取得することができました。

現実には知りたいのは秒だけだと思います。最初のスタートビットから0.0252秒後経って2桁分だけを読めば(この例だと)15秒だということがわかります。もし“分”まで知りたかったら0.0206秒後から4桁を読取ります。
(4800/5000に短縮した状態であればそれぞれ0.0242秒後、0.0198秒後です)

なお、この後には緯度・経度が出力され、さらに計算に何個の衛星のデータを使ったかなどというちょっとマニアック(?)なデータもあります。

エンコード用のExcelファイル
  GPGGA.xls

使った音声データもアップロードしようと思ったのですが、よく考えたら緯度・経度が入っているのでやめにしました (^^;;

(2013-10-17 18:18:46)
--------

間違っていたところ(「秒」を知りたいときのデータ送出開始後からの経過時間)や誤解を招きそうなところを修正しました。

(2013-10-19 22:36:29)
--------

関連記事

  JJY
  「JJYの報時信号の送出方法」 編集
  「JJYを受信したい」 編集
  「JJYの受信法」 編集

  電波時計モジュール
  「JJYを受信する」 編集
  「電波時計モジュールを使ってみた(1)」 編集
  「電波時計モジュールを使ってみた(2)」 編集
  「電波時計モジュールで正確な「秒」を取得できない理由」 編集

  GPSモジュール
  「GPSモジュールを使ってみた」 編集
  「GPSとBPM」 編集
  「JOAKとGPS」 編集
  「GPSモジュールを使ってみた(2)」 編集
  「GPS測位情報を聞いてみた」 編集
  「根性でGPS情報を読んでみた」 編集
  「GPS受信モジュール・まとめ」 編集

  うるう秒
  「うるう秒の研究」 編集
  「無責任にうるう秒について考えてみた」 編集

  掩蔽
  「掩蔽(星食)参考文献・関連記事一覧」 編集

« GPS測位情報を聞いてみた | トップページ | GPS受信モジュール・まとめ »

編集用」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« GPS測位情報を聞いてみた | トップページ | GPS受信モジュール・まとめ »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ