参考
Raspberry Piに「みちびき」対応GPSモジュールを接続(日記というほどでも)
GPSのNMEAフォーマット(hiramine.com)
環境
- Raspberry Pi ZERO WH
- Raspbian 9.4 (Stretch)
- Python 2.7.13
- 「みちびき」対応 GPS
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 ロガーを自作することができますね。