Make.

GPSの接続

Pocket

ここでは、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

Pocket