GPSとは?
GPSについて
GPSとは、Global Positioning Systemの略称です。日本語では「全地球測位システム」とも訳されます。簡単に説明すると、アメリカが開発した衛星測位システムで、人工衛星から発せられた電波を受信し、位置・距離・時刻などを計算して、現在位置を測位する技術です。
GNSSについて
GNSSとは、Global Navigation Satellite Systemの略称です。まず、人工衛星にとって地上の現在位置を決定する「衛星測位システム」をNSSと呼び、その中で地球全てを測位可能なものをGNSSと分類します(ちなみに特定地域が測位可能なものをRNSSと分類)。GPSはアメリカが開発したGNSSの一つです。
実測
使用したGPSモジュール
- GPS & GLONASS Receiver (G-Mouse)
- https://akizukidenshi.com/catalog/g/gM-12905/
- ESP32に接続している状態
- 接続方式:UART
UARTとは
UARTはUniversal Asynchronous Receiver Transmitter(汎用非同期式送受信機)の頭文字で、「ユーアート」と読みます。
UARTは単純な仕組みゆえに開発コストが低く、安価な電化製品の普及やIoTの導入と共に、コスト重視の組み込み機器の多くに搭載されるようになりました。UARTの特徴のひとつとして、名前の通り「非同期」のシリアル通信であることが挙げられます。つまり,I2CやSPIのような同期をとるためのクロック配線を用いたクロック信号の必要がなくなるということになります。さらに、UARTは2本のデータ配線によって、マスター/スレーブの関係ではない双方向の通信が可能となっています。
プログラムコード
from machine import UART
from machine import Pin
import math
import urequests
import ujson
URTN = 1
BPS = 9600
RXPIN = 3
TXPIN = 1
p3 = Pin(3,Pin.IN,Pin.PULL_UP)
#p1 = Pin(1,Pin.IN,Pin.PULL_UP)
#uart = UART(URTN,BPS)
uart.init(9600, bits=8, parity=None, stop=1, tx=TXPIN, rx=RXPIN)
print(uart.any())
for n in range(uart.any()):
sp = uart.readline()
sp = str(sp)
sp = sp.split(',')
#print(sp)
gps_latitude = list()
if sp[0][3:8] == 'GNGLL':
count = 1
while count <= 2:
if count == 1:
#print(sp[count])
logger_latitude = float(sp[count])
decimal, integer = math.modf(logger_latitude/100.0)
gps_latitude.append(integer + decimal / 60.0 * 100.0)
else:
#print(sp[count])
count = 3
logger_latitude = float(sp[count])
decimal, integer = math.modf(logger_latitude/100.0)
gps_latitude.append(integer + decimal / 60.0 * 100.0)
count += 1
print('gps_latitude : ', gps_latitude[0] , ' , ' , gps_latitude[1])
実行結果
240はブロックなしで読み込める文字数です。
gps_latitudeはRaw dataをフィルタリングして導きだした現在地の緯度と経度になります。