ラズベリーパイ zero GPSロガー作成 その2 ソフトウェア環境を構築する
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言語でアプリを作る予定です。うまくいったら投稿します。