DEKI/ENGINE docs
deki-gps 0.19.0
Deki package reference
deki-gps

GPS peripheral interface and NMEA-over-UART backend

Repository: github.com/dekiengine/deki-gps · Latest release: 0.19.0 · Needs engine 0.19.0+ · Requires: deki-http, deki-uart

Install with DekiEditor --packages-add deki-gps <project>, or from the Package Manager. The engine's own components and C++ API are in the Deki docs.

Shown in the editor as GPS (NMEA over UART).

Components

Component Category Description
DesktopGPSComponent System Stands in for the GPS receiver on desktop, so location works without hardware.
NEO6MGPSComponent Sensors Reads location from a u-blox NEO-6M GPS over UART.

Feature flags

Parts you can leave out of a build. A feature with a define is switched there; the rest are stripped with their components.

Feature Define Default
NMEA UART DEKI_FEATURE_GPS_NMEA on

Component reference

DesktopGPSComponent

Stands in for the GPS receiver on desktop, so location works without hardware.

Inspector name: Desktop GPS · Category: System · Type: DekiGps::DesktopGPSComponent

No reflected properties.

NEO6MGPSComponent

Reads location from a u-blox NEO-6M GPS over UART.

Inspector name: NEO-6M GPS · Category: Sensors · Type: DekiGps::NEO6MGPSComponent

Property Type Default Constraints Description
txPin int32 17 0 to 48 GPIO the board transmits on, wired to the module's RX. Crossed over: this pin talks, the module listens.
rxPin int32 16 0 to 48 GPIO the board receives on, wired to the module's TX. This is the one that carries position data, so a fix that never arrives usually means this pin.
baudRate int32 9600 0 to 921600 Serial speed, which must match how the module is configured. NEO-6M ships at 9600; a module reconfigured to 38400 and left at 9600 here reads as garbage rather than silence. 0 finds it: 9600, 38400, 115200, 57600 and 4800 are tried until valid NMEA arrives, for a board that ships with more than one kind of module.
uartPort int32 1 0 to 2 Which of the chip's serial controllers to use. Port 0 is usually the USB console, so a GPS normally wants 1 or 2.

Changelog

0.19.0

Changed

  • minEngine 0.19.0: built against engine 0.19.0, whose component metadata records the package each class is in. A build of this package from before does not load and is rebuilt.

Added

  • Japanese, Simplified Chinese and Korean: editor/lang/ja.json, zh.json and ko.json translate the names, tooltips and enum values this package's components show in the Inspector.

0.18.2

Added

  • IDekiGPS::Status(): sentences read, satellites in view (all constellations) and in use, altitude, and the serial speed. Indoors, where there may never be a fix, it shows whether the receiver is talking and how the search is going.
  • baudRate 0 on NEO6MGPSComponent finds the speed: 9600, 38400, 115200, 57600 and 4800 are tried until a valid sentence arrives. For a board that ships with more than one kind of module (the LilyGO T-Deck Plus: L76K or u-blox M10).
  • Reads $–GGA and $–GSV besides $–RMC, from any talker.
  • DekiGPSStatus::bytes: bytes read from the receiver, valid or not. With no sentences, bytes mean a wrong speed; none, a wrong pin or no power.

Fixed

  • A device never read its GPS. Nothing called the NMEA driver's update, so its UART was never read and there was never a fix. NEO6MGPSComponent now updates it every frame.
  • A position sentence with an empty field (no course, as when standing still) shifted every field after it, losing the date and time: fields were split with strtok, which skips empty ones.

Earlier releases: CHANGELOG.md.


Generated from the package's reflection data (engine 0.19.0). Property names are the keys used in scene files. Renames keep an alias (compatibility).