ここでは、Rapsberry PiにGPSを取り付けて、緯度と経度を取得する方法を説明します。
用意するもの
ここでは、USB接続できるGPS 受信機を使用します。
Raspberry Piは、USB接続できるため、簡単にGPSを接続して、緯度・経度を取得することができます。
ここでは以下のGPSレシーバーを使用するものとします。
値段は4000円から8000円くらいになります。
出力はNMEA0183であることを確認してください。
NMEA0183は、GPSの出力フォーマットになります。
GPSを接続する
Raspberry PiにGPSを接続します。
USBポートに差し込むだけでOKです。
接続したら、以下のコマンドで、認識されているかを確認します。
$ lsusb
出力結果の例は以下になります。
自分の環境では、一番最後の行にSerial Port(シリアルポート)として認識されました。
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB Bus 001 Device 008: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
USBデバイスの認識が確認できたら、/dev/以下でシリアルポートとして認識されていることを確認します。
以下のコマンドを実行して、GPS接続後に増えたtty*を確認します。
$ ls /dev/tty*
増えたtty*がわからない場合は、GPSを接続する前と接続した後で比較してみましょう。
以降では、GPSは、/dev/ttyUSB0として認識されたものとして解説します。
GPSからのデータを確認
GPSをUSBに接続するだけで、すでに現在地の測位は始まり、PC側にデータを送信しています。
実際にGPSから送られるデータを確認してみましょう。
LinuxでSerial Port(シリアルポート)での送受信を行うには、cuコマンドを使用します。
インストールされていない場合は、以下のコマンドでインストールを完了しておきます。
$ sudo apt-get install cu
使用するGPSの通信速度(Baud rate)を確認します。
GPSが入っていた箱の裏か説明書に書かれているはずです。
以下では、通信速度(Baud rate)が4800bpsの場合で説明します。
以下のコマンドを実行すると、シリアル上に流れるGPSのデータを確認できます。
$ cu -s 4800 -l /dev/ttyUSB0
GPSのデータを表示すると、以下のようなデータが次々と表示されます。
$GPGSA,A,3,28,03,01,11,32,04,17,19,30,,,,1.8,1.1,1.5*3F $GPRMC,083818.000,A,3511.3282,N,13643.7373,E,0.12,359.87,040715,,,A*6E $GPGGA,083819.000,3511.3282,N,13643.7373,E,1,09,1.1,9.6,M,36.3,M,,0000*59 $GPGSA,A,3,28,03,01,11,32,04,17,19,30,,,,1.8,1.1,1.5*3F $GPRMC,083819.000,A,3511.3282,N,13643.7373,E,0.01,359.87,040715,,,A*6D $GPGGA,083820.000,3511.3282,N,13643.7373,E,1,09,1.1,9.6,M,36.3,M,,0000*53 $GPGSA,A,3,28,03,01,11,32,04,17,19,30,,,,1.8,1.1,1.5*3F $GPRMC,083820.000,A,3511.3282,N,13643.7373,E,0.00,359.87,040715,,,A*66 $GPGGA,083821.000,3511.3282,N,13643.7373,E,1,09,1.1,9.6,M,36.3,M,,0000*52 $GPGSA,A,3,28,03,01,11,32,04,17,19,30,,,,1.8,1.1,1.5*3F $GPRMC,083821.000,A,3511.3282,N,13643.7373,E,0.00,359.87,040715,,,A*67 ・・・・
これらのデータは、NMEA-0183フォーマットに従っており、緯度や経度、時刻が示されています。
NMEA-0183フォーマットは、「$」で始まり、「(改行(\r\n))」で終わっています。
使用しているGPSによっては、NMEA-0183フォーマットの一部のフォーマットをサポートしていないものもあります。
現在位置や時刻を知るだけならば、「$GPGGA」と「$GPRMC」だけを見ればよいです。
NMEA-0183フォーマットの詳細は、以下のサイトで確認できます。
http://www7.ocn.ne.jp/~mackey/mackey/navitra/nmea.html