GPS - RTK Rover Module
Mower / Rover GPS Module
The rover module is combined with an ESP32 board to calculate the position of the Rover in comparison to the saved GPS Fence. The calculations done by the ESP32 and Arduino program send a signal if the Rover is inside (1) or outside (0) the fence.
Rover Wiring Diagram
The ESP32 is connected as follows to the mower:
We require 3 communication lines on the ESP32.
1. USB for the serial monitor
2. Serial2 for the GPS communication
3. Serial3 for the TFT communication.
An additional serial port using hardware serial (code) is created on the ESP32 and connected to the Serial2 on the TFT Arduino MEGA. This allows communication between the TFT and the ESP32 module to adjust settings. As the ESP32 is a 3.3 logic level board and the MEGA is a 5V logic level board (this means the ESP32 communication runs at 3.3V voltage, not the board power which can be powered by 5V), a logic level converter is used to ensure good transmission of the data. This converts the 5V communication to 3.3V and in the opposite direction converts 3.3V communication to 5V.
The ESP32 also connects to the main Arduino MEGA Mower board to give signals if the Mower is inside our Outside the GPS fence and if a suitable GPS lock has been calculated. This ensure the GPS coordinates being sent are accurate enough to accurately calculate the mower position.
The ESP32 is connected with the RTK GPS module via 1 wire as we are only interested (for now anyway) in the NMEA messages outputted from the GPS module. These NMEA messages contain the GPS Lat Lon coordinates and the strength of GPS signal currently calculated by the module.
I am using the UBLOX C94-M8P application board in my build but this is not necessarily the only board which can be used. See below.
Mower / Rover Module Output - In addition to the UBLOX Quick Setup!
The GPS module will output different sets of data to the TX port. The type of data or "messages" that are transmitted on the TX line can be setup in the UBLOX U-Center software using a PC or Laptop computer. To access the UBLOX module on the GPS board, a board with a USB port is required.
U-Blox U Center Software
For the Arduino code to read the TX messages from the GPS board we need to make sure they are speaking the same language. The Arduino code looks for NMEA $GPGGA and $GPRMC messages from the board. If these messages are not enabled then the Arduino code wont be able to process the data.
To enable these messages follow these steps:
1. Connect the Mower/Rover GPS module via USB to the computer.
2. In the U-Center connect to the GPS module selecting the right port
3. Goto Menu item View then Messages View.
4. Using the scroll menu on the left goto: + UBX > CFG > NMEA and you will see the following setup menu.
5. Ensure that 1 - GP is set as the main talker.
6. Make sure to Send the updated commands to the module with the send button in the bottom left hand corner.
This should enable the GPGGA and GPRMC output of the UBlox chip on the GPS module.
This can be checked by looking at the "messages view" in the U-Center software when the GPS module is connected.
Can a Standard GPS Module be used?
If you don't feel you need cm accuracy a standard GPS module can be used in the setup. Just replace the standard GPS module in the circuit diagram above
The GPS Baud rate (communication speed) needs to be matched to the ESP32 code. This is typically 9600 for a standard module and can be adjusted in the ESP32 code in the settings. The Lat and Lon data received by the ESP32 will now be of standard accuracy (+- 3-5 meters) and the code will work with this data to calculate if the Mower is inside or outside the GPS fence.
(If you are using a standard GPS module there is no need for a base station module.)