Raspberry Pi Zero WH で「みちびき」対応 GPS を使う


参考

Raspberry Piに「みちびき」対応GPSモジュールを接続(日記というほどでも)
GPSのNMEAフォーマット(hiramine.com)

環境

Raspi と GPS をつなぐ

参考にさせて頂いた記事の手順に従って進めました。
が、gpsmon を動かす必要はなかったので途中までの手順です。

GPIO ピンに GPS を接続する

接続はとっても簡単でした。
5V 端子から順に GPIO ピンに挿してあげるだけですね。

コンソールを serial0 から tty1 へ変更する

serial0 のまま使う方法を御存知の方いたら教えてください。

1. /boot/cmdline.txt を編集する

いきなり編集するのは危険なので、事前にバックアップするようにしました。

$ mkdir -p ~/default/boot
$ sudo cp -p /boot/cmdline.txt ~/default/boot/
$ sudo vi /boot/cmdline.txt

記述する内容は次の通りです。
元の記述は [#] をつけてコメントアウトしています。

#dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=94e60538-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

2. /boot/config.txt を編集する

こちらも事前にバックアップしました。

$ sudo cp -p /boot/config.txt ~/default/boot/
$ sudo vi /boot/config.txt

元のファイルに対して次の通り追記しました。

enable_uart=1
dtoverlay=pps-gpio,gpioin=18

3. /etc/module を編集する

こちらも事前にバックアップです。

$ mkdir ~/default/etc
$ sudo cp -p /etc/module ~/default/etc/
$ sudo vi /etc/module

追記した内容は次の通りです。

pps-gpio

以上で Python から GPS 情報を取得する準備が整いました。

Python で GPS 情報を取得する

まずは動作確認です。
簡単な直接コードを実行して、値が取得できるか確認しました。

import serial

s = serial.Serial('/dev/ttyS0', 9600, timeout=1)

for i in range(10):
    print(s.readline())

きちんと動いていれば、次のような結果が得られます。
NMEA フォーマットと呼ばれる形式のデータらしいです。

$ python tmp.py
$GPGGA,000331.000,3635.6925,N,13636.7993,E,1,7,1.14,47.6,M,34.9,M,,*6B

$GPGLL,3635.6925,N,13636.7993,E,000331.000,A,A*56

$GPGSA,A,3,17,08,03,22,01,194,193,,,,,,1.44,1.14,0.88*0C

$GPGSV,4,1,16,195,84,129,,03,67,123,26,28,66,250,25,22,57,072,15*4F

$GPGSV,4,2,16,01,49,042,15,193,44,173,23,17,43,315,21,11,41,068,*47

$GPGSV,4,3,16,18,24,059,,194,18,192,22,19,15,302,,08,14,112,18*4E

$GPGSV,4,4,16,06,14,256,,23,07,144,,30,05,222,,14,03,050,*7C

$GPRMC,000331.000,A,3635.6925,N,13636.7993,E,0.16,107.12,290918,,,A*68

$GPVTG,107.12,T,,M,0.16,N,0.30,K,A*3C

$GPZDA,000331.000,29,09,2018,,*5E

これで GPS ロガーを自作することができますね。