0

enter image description hereI'm not able to receive GPS data.

The jumpers are placed in the top position (A)

AT commands return the following:

>>> ser = serial.Serial("/dev/ttyUSB2",115200)

>>> ser.write(('AT+CGPS=1,1'+ '\r\n' ).encode()) 13 >>> >>> ser.write(('AT+CGPS?'+ '\r\n' ).encode()) 10 >>> ser.write(('AT+CGPSINFO'+ '\r\n' ).encode()) 13

python code ####################################### '''

import RPi.GPIO as GPIO

import serial import time import pynmea2

ser_send = serial.Serial('/dev/ttyUSB2',115200,timeout=1) ser_receive = serial.Serial('/dev/ttyUSB1',115200,timeout=1) ser_S0 = serial.Serial('/dev/ttyS0',115200,timeout=1)

def parseGPS(string): if 'GGA' in string: msg = pynmea2.parse(string) print(str(msg)) print("Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude: %s %s" % (msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,msg.altitude_units)) else: print(f' doesnt contain GGA: {string}')

def check_conn(conn): return conn.name, conn.is_open

def send_at(command,expected_result,timeout): name, state = check_conn(ser_send) print(f'{name} is {state}')

rec_buff = ''
if state:

    ser_send.write((command+'\r\n').encode())
    time.sleep(timeout)
    if ser_send.inWaiting():    #something was received in the buffer
        time.sleep(0.01 )
        rec_buff = ser_send.read(ser_send.inWaiting())   # read the buffer
    if rec_buff != '':
        if expected_result not in rec_buff.decode():
            print(command + ' ERROR')
            print(command + ' returned:\t' + rec_buff.decode())
            return False
        else:
            print(f'---------- response from AT command: {rec_buff.decode()}')
            return True
    else:
        print('GPS is not ready, returned nothing')
        return False

def get_gps_position(): rec_null = True answer = False gps_started = False print('Start GPS session...') while not gps_started:

    rec_buff = ''
    send_at('AT+CGPS=1,1','OK',1)
    time.sleep(2)
    gps_status= send_at('AT+CGPS','OK',1)
    if gps_status:
        gps_started = True
while 1:
    answer = send_at('AT+CGPSINFO','+CGPSINFO: ',1)
    #readings = list()
    print('######################## USB1  ')
    while ser_receive.inWaiting() >0:
        readings = ser_receive.readline().decode()
        parseGPS(readings)
        #readings.append(ser_receive.readline())
    # testing another port
    print('######################## S0  ')
    while ser_S0.inWaiting() >0:
                    readings = ser_S0.readline().decode()
                    parseGPS(readings)

    if answer:
        answer = False
        rec_buff = ser_send.read(ser_send.inWaiting()).decode()
        if ',,,,,,' in rec_buff:
            print('GPS is not ready')
            #rec_null = False
            print(f'{ser_receive.name} received {readings}')

            time.sleep(2)
        else:
            print(f'{ser_receive.name} received {readings}')
            time.sleep(2)
    else:
        print('error %d'%answer)
        rec_buff = ''
        send_at('AT+CGPS=0','OK',1)
        return False
    time.sleep(1.5)

'''

#######################################

All I see is this:

/dev/ttyUSB2 is True AT+CGPS ERROR AT+CGPS returned: AT+CGPS ERROR

enter image description here

0 Answers0