-
Notifications
You must be signed in to change notification settings - Fork 4
/
gps_reception.py
82 lines (60 loc) · 2.07 KB
/
gps_reception.py
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import time
import utime
from machine import UART, Pin
gpsModule = UART(0, baudrate=9600, tx=Pin(16), rx=Pin(17))
print(gpsModule)
buff = bytearray(255)
TIMEOUT = False
FIX_STATUS = False
latitude = ""
longitude = ""
satellites = ""
GPStime = ""
def getGPS(gpsModule):
global FIX_STATUS, TIMEOUT, latitude, longitude, satellites, GPStime
timeout = time.time() + 8
while True:
gpsModule.readline()
buff = str(gpsModule.readline())
parts = buff.split(',')
if (parts[0] == "b'$GPGGA" and len(parts) == 15):
if (parts[1] and parts[2] and parts[3] and parts[4] and parts[5] and parts[6] and parts[7]):
print(buff)
latitude = convertToDegree(parts[2])
if (parts[3] == 'S'):
latitude = "-"+latitude
longitude = convertToDegree(parts[4])
if (parts[5] == 'W'):
longitude = "-"+longitude
satellites = parts[7]
GPStime = parts[1][0:2] + ":" + \
parts[1][2:4] + ":" + parts[1][4:6]
FIX_STATUS = True
break
if (time.time() > timeout):
TIMEOUT = True
break
utime.sleep_ms(150)
def convertToDegree(RawDegrees):
RawAsFloat = float(RawDegrees)
firstdigits = int(RawAsFloat/100)
nexttwodigits = RawAsFloat - float(firstdigits*100)
Converted = float(firstdigits + nexttwodigits/60.0)
Converted = '{0:.6f}'.format(Converted)
return str(Converted)
while True:
getGPS(gpsModule)
url = "https://www.google.com/maps/search/?api=1&query="+latitude+","+longitude
if (FIX_STATUS == True):
print("Printing GPS data...")
print(" ")
print("Latitude: "+latitude)
print("Longitude: "+longitude)
print("URLGoogleMaps: "+url)
print("Satellites: " + satellites)
print("Time: "+GPStime)
print("----------------------")
FIX_STATUS = False
if (TIMEOUT == True):
print("No GPS data is found.")
TIMEOUT = False