Code Monkey home page Code Monkey logo

flipperzero-gps's Introduction

GPS for Flipper Zero

FAP Build

A simple Flipper Zero application for NMEA 0183 serial GPS modules.

ui

Heavy lifting (NMEA parsing) provided by minmea.

Installation

  1. Navigate to the FAP Build GitHub action workflow, and select the most recent run.
  2. The FAP is built for both the dev and release channels of the official firmware. Download the artifact corresponding to your firmware version.
  3. Extract gps_nmea.fap from the ZIP file to apps/GPIO on your Flipper Zero SD card.

Usage

This is a single-screen app, and a few interactions are provided via the hardware buttons:

  • Long press the up button to change the baud rate. The default baud rate is 9600, but 4800, 19200, 38400, 57600, and 115200 baud are also supported.
  • Long press the right button to change speed units from knots to kilometers per hour.
  • Press the OK button to set the backlight to always on mode. Press it again to disable.
  • Long press the back button to exit the app.

Hardware Setup

Connect the GPS module to power and the USART using GPIO pins 9 (3.3V), 11 (GND), 13 (TX), and 14 (RX), as appropriate.

wiring

See the tutorial video from Lab401 by RocketGod for a visual guide to the hardware setup.

Confirmed Compatible Modules

If you have verified this application working with a module not listed here, please submit a PR adding it to the list.

Building

This application can be compiled using uFBT. Run ufbt in the root directory of the repository.

flipperzero-gps's People

Contributors

aetherc0r3 avatar diskfutility avatar dl9sec avatar ezod avatar haisenteck avatar lekkas avatar xmasterx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flipperzero-gps's Issues

UX/UI Rearchitecture

Currently, the app only supports a single viewport which displays data from GpsUart::status. The viewport has all of the information relevant to the user when viewing the data received from the gps module. The only issue with the single viewport implementation is that the app is severely limited in what it can do based on this.

I am proposing a more complex UI structure that will allow the app to provide more functionality while still maintaining the functionality is currently contains. This would entail leveraging the concept of scenes and views. Utilizing these would allow for more complex app navigation and viewing potential.

The following is an implementation plan for the rearchitcture described above.
gps_nmea_uart_uxui_rearchitecture

Question: Fake GPS receiver

I know it is out of scope for this project, but you maybe know some other project :-)

How to create device what will send GPS position messages (NMEA 0183) just like external GPS receivers to the iOS devices?

Something for ESP32 or Flipper. User will hardcode fake latitude and longitude, pair (is pairing required) it with iPhone or iPad and map app will then think they are in this location.

Won't Load

I installed it using the fap builder. And it says api mismatch. Then it is just stuck on the hourglass loading screen. No updated.

Build Documentation

Per the current documentation, it appears that your plugin can only be installed from builds on github. Is it possible for other downstream devs to build this plugin locally?

I would like to branch off of main or fork your project to potentially make modifications to the plugin, but I am not sure how I would be able to build it.

BE-180 replace BN-180 (with amazon)

Hello,

I have BE-180 GPS receptor Module (amazon say replace BN-180 GPS) can you add this module ?

This is the data with USB-UART bridge at 38400 bauds:

$GPGSV,3,3,10,26,28,169,29,27,77,335,37,16A
$GPGSV,1,1,02,15,05,040,,30,04,331,,0
64
$GAGSV,2,1,05,13,51,052,34,14,59,290,28,21,44,178,18,31,19,318,24,779
$GAGSV,2,2,05,33,20,242,17,7
46
$GAGSV,1,1,03,03,06,039,,08,07,085,,15,01,058,,042
$GBGSV,1,1,04,11,50,066,26,28,36,275,27,37,34,288,22,43,76,033,29,1
75
$GBGSV,1,1,01,23,33,224,,043
$GQGSV,1,1,00,0
64
$GNGLL,4547.41957,N,00125.16551,E,112608.00,A,A77
$GNRMC,112609.00,A,4547.41959,N,00125.16549,E,0.129,,030623,,,A,V
1C
$GNVTG,,T,,M,0.129,N,0.239,K,A3F
$GNGGA,112609.00,4547.41959,N,00125.16549,E,1,12,0.85,441.0,M,47.5,M,,4D
$GNGSA,A,3,02,08,10,16,18,21,23,26,27,,,,1.71,0.85,1.48,1
00
$GNGSA,A,3,13,,,,,,,,,,,,1.71,0.85,1.48,3
06
$GNGSA,A,3,11,28,37,43,,,,,,,,,1.71,0.85,1.48,40A
$GNGSA,A,3,,,,,,,,,,,,,1.71,0.85,1.48,5
02
$GPGSV,3,1,10,02,26,245,26,07,15,305,17,08,42,297,29,10,50,129,25,165
$GPGSV,3,2,10,16,61,186,18,18,25,056,19,21,19,244,17,23,45,072,34,1
6A
$GPGSV,3,3,10,26,28,169,30,27,77,335,37,162
$GPGSV,1,1,02,15,05,040,,30,04,331,,0
64
$GAGSV,2,1,05,13,51,052,33,14,59,290,29,21,44,178,18,31,19,318,24,77F
$GAGSV,2,2,05,33,20,242,14,7
45
$GAGSV,1,1,03,03,06,039,,08,07,085,,15,01,058,,042
$GBGSV,2,1,05,11,50,066,27,23,33,224,18,28,36,275,27,37,34,288,21,1
74
$GBGSV,2,2,05,43,76,033,29,14E
$GQGSV,1,1,00,0
64
$GNGLL,4547.41959,N,00125.16549,E,112609.00,A,A*71

Thank you :)

Idea - GPS log

Store GPS info every X seconds into a log file on the SD card.
I think there is a correct format to use it on google earth, for example.

Here is a sample on the log generated by one of my radios:

$GPGGA,164418.000,3840.5838,N,00919.2875,W,2,10,0.92,8.0,M,50.7,M,,73
$GPGSA,A,3,10,27,16,18,26,08,20,07,21,11,,,1.23,0.92,0.81
00
$GPRMC,164418.000,A,3840.5838,N,00919.2875,W,0.55,140.65,250420,,,D70
$GPVTG,140.65,T,,M,0.55,N,1.02,K,D
3D
$GPGGA,164428.000,3840.5837,N,00919.2831,W,2,9,0.98,8.0,M,50.7,M,,4D
$GPGSA,A,3,10,27,16,26,08,20,07,21,11,,,,1.29,0.98,0.84
0C
$GPRMC,164428.000,A,3840.5837,N,00919.2831,W,1.34,93.06,250420,,,D40
$GPVTG,93.06,T,,M,1.34,N,2.49,K,D
0D

gy-neo6mv2 compatibility

Should it be working ? I wonder how it succeeded getting the time with 0 satellites.

Thank you in advance.

image

NEO-6M Not displaying in app

I have a NEO-6M connected as shown in the wiring diagram but I'm just getting all zeros in the app. I have verified it's working by using the UART Terminal app with 9600 baud rate set and I can see the NMEA sentences. I'll leave an example of one below

$GPGSV,3,3,09,29,74,325,3964
$GPGLL,3118.44597,N,097 2156679,W,225424.00,A, A
7A

GPS modules confirmed as compatible.

I have been in a position to test a number of GPS modules (mostly Beitian) covering 6 GPS chipsets. All of these work with this application with the exception of the compass on 2 of them since these are on I2C which does not appear to be supported (at present - maybe this could be a future addition).

ThinkAI ATGM336H GP-02

Uputronics Ublox M8C M8PICO

Beitian M8 series (Ublox 8030) - BN-280, BN-880 (no compass support).
Beitian M9 series (Ublox M9140) - BK-250, BK-357, BK-880Q (no compass support).
Beitian M10 series Ublox (M10050) - BE-280.

AT6558F - BN-280ZF, BN-357ZF

GPS Modules

Thank you for making this utility available to the community.

UI overlay issue

The default screen with Latitude, Longitude, etc shows but then there is another screen showing over the Course Speed and Altitude displays. Included pic for reference

F0_GPS_Error.jpg

EDIT: The app works as it should beyond this error. Also I am on the newest release of RogueMaster (RM0329-0318-0.100.2-f601860)

Feature Request: Support speed in Miles Per Hour (MPH).

Thank you for producing this tool, I have found it quite useful so far but being in the UK speed is usually measured in MPH on GPS systems, on the road at least.

Would it be possible to include MPH in the supported units for speed at some point ?

Undefined symbols from FreeRTOS stream buffer API

Building the FAP currently generates the following error:

scons: warning: build/f7-firmware-D/gps.fap: app won't run. Unresolved symbols: {'xStreamBufferGenericCreate', 'xStreamBufferSendFromISR', 'vStreamBufferDelete', 'xStreamBufferReceive'}

These functions are all from stream_buffer.h in FreeRTOS, and are not exported in the Flipper API's api_symbols.csv. According to the developers, these functions will be made available next week through API wrappers.

NEO-7M compatibility

The manufacturer's website states backward compatibility with version neo-6
https://www.u-blox.com/en/product/neo-7-series
Also flipperzero-GPS claims compatibility with neo-6
But the app doesn't work. Outputs NaN in all lines
Am I doing something wrong or does the software not allow me to work with NEO-7M?
I would like to get support for this board.

Alternate Coordinate Systems

Currently, the only coordinate system supported by the app is lat long. The app could also support UTM and MGRS coordinate systems based on the lat long values.

Based on values of GpsUart::status::latitude and GpsUart::status::longitude you could be able to convert them into a UTM coordinate system. And from the UTM zone, northing, and easting, you could convert that into a MGRS grid.

Visualizing the current coordinates in alternative coordinate systems could be achieved by a similar method to how changing the baudrate of the GpsUart is implemented by holding down on the "up" arrow key. By long pressing the "down" arrow key, you could switch between viewing the coordinates in lat long, UTM, and or MGRS.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.