Skip to content

L76 Module

This module implements the Zerynth driver for the Quectel L76 GNSS chip (Product page).

The following functionalities are implemented:

  • retrieve the current location fix if present
  • retrieve the current UTC time

The driver starts a background thread continuously tracking the last available location fix. The frequency of fixes can be customized. The driver support serial mode only.

Location fixes are obtained by parsing NMEA sentences of type RMC and GGA. Obtaining a fix or UTC time are thread safe operations.

class L76(ifc, mode=SERIAL, baud=9600, clock=400000, addr=0x00, reset=None, reset_on=0)

Create an instance of the L76 class.

Arguments:

  • ifc – serial interface to use (for example SERIAL1, SERIAL2, etc…)
  • mode – one of SERIAL or I2C. Only SERIAL mode supported at the moment.
  • baud – serial port baudrate
  • clock – I2C clock frequency (not supported)
  • addr – I2C address (not supported)
  • reset – optional reset pin
  • reset_on – reset pin active level

Example:

from quectel.l76 import l76

...

gnss = l76.L76(SERIAL1)
gnss.start()
mpl.init()
alt = mpl.get_alt()
pres = mpl.get_pres()

start()

Start the L76 and the receiver thread.

Returns: True if receiver thread has been started, False if already active.

stop()

Stop the L76 by using the lowest power consumption mode and terminates the receiver thread. It can be restarted by calling start.

Returns: True if receiver thread has been stopped, False if already inactive.

pause()

Pause the L76 by putting it into standby mode. It can be restarted by calling resume. Refer to the L76 documentation for details here.

resume()

Wake up the L76 from standby mode entered by calling resume. Refer to the L76 documentation for details here.

set_rate(rate=1000)

Set the frequency for location fix (100-10000 milliseconds is the available range).

NMEA

Additional methods from the base class nmea.NMEA_Receiver.

fix()

Return the current fix or None if not available.

A fix is a tuple with the following elements:

  • latitude in decimal format (-89.9999 - 89.9999)
  • longitude in decimal format (-179.9999 - 179.9999)
  • altitude in meters
  • speed in Km/h
  • course over ground as degrees from true north
  • number of satellites for this fix
  • horizontal dilution of precision (0.5 - 99.9)
  • vertical dilution of precision (0.5 - 99.9)
  • positional dilution of precision (0.5 - 99.9)
  • UTC time as a tuple (yyyy,MM,dd,hh,mm,ss,microseconds)

has_fix()

Return True if a fix is available.

utc()

Return the current UTC time or None if not available. A UTC time is a tuple of (yyyy,MM,dd,hh,mm,ss,microseconds).

UTC time can be wrong if no fix has ever been obtained.

has_utc()

Return True if a UTC time is available.