突然ですが手持ちのデバイスを使って何か製作してみようと思い立ちました。今回はラズパイとGPSモジュールを使ってGPSロガーを作ってみようと思います。
と言ってもいきなりもの凄いものを作るのは難しいので、以下の3ステップに分けて製作してみます。
STEP.1 ラズパイのターミナルでGPSログデータを確認する
STEP.2 ラズパイ内部に保存したGPSログデータを後から確認出来るようにする
STEP.3 リアルタイムで位置情報を確認出来るようにする
というわけで、まずはラズパイのターミナルでAdafruit Ultimate GPSモジュールとの通信が出来るようにしていきます。
Contents
使う機器
ラズパイ
- 本体:Raspberry Pi2
- OS:Raspbian
GPSモジュール
ホストPC
- Linux Mint 17.2
機器の接続
図では省略していますが、USB-シリアル変換ICとラズパイのUSBポートを接続してください。
ラズパイの起動とログイン
ラズパイへのOSインストールと初期設定はすでに済んでいるものとします。また、ホストPCとラズパイは同一ネットワーク上にあるものとします。
ラズパイが起動した状態でホストPCのターミナルで以下のコマンドを実行します。
$ ssh pi@192.168.0.26 # (ラズベリーパイのユーザー名)@(ラズベリーパイのIPアドレス) pi@192.168.0.26's password: # パスワードは変更していなければ"raspberry"
以降、ラズパイ上で実行するコマンドは以下の様に表します(セオリーとは違うかもしれませんが・・・)。
pi $
Adafruit Ultimate GPSモジュールのデータを読み出す
ラズパイにログインした状態で以下のコマンドを実行します。
pi $ screen /dev/ttyUSB0 9600
すると、こんな感じのデータが流れてきます。
$GPGGA,120943.294,,,,,0,00,,,M,,M,,*7A $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,120943.294,V,,,,,0.00,0.00,280517,,,N*46 $GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPRMCで始まるレコードの3要素目が’V’の時はGPSを捕まえられていない状態です。これが’A’に変わるまで待ちます。
データの読み方
こちらが超詳しいです。
一つ注意点としては、GPSモジュールから出てくるデータは(緯度,経度)=(dddmm.mmmm,dddmm.mmmm)という形式(dは度、mは分を表す)ですが、Googleマップ等では、(緯度,経度)=(ddd.dddddd,ddd.dddddd)形式です。GPSモジュールで得たデータをGoogleマップで確認するためには、データを変換してあげる必要があります。データ変換は経度、緯度共にddd + (mm.mmmm / 60)とすれば良いようです(分のデータを60で割る)。
ラズパイから読みだしたデータを変換して、Googleマップで位置を確認してみましたがそこそこの精度は出ているようでした。
コメント