Introduction
I have been thinking of using GPS module on my Raspberry Pi project. GPS modules are readily available on the market, one of it is u-Blox NEO-6M. Many enthusiast user uses this module for building quadcopter using Arduino, thus many of resources available on the internet is how to use the GPS module on Arduino. While there are some libraries that support connecting the GPS module with Raspbian, I cannot find any for Windows 10 IoT Core.For this reason, I decided to make my own library to use u-Blox GPS module in Windows 10 IoT Core environment. The goal is that I can make Universal Windows Platform (UWP) application which utilizes GPS module.
How It Works
The GPS module is actually quite “plug-and-play”. It uses serial communication (UART), and the module itself acts like a system-on-a-chip. So it is a separate system by itself, automatically boot and perform its function upon powering it. Thus, no specific driver required to use the peripheral. Windows will automatically recognize it as a serial device after we connect it.
The library I developed will perform device connection and provides intuitive Application Programming Interface (API) to communicate with the module. The library implements the asynchronous pattern of .NET Framework, which makes it suitable to be used in user-facing apps.
Main Features
- Reading serial data from u-Blox NEO-6M GPS module
- Asynchronous mechanism, suitable for usage in non-blocking context such as UI application
- Automatic probing baud rate
- Extensible pattern for internal components, which will be useful and quick to implement additional data/message types supported by the GPS module
- Event-based incoming data notification, for periodic data received from the module
How To Use
Currently it is distributed in source files. You can get your copy in the GitHub link I provided here. To use it, just build from the source and add reference to the output DLL file.
Sample Application
I provided sample application which demonstrates how to use the library. It simply just process the location data and display it on the map.
Connect u-Blox NEO-6M GPS module board to Raspberry Pi 3 via UART. Connect TX pin from moudle to RPi RX pin (pin 10/GPIO 15) and RX pin on module to RPi TX pin (pin 08/GPIO 14). Connect 3.3 V RPi pin (pin 01) to VCC of the module board and also the ground to RPi (pin 06).
For more detail: GPS Module for Raspberry Pi 3 on Windows 10 IoT Core