# https://56k.es/fanta/utilizando-un-modulo-gps-usb-barato-en-gnulinux/ # apt install python3-nmea2 python3-serial # NMEA 0183 PROTOCOL: https://www.serialmon.com/protocols/nmea0183.shtml # ('Timestamp', 'timestamp', timestamp), # ('Latitude', 'lat'), # ('Latitude Direction', 'lat_dir'), # ('Longitude', 'lon'), # ('Longitude Direction', 'lon_dir'), # ('GPS Quality Indicator', 'gps_qual', int), # ('Number of Satellites in use', 'num_sats'), # ('Horizontal Dilution of Precision', 'horizontal_dil'), # ('Antenna Alt above sea level (mean)', 'altitude', float), # ('Units of altitude (meters)', 'altitude_units'), # ('Geoidal Separation', 'geo_sep'), # ('Units of Geoidal Separation (meters)', 'geo_sep_units'), # ('Age of Differential GPS Data (secs)', 'age_gps_data'), # ('Differential Reference Station ID', 'ref_station_id'), import io import pynmea2 import serial ser = serial.Serial('/dev/ttyACM0', 9600, timeout=5.0) sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser)) while 1: try: line = sio.readline() msg = pynmea2.parse(line) if msg.talker == "GP" and msg.sentence_type == "GGA": print("[", msg.timestamp, "] [ Satelites:", msg.num_sats, "] - Lat:", msg.lat, "Lon:", msg.lon, "Alt:", msg.altitude) except serial.SerialException as e: print('Device error: {}'.format(e)) break except pynmea2.ParseError as e: print('Parse error: {}'.format(e)) continue