Package: groveGPS
API for the Seeed Studio Grove GPS connected to a Raspberry Pi.GitHub repo:https://github.com/Paolo-dono/Grove_GPSFree software: MIT LicenseConnecting the GPS module to the Raspberry Pi:Format: [GPS module pin] -> [Raspberry Pi pin]Vcc -> 3.3VRx -> Tx (GPIO 14, board pin 8)Tx -> Rx (GPIO 15, board pin 10)GND -> GNDSetup to use API:Enable UART communication using raspi-configRun the following commands:pip3 install datetimepip3 install pyserialpip3 install groveGPSThen to use the code in a python file add the following code at the top of the program:from location_calcs import location_calcsfrom grove_gps import GPSSetup to use location_calcs:Get a Google API key and pass it into the setAPIkey() method to get the full functionality of the classMethods of GPS class:GPS() -> instantiates an object of the class and calls the refresh() methodrefresh() -> fetches new values from the GPS modulegetLatitude(): float -> returns the latitude in decimal formatgetLongitude(): float -> returns the longitude in decimal formatgetNS(): String -> returns whether the latitude is North or SouthgetWE(): String -> returns whether the longitude is West or EastgetSatellites(): int -> returns the number of satellites the GPS module is connected togetSpeed(): float -> returns the speed in km/hgetUTCPosition(): String -> returns the current UTC timeMethods of the location_calcs class:location_calcs() -> creates an obect of the class, instantiates a local GPS object and sets the default refresh ratesetAPIkey(String key) -> sets a new Google Maps API keygetAPIkey() -> returns current API keygetCurrentAddress(): String -> returns current street address from coordinates fetched from the GPS modulegetAddressFromCoordinates(float latitiude, float longitude): String -> returns the street address given a set of coordinatesgetCoordinatesFromAddress(String address): float list -> returns a set of coordinates given a street addresssetHomeAddress(String address) -> sets a home address and stores it in a text filegetHomeAddress(): String -> returns the home address stored in a text filesetRefreshRate(int refresh_rate) -> sets a new refresh rategetRefreshRate(): int -> returns current refresh rategetDistanceToHome(): float -> returns the distance you are from the set home address in kilometresgetDistance(float latitude1, float longitude1, float latitude2, float longitude2): float -> returns the distance between two sets of coordinateslogLocation() -> creates a history log of all locations you have visited and routes you drove in a text filelocationAtTime(String dateAndTime): String -> returns the location you were at a certain timetimesAtLocation(String address): String list -> returns the number of times you visited a locationgetFavouriteLocations(): String list -> returns a list of the top 5 locations you visited the mostKnown bugsThe Grove GPS can often struggle to connect with satellites. If you see it is struggling, you must take it outside under the open sky (and only turn it on when you are outside) and then wait for at least half a minute before moving indoorsWhen running the logLocation() method the GPS values that are fetched can get frozen and show you are staying in the same position even when driving aroundAcknowledgements:Code from Dexter Industries:https://github.com/DexterInd/GrovePi/blob/master/Software/Python/grove_gps/grove_gps_data.py