Moderators: adafruit_support_bill, adafruit
#!/usr/bin/python -tt
import serial, time, csv, sys
from pynmea import nmea
from pynmea.streamer import NMEAStream
##different commands to set the update rate from once a second (1 Hz) to 10 times a second (10Hz)
PMTK_SET_NMEA_UPDATE_1HZ = '$PMTK220,1000*1F\r\n'
PMTK_SET_NMEA_UPDATE_5HZ = '$PMTK220,200*2C\r\n'
PMTK_SET_NMEA_UPDATE_10H = '$PMTK220,100*2F\r\n'
##turn on only the second sentence (GPRMC)
PMTK_SET_NMEA_OUTPUT_RMCONLY = '$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n'
##turn on GPRMC and GGA
PMTK_SET_NMEA_OUTPUT_RMCGGA = '$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n'
##turn on ALL THE DATA
PMTK_SET_NMEA_OUTPUT_ALLDATA = '$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n'
## turn off output
PMTK_SET_NMEA_OUTPUT_OFF = '$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n'
streamer = NMEAStream()
DEVICE = '/dev/ttyAMA0'
BAUD = 115200
ser = serial.Serial(DEVICE, BAUD)
ser.open()
ser.flush()
##ser.writelines(PMTK_SET_NMEA_UPDATE_1HZ, PMTK_SET_NMEA_OUTPUT_RMCONLY)
ser.write(PMTK_SET_NMEA_UPDATE_1HZ)
##ser.write(PMTK_SET_NMEA_OUTPUT_RMCONLY)
ser.write(PMTK_SET_NMEA_OUTPUT_RMCGGA)
ser.close()
time.sleep(1)
BAUD = 9600
ser = serial.Serial(DEVICE, BAUD)
ser.open()
out = ''
while True:
##May add some connection check
while ser.inWaiting() > 0:
out = ser.readline()
if out.startswith("$GPGGA"):
gpgga = nmea.GPGGA()
gpgga.parse(out)
print "sats:" + gpgga.num_sats
if out.startswith("$GPRMC"):
# Create the object
gps = nmea.GPRMC()
# Ask the object to parse the data
gps.parse(out)
##print ">>"
print "time:", gps.timestamp, "lat:", gps.lat,gps.lat_dir, "long:", gps.lon, gps.lon_dir, "speed:", gps.spd_over_grnd, "course:", gps.true_course
Return to Adafruit Raspberry Pi® accessories
Users browsing this forum: No registered users and 1 guest