秋月のGPSモジュールAE-GPSを使って緯度と経度の情報をPythonで取得します。
準備
配線はUSBシリアル変換を使って、パソコンと接続する。接続方法はマニュアルに書いてある。
GPSモジュール付属のソフトからRMC(GPRMC)のみ出力する設定にしておく.
1 |
pip install pyserial |
実行
pythonをインストールした、windows power shell上で実行する。ここで、COM1はシリアルポート番号なので変更する。
1 |
py GPS_recieve.py COM1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# How to use # pip install pyserial # # シリアルポートの番号を引数に追加して実行する # py GPS_recieve.py COM1 # # GPSはNMEAフォーマットで送出される. # GPRMC(データタイプ),UTC(hhmmss.ss),V(警告)A(有効),緯度(lat)(ddmm.mmmm),北緯or南緯,経度(lon)(dddmm.mmmm),東経or西経,移動速度(kt),真方位,UTCでの日付(ddmmyy),磁北と真方位の差,差の方向,モード(N:データなし,A:自立方向,D干渉測位方式,E:推定),チェックサム # https://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html import sys import serial args = sys.argv ser = serial.Serial(args[1],9600); # Serial(PORT, ボーレート) ボーレートは9600 or 57600 while True: line = ser.readline() # binaryデータでlineに格納される splited_line = line.decode().split(",") print(splited_line) hour =int((splited_line[1])[:2]) + 9 # 時(UTCに+9時間足すことで,JSTに変換している) minute = int((splited_line[1])[2:4]) # 分 second = float((splited_line[1])[4:]) # 秒 status = splited_line[2] # Aなら受信している.Nなら受信していない lat = float((splited_line[3])[:2]) + float((splited_line[3])[2:])/60.0 lon = float((splited_line[5])[:3]) + float((splited_line[5])[3:])/60.0 print(str(lat) + "," + str(lon)) ser.close() |
備考:macやUbuntuでも使えます。