A full-featured GPS NMEA-0183 sentence parser for MicroPython and embedded platforms, also compatible with Python 3.
micropyGPS is a Python library that parses NMEA-0183 sentences from GPS receivers. It converts raw serial data from GPS modules into structured information like latitude, longitude, altitude, speed, and satellite details. It solves the problem of interpreting low-level GPS data streams in embedded systems and Python applications.
Developers working with MicroPython on embedded platforms (PyBoard, ESP32, Raspberry Pi) who need to integrate GPS functionality, as well as Python 3 users processing GPS data logs or real-time feeds.
Developers choose micropyGPS for its embedded-first design, reliability in noisy environments, and comprehensive feature set—all in a single-file, pure-Python implementation. It's a direct, lightweight alternative to writing custom NMEA parsers.
A Full Featured GPS NMEA-0183 sentence parser for use with Micropython and the PyBoard embedded platform
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parses key NMEA-0183 sentences like GPRMC and GPGGA into accessible tuples, as shown in the README with examples for latitude, longitude, and satellite data.
Optimized for MicroPython with character-by-character processing and robust error handling for noisy UART connections, making it reliable for PyBoard and ESP32 environments.
Implemented as a single class in one file, allowing straightforward dropping into projects without complex dependencies or setup, as highlighted in the Basic Usage section.
Provides helper methods for formatted output, logging, and data interpretation, such as coordinate strings, speed conversions, and compass directions, enhancing usability.
Only supports NMEA-0183 sentences and lacks modern alternatives like NMEA-2000, which may be a drawback for newer GPS modules or advanced applications.
The README explicitly notes that date is not adjusted for the local_offset, leading to potential mismatches in timezone-aware applications without manual handling.
Logging large files requires an SD card, as recommended in the README, adding extra hardware and setup complexity for embedded systems without built-in storage.