ラズベリーパイ zero GPSロガー作成 その2 ソフトウェア環境を構築する

2020年7月16日

GPSログを取るプログラムを作る前に、GPSをラズベリーパイ(Raspberry Pi)のOSに認識させます。

以下のサイトを参考にさせて頂きました。

Raspberry Piに「みちびき」対応GPSモジュールを接続
Raspberry Pi3のPythonでGPSを扱う

今回の作業は、上記の例とまったく同じではありません。自分なりに変更している部分があります。

1.シリアル機能を有効にする

GPSチップとラズベリーパイ zeroの通信は、シリアル通信を使用します。そこで、ラズベリーパイ zeroのシリアル通信を有効にします。以前に使ったrazupi-configを立ち上げます。

5番の「Interfacing Options」を選択します。

P6の「Serial」を選択します。選択後は有効もしくは無効の設定画面が表示されるので、有効にします。

次に、/boot/cmdline.txtを開きます。

「console=serial0,115200」の部分を削除して、Serial0をコンソールとして使わないようにします。
削除後にリブートします。

2. 1PPS出力を有効にする

GPSからのデータ受信には1PPSを使います。1PPSがGPS精度に影響する度合いは良く分かりませんが、C言語のプログラムの際に必要なので、環境設定します。


※C言語でプログラミングする時は、ここで行う設定が競合することが分かりました。C言語でGPSをプログラムする際は、ここの設定をコメントにしてください。

/boot/config.txtを開く

dtoverlay=pps-gpio,gpiopin=18

最終行にPPSの定義を記述します。GPIOの18番を使うので、それを指定します。

/etc/modulesを開く

最終行に「pps-gpio」を記述します。

これで、1PPSの設定が完了です。

3.gpsdで動作確認する

gpsdとpps-toolsのインストール

本当に環境ができたのかを確認するために、gpsdとpps-toolsをインストールします。

sudo apt-get install gpsd gpsd-clients pps-tools

をターミナルで入力します。

/etc/default/gpsdを開く

DEVICES="/dev/serial0 /dev/pps0″
GPSD_OPTIONS="-n"

を記述します。

gpsdを有効にする

ターミナルで以下のコマンドを入力します。

sudo systemctl enable gpsd.socket

ここで、再起動してください。gpsdが有効になります。

動作確認

gpsmonを起動します。ターミナルで「gpsmon」と入力します。

緯度・経度が取得されていることを確認します。また、PPSの項目に値が入っていれば、1PPSも動作しています。

ここまでうまくいったでしょうか。私は1PPSの受信がうまくいかなくて難儀しました。原因はカンマをピリオドにしていたせいで、老眼にはほんと悩まされます。

これでgpsdに含まれる「gpxlogger」を使えばログが取れるのですが、私はC言語でアプリを作る予定です。うまくいったら投稿します。