Sticking to the mantra of keeping an open development effort of my personal projects and of those I've made in the past with a group of fellow aspiring enthusiasts I wanted to share with you on how to make your own custom WiFi GPS with update rates going up to 50hz costing you no more than $80-$100 in total. Since my research on Google came up with limited results with the best information being very vague on the setup they've taken, I feel this guide will serve to fill in all the missing knowledge gaps that should be shared.
All you need is:
- A Raspberry Pi (2/3/or the new 0w) - $10 - $25
A Venus 838flpx based GPS Receiver (I was given a Venus828flpx panel mount board) - $50
A 28dbi Active GPS Antenna - $7-$25
A serial breakout board - $?
Some female/female jumper cables
Other software needs include GNSS Viewer of at least 2.0.144 release to easily update and flash your Venus chip to whatever update rate you desire.
Sorry Mac users, I don't know of another alternative for you. If needed I can look into developing a script that can update and flash the chip for you.
On Windows, use PuTTy.
Macs, use the terminal.
Starting off, there is a prerequisite:
You need to know how to properly solder. If not, please watch some youtube videos on how to do so.
#1. Soldering the pins onto the Venus838flpx board. You only need 4 pins in total for a complete solution and they should be next to each other.
These pins are what enables the UART connection between the Pi and the Venus chip itself via RS232 otherwise known as Serial.
- VCC/3.3V - Power
RX - Receiving Transmissions
TX - Transmitting Transmissions
GND - Ground
#2 Wiring the Venus to your breakout board.
It is important to note that TX should be connected to an RX on the other device and vice versa.
#3 Use your Serial breakout board and connect the Venus to your PC.
You'll then open the GNSS software to communicate to the Venus board.
Once connected, you can see messages scrolling thru at 1Hz. If you do not, then you may not have the baud rate setup correctly (default is 9600 I believe).
Go to Binary > Configure Position Update Rate.
Choose your desired update rate and save and flash.
Do the same for the baud rate under Configure Serial Port. Change to 115200.
**Important Note: 50hz may not always be the best solution. The higher the rate the higher the noise you get from the GPS module. In AutoX situations, 20hz is actually ideal since you'd get a resolution of around 4ft-6ft around the speeds typically seen on an AutoX course. On a track a higher update rate may be desirable but at the cost of some noise in the incoming NMEA messages.
#4 Setup your Raspberry Pi.
The Pi I worked on was loaded with the latest Jessie release. Please go ahead and use that on the Pi if you haven't done so.
Some items you'd have to do:
- Change your system language. For me this was en-US.
Follow this guide on how to set up UART on your Pi:https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi/using-uart-instead-of-usb
^You do not need to download or run cGPS and you only need to disable the existing services utilizing UART.
#5 You will need to wire the Venus to your Pi's specific GPIO breakout. Typically within the first 5 rows. Please consult Google for a pinout.
Ideally you should use Female/Female jumper cables.
For those who want more, you can make an LC-Filter between the Pi and the Venus chip.
To verify the chip is being read by the Pi can you run this cmd:
sudo cat /dev/ttyS0 115200
You should see a large amount of NMEA message scrolling thru your terminal screen.
#6 Configure your Pi to act as a mobile hotspot
In short, follow this guide: https://medium.com/@edoardo849/turn-a-raspberrypi-3-into-a-wifi-router-hotspot-41b03500080e#.qy9powbhs
#7 The easy way to stream Serial over TCP
Now most guides involve using some Python script to stream data from RS232 to TCP; however, this is unnecessary cause there's a built in program that does just that... ser2net
With an added benefit, the program itself does not terminate after a disconnection.
Now your Pi OS distribution should already have ser2net. If not you can always perform an apt-get for it.
Configure the ser2net conf file via:
sudo nano /etc/ser2net.conf
Scroll all the way to the bottom and comment out (add # to the beginning of each existing line).
Add this example into the end of the file:
10110 is the TCP port that we're configuring ser2net to listen on.
Save the file and restart ser2net via:
sudo /etc/init.d/ser2net restart
Or, reboot the Pi.
#8 Configure HLT to detect your Pi GPS using the Gateway IP address you configured in step 6 (192.168.42.1 if you were following the instructions to the tee) and port in step 7.
This is under Administration > Settings > Expert Settings > Custom GPS Adapter.
#9 That's it! Go to your sensors list and you should see the Custom WiFi GPS show up and running at the selected update rate.
Any questions? Feel free to PM me and I can help you out.
For those that need a Pi case to mount the GPS adapter to with the Pi in one package, it requires bending your pins on the Venus chip at a 90 degree and drilling a 5mm hole for the chip to go in.
Or if you want, I can 3D print one for you and have it shipped. Feel free to PM me for details.