Skip to content

GPS and GPRS not working at the same time  #127

Description

@GDev-4664

I am trying to implement a tracker device in my car. I am using A9G board to develop the tracker. The GPS and GPRS works individually very fine. But when I try to push real gps data to mqtt over gprs gps package provides 0 tracked satellites. Is there any problem with power or code ? Do I need to customize any hardware?
I am using XL4015 DC-DC converter. The output of XL4015 is 5V-2A

import machine
import time
import cellular
import gps
import ujson
from umqtt import simple
import utime

# Constants
LED_PIN = 27
CONNECT_RETRY_DELAY = 5
TOPIC = "username/feeds/mycar"
MQTT_NAME = "a9g-micropython-board"
MQTT_SERVER = "io.adafruit.com"
MQTT_PORT = 1883
MQTT_USERNAME = "username"
MQTT_PASSWORD = "pass"
SECONDS_IN_DAY = 24 * 60 * 60
SECONDS_MICROPYTHON_TO_UNIX = 946684800
led = machine.Pin(LED_PIN, machine.Pin.OUT, 1)

green_led = machine.Pin(30, machine.Pin.OUT, 0)
red_led = machine.Pin(26, machine.Pin.OUT, 0)
blue_led = machine.Pin(25, machine.Pin.OUT, 0)
isFirstTime = True
last_published_time = 0
client = simple.MQTTClient(MQTT_NAME, MQTT_SERVER, MQTT_PORT, MQTT_USERNAME, MQTT_PASSWORD)


def allOutLed():
    green_led.value(0)
    red_led.value(0)
    blue_led.value(0)


def publish_gps_data(client, satellites, location, formatted_datetime):
    data_array = [
        satellites[0],
        satellites[1],
        formatted_datetime,
        location[0],
        location[1],
    ]
    json_data = ujson.dumps(data_array)
    client.publish(topic=TOPIC, msg=json_data, retain=False, qos=1)
    led.value(1)


def get_current_time():
    return utime.time()


def connect_to_cellular():
    global isFirstTime

    while True:

        print("I am in cellular Loop")
        allOutLed()
        red_led.value(1)
        if not isFirstTime:
            if cellular.gprs():
                break
        try:
            cellular.gprs("apn_name", "", "")
            break
        except Exception as e:
            print("Error connecting to cellular:", e)
            time.sleep(CONNECT_RETRY_DELAY)
    isFirstTime = False
    return


def connect_to_mqtt():
    while True:
        allOutLed()
        blue_led.value(1)
        try:
            client = simple.MQTTClient(MQTT_NAME, MQTT_SERVER, MQTT_PORT, MQTT_USERNAME, MQTT_PASSWORD)
            client.connect()
            break
        except Exception as e:
            print(e)
            continue
    return


def main():
    allOutLed()
    while True:
        connect_to_cellular()
        try:
            connect_to_mqtt()
        except Exception as e:
            print("Error:", e)
            continue
        gps.on()
        allOutLed()
        green_led.value(1)
        publish_gps_data(client, gps.get_satellites(), gps.get_location(), gps.time())
        time.sleep(20)
        


if __name__ == "__main__":
    main()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions