2014年2月26日水曜日

AdafruitのGPSモジュール

AdafruitのGPSモジュールを購入しました.

購入したものは以下の3つ:
とりあえず,Adafruitのサイトに従ってテストしてみました.

アンテナを接続し,ブレッドボード経由でArduino UNOに接続.
  • PPS → LEDをつないでGNDに
  • VIN → Arduinoの5V出力に
  • GND → ArduinoのGNDに
  • RX → ArduinoのRX(pin 0)に
  • TX → ArduinoのTX(pin 1)に
このモジュールはPPS(pulse per second)が出るので,これを確認するためにLEDをつないでおきます.
0番ピンと1番ピンがシリアル通信としてUSBのI/Oと共有されているので,GPSモジュールのTXをArduinoのTXに,RXをRXにそれぞれつなげると,GPSモジュールからの出力がArduinoからのシリアル出力として,そのままUSBでパソコンに送られるので,パソコンで開いているArduino開発環境のシリアルモニタで表示されるという仕組み.

で,Arduinoのシリアルモニタに表示されるのが以下のようなNMEAデータです.
仕様はこちらを参照.

$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,102232.095,,,,,0,0,,,M,,M,,*44
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,102232.095,V,,,,,0.00,0.00,250214,,,N*41
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,102233.095,,,,,0,0,,,M,,M,,*45
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,102233.095,V,,,,,0.00,0.00,250214,,,N*40
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,102234.095,,,,,0,0,,,M,,M,,*42
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,02,31,,,42,25,,,23*79


$GPGGAの行にある102232.095というのが,UTCで10時22分32.095秒という時刻.20分くらい経つと,ちゃんとGPS衛星をつかまえて,以下のような表示に変わりました.

$GPRMC,104121.000,A,3519.5265,N,13927.1682,E,0.28,165.36,250214,,,A*6D
$GPVTG,165.36,T,,M,0.28,N,0.51,K,A*34
$GPGGA,104122.000,3519.5265,N,13927.1681,E,1,6,1.52,81.5,M,39.6,M,,*62
$GPGSA,A,3,23,25,29,31,16,32,,,,,,,1.74,1.52,0.85*02
$GPRMC,104122.000,A,3519.5265,N,13927.1681,E,0.33,165.36,250214,,,A*67
$GPVTG,165.36,T,,M,0.33,N,0.60,K,A*3C
$GPGGA,104123.000,3519.5265,N,13927.1680,E,1,6,1.52,81.5,M,39.6,M,,*62
$GPGSA,A,3,23,25,29,31,16,32,,,,,,,1.74,1.52,0.85*02
$GPGSV,3,1,12,31,72,027,31,29,40,052,18,16,29,262,24,14,28,170,*7C
$GPGSV,3,2,12,25,17,059,13,21,15,120,16,23,13,320,29,27,12,205,19*77
$GPGSV,3,3,12,32,09,250,22,20,01,283,,193,,,,34,,,*43
$GPRMC,104123.000,A,3519.5265,N,13927.1680,E,0.35,165.36,250214,,,A*61


この時点で10時41分23.000秒.PPSもちゃんと出力されているのが確認できます.



同じ行にある,3519.5265,Nと13927.1680,Eが位置のデータだそうです.
北緯35度19.5265分,東経139度27.1680分となります.google mapで表示するには単位変換が必要らしいので,下記のように計算.

北緯35度19.5265分 = 35 + (19.5265 /60) 度 = 35.3254 度
東経139度27.1680分 = 139 + (27.1680 / 60)度 = 139.4528 度

で,google mapを
http://maps.google.co.jp/maps?q=35.3254,139.4528&hl=ja
と呼び出すと,現在地が出ました.

しばらく取り込んだNMEAデータをファイルに保存してgoogle earthで表示した結果がこれ.
やはり結構ぶれてるみたいです.

今日はここまで.


ブログを始めました.

ぼちぼち追加して行く予定です.