{"id":20586769,"url":"https://github.com/sparkfun/sparkfun_rtk_firmware","last_synced_at":"2025-04-05T01:05:19.498Z","repository":{"id":37788235,"uuid":"291141890","full_name":"sparkfun/SparkFun_RTK_Firmware","owner":"sparkfun","description":"Centimeter precision GPS/GNSS using L1/L2 signals broadcast over Bluetooth SPP (using the ESP32) in an easy to use enclosure.","archived":false,"fork":false,"pushed_at":"2025-02-21T09:18:38.000Z","size":332943,"stargazers_count":91,"open_issues_count":24,"forks_count":51,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-03-29T00:05:17.772Z","etag":null,"topics":["esp32-arduino","gnss","gps","sparkfun-tutorial","surveying"],"latest_commit_sha":null,"homepage":"https://docs.sparkfun.com/SparkFun_RTK_Firmware/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sparkfun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-28T20:40:00.000Z","updated_at":"2025-03-17T11:16:19.000Z","dependencies_parsed_at":"2023-10-14T20:49:06.086Z","dependency_job_id":"3bb9eb37-7ab2-49b7-8fef-f9b7041887e9","html_url":"https://github.com/sparkfun/SparkFun_RTK_Firmware","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfun%2FSparkFun_RTK_Firmware","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfun%2FSparkFun_RTK_Firmware/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfun%2FSparkFun_RTK_Firmware/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfun%2FSparkFun_RTK_Firmware/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sparkfun","download_url":"https://codeload.github.com/sparkfun/SparkFun_RTK_Firmware/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271519,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32-arduino","gnss","gps","sparkfun-tutorial","surveying"],"created_at":"2024-11-16T07:13:05.411Z","updated_at":"2025-04-05T01:05:14.490Z","avatar_url":"https://github.com/sparkfun.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"SparkFun RTK Firmware\n===========================================================\n\n\u003ctable class=\"table table-hover table-striped table-bordered\"\u003e\n  \u003ctr align=\"center\"\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/20000\"\u003e\u003cimg src=\"https://cdn.sparkfun.com//assets/parts/1/9/7/4/6/20000-SparkFun_RTK_Facet_L-Band-01.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/19029\"\u003e\u003cimg src=\"https://cdn.sparkfun.com//assets/parts/1/8/6/3/0/RTK_Facet_Photos-01.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/22429\"\u003e\u003cimg src=\"https://cdn.sparkfun.com/r/600-600/assets/parts/2/2/5/2/3/SparkFun_GNSS_RTK_Reference_Station_-_13a.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/20000\"\u003e\u003ci\u003eSparkFun RTK Facet L-Band (GPS-20000)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/19029\"\u003e\u003ci\u003eSparkFun RTK Facet (GPS-19029)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/22429\"\u003e\u003ci\u003eSparkFun RTK Reference Station (GPS-22429)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-facet-l-band-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-facet-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-reference-station-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18590\"\u003e\u003cimg src=\"https://cdn.sparkfun.com//assets/parts/1/8/0/7/5/18590-SparkFun_RTK_Express_Plus-04.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18442\"\u003e\u003cimg src=\"https://cdn.sparkfun.com//assets/parts/1/7/2/4/1/18019-SparkFun_RTK_Express-09.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18443\"\u003e\u003cimg src=\"https://cdn.sparkfun.com/r/600-600/assets/parts/1/6/4/0/1/17369-SparkFun_RTK_Surveyor-14.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18590\"\u003e\u003ci\u003eSparkFun RTK Express Plus (GPS-18590)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18442\"\u003e\u003ci\u003eSparkFun RTK Express (GPS-18442)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.sparkfun.com/products/18443\"\u003e\u003ci\u003eSparkFun RTK Surveyor (GPS-18443)\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-express-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-express-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://learn.sparkfun.com/tutorials/sparkfun-rtk-surveyor-hookup-guide\"\u003e\u003ci\u003eHookup Guide\u003c/i\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nThe [SparkFun RTK Surveyor](https://www.sparkfun.com/products/18443), [SparkFun RTK Express](https://www.sparkfun.com/products/18442), [SparkFun RTK Express Plus](https://www.sparkfun.com/products/18590), [SparkFun RTK Facet](https://www.sparkfun.com/products/19029), [SparkFun RTK Facet L-Band](https://www.sparkfun.com/products/20000) and [SparkFun RTK Reference Station](https://www.sparkfun.com/products/22429) are centimeter-level GNSS receivers. With RTK enabled, these devices can output your location with 14mm horizontal and vertical [*accuracy*](https://docs.sparkfun.com/SparkFun_RTK_Firmware/accuracy_verification/) at up to 20Hz!\n\nThis repo houses the [RTK Product Manual](https://docs.sparkfun.com/SparkFun_RTK_Firmware) and the firmware that runs on the SparkFun RTK product line including:\n\n* [SparkFun RTK Facet L-Band](https://www.sparkfun.com/products/20000)\n* [SparkFun RTK Facet](https://www.sparkfun.com/products/19029)\n* [SparkFun RTK Reference Station](https://www.sparkfun.com/products/22429)\n* [SparkFun RTK Express Plus](https://www.sparkfun.com/products/18590)\n* [SparkFun RTK Express](https://www.sparkfun.com/products/18442)\n* [SparkFun RTK Surveyor](https://www.sparkfun.com/products/18443)\n\nFor compiled binaries of the firmware, please see [SparkFun RTK Firmware Binaries](https://github.com/sparkfun/SparkFun_RTK_Firmware_Binaries).\n\nIf you're interested in the PCB, enclosure, or overlay on each product please see the hardware repos:\n\n* [SparkFun RTK Facet L-Band Hardware](https://github.com/sparkfun/SparkFun_RTK_Facet)\n* [SparkFun RTK Facet Hardware](https://github.com/sparkfun/SparkFun_RTK_Facet)\n* [SparkFun RTK Reference Station Hardware](https://github.com/sparkfun/SparkFun_RTK_Reference_Station)\n* [SparkFun RTK Express Plus Hardware](https://github.com/sparkfun/SparkFun_RTK_Express_Plus)\n* [SparkFun RTK Express Hardware](https://github.com/sparkfun/SparkFun_RTK_Express)\n* [SparkFun RTK Surveyor Hardware](https://github.com/sparkfun/SparkFun_RTK_Surveyor)\n\nThanks:\n\n* Special thanks to [Avinab Malla](https://github.com/avinabmalla) for the creation of [SW Maps](https://play.google.com/store/apps/details?id=np.com.softwel.swmaps\u0026hl=en_US\u0026gl=US) and for pointers on handling the ESP32 read/write tasks.\n\nDocumentation\n--------------\n\n* **[RTK Product Manual](https://docs.sparkfun.com/SparkFun_RTK_Firmware/)** - A detail guide describing all the various software features of the RTK product line.   Essentially it is a manual for the firmware in this repository.\n* **[RTK Facet L-Band Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-rtk-facet-l-band-hookup-guide)** - Hookup guide for the SparkFun RTK Facet L-Band.\n* **[RTK Facet Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-rtk-facet-hookup-guide)** - Hookup guide for the SparkFun RTK Facet.\n* **[RTK Reference Station Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-rtk-reference-station-hookup-guide)** - Hookup guide for the SparkFun RTK Reference Station.\n* **[RTK Express Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-rtk-express-hookup-guide)** - Hookup guide for the SparkFun RTK Express and Express Plus.\n* **[RTK Surveyor Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-rtk-surveyor-hookup-guide)** - Hookup guide for the SparkFun RTK Surveyor.\n\nRepository Contents\n-------------------\n\n* **/Firmware** - Source code for SparkFun RTK firmware as well as various feature unit tests\n* **/Graphics** - Original bitmap icons for the display\n* **/docs** - Markdown pages for the [RTK Product Manual](https://docs.sparkfun.com/SparkFun_RTK_Firmware/)\n\nRepository Branch Structure\n---------------------------\n\nThis repository has two long-term branches: `main` and `release_candidate`.\n\nWith respect to the firmware, `main` is a branch where only changes that are appropriate for all users are applied. Thus, following `main` means updating to normal releases, and perhaps bugfixes to those releases.\n\nIn contrast, `release_candidate` is where new code is added as it is developed.\n\nThe documentation source code is in docs/ on `main`.  It is built automatically on push and stored in the branch `gh-pages`, from which it is served at the above URL. Documentation changes are pushed directly to main.\n\nRelease Process\n---------------\n\nA release is made by merging `release_candidate` back to `main`, and then applying a tag to that commit on `main`.\n\nA pre-release is often created using the latest stable release candidate. These binaries will have extra debug statements turned on that will not be present in a formal release, but should not affect behavior of the firmware.\n\nBuilding from Source\n--------------------\n\nFor building the firmware, see the [Firmware README](Firmware/readme.md). For compiled binaries of the firmware, please see [SparkFun RTK Firmware Binaries](https://github.com/sparkfun/SparkFun_RTK_Firmware_Binaries).\n\nFor the documentation, see [mkdocs.yml](https://github.com/sparkfun/SparkFun_RTK_Firmware/blob/main/mkdocs.yml) and [/workflows/mkdocs.yml](https://github.com/sparkfun/SparkFun_RTK_Firmware/blob/main/.github/workflows/mkdocs.yml).\n\nFor building the Uploader_GUI see [SparkFun_RTK_Firmware_Uploader](https://github.com/sparkfun/SparkFun_RTK_Firmware_Uploader). The pyinstaller executables are generated by the [/workflows](https://github.com/sparkfun/SparkFun_RTK_Firmware_Uploader/tree/main/.github/workflows)\n\nFor building the u-blox_Update_GUI see [u-blox_Update_GUI](https://github.com/sparkfun/SparkFun_RTK_Firmware_Binaries/tree/main/u-blox_Update_GUI) and the header comments of [RTK_u-blox_Update_GUI.py](https://github.com/sparkfun/SparkFun_RTK_Firmware/blob/main/u-blox_Update_GUI/RTK_u-blox_Update_GUI.py)\n\nLicense Information\n-------------------\n\nThis product is _**open source**_!  Please feel free to [contribute](https://docs.sparkfun.com/SparkFun_RTK_Firmware/contribute/) to both the firmware and documentation.\n\nVarious bits of the code have different licenses applied. Anything SparkFun wrote is beerware; if you see me (or any other SparkFun employee) at the local, and you've found our code helpful, please buy us a round!\n\nPlease use, reuse, and modify these files as you see fit. Please maintain attribution to SparkFun Electronics and release anything derivative under the same license.\n\nDistributed as-is; no warranty is given.\n\n- Your friends at SparkFun.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkfun%2Fsparkfun_rtk_firmware","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsparkfun%2Fsparkfun_rtk_firmware","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkfun%2Fsparkfun_rtk_firmware/lists"}