This is a GNSS base/rover receiver set that was intended to be paired with UAVs using the Pixhawk flight controller. It is based on the NEO-M8P-0/2 which is capable of dual-constellation single band RTK. The base station is a GNSS only, and required a separate telemetry radio. The rover includes the GNSS as well as I2C modules for IMU, mag, and barometric pressure.
U-Blox NEO-M8P-2 with a USB port and exposed pins for UART1 Rx/Tx/GND. SMA for antenna. The -2 variant of the M8P can be used as an RTK base or rover, sending or receiving RTCM corrections.
<photo>
The rover hardware includes a GNSS + antenna and six I2C devices. It has an eight pin JST-GH connector which is externally accessible by way of a cable passthrough in the case which carries the UART and I2C to the flight controller. It also has a four pin connector (also JST-GH) for USB, though only data is carried on this connector, power must be applied via the larger connector.
The Here+ v1 rover differs significantly from the 2/3/4 in that the sensors are connected to the I2C bus directly, and the module does not support the CAN protocol. In the 2/3/4, the sensors are connected to an STM32 which can either emulate I2C devices, or provide the data on a CAN bus. For the purposes of tinkering/hacking, having the hardware exposed directly via their own I2C interfaces has some advantages.
| Pin | Color | Use | Notes |
|---|---|---|---|
| 1 | Purple | Vcc | 5v or 3v3 |
| 2 | Blue | GNSS Rx | |
| 3 | Green | GNSS Tx | |
| 4 | Yellow | I2C SCL | |
| 5 | Orange | I2C SDA | |
| 6 | Red | Safety Button | untested |
| 7 | Brown | Button LED | Pull low to illuminate |
| 8 | Black | Ground |
The rover's GNSS is a U-Blox NEO-M8P-0. It is accessible via UART1 on the eight pin connector, and USB on the four pin connector (it uses the same as the base unit.) Note: the USB connector does not supply power to the rover or the GNSS module, voltage must be separately applied to pin 1 of the eight pin connector.
The GNSS antenna is a Taoglas CGGBP.25.4.A.02 1“ ceramic patch.
| Device Type | Part | Address | Misc |
|---|---|---|---|
| Magnetometer | AKM AK09916 | 0x0C | |
| Magnetometer | ST LIS3MDL | 0x1C | |
| Magnetometer | Honeywell HMC5983 | 0x1E | |
| LED Driver | Toshiba TCA62764 | 0x55 | |
| IMU | TDK MPU-9250 | 0x71 | |
| Barometer | TE MS5611 | 0x77 |
Solid purple, lowest brightness (still quite bright!)
#include <Wire.h> #define TCA62724_ADDR 0x55 #define SDA_PIN 10 #define SCL_PIN 9 void setup() { Wire.begin(SDA_PIN, SCL_PIN); delay(10); // Enable the LED driver Wire.beginTransmission(TCA62724_ADDR); Wire.write(0x84); // Enable register Wire.write(0x03); // Turn on Wire.endTransmission(); // Set Purple: Red=1, Green=0, Blue=1 (lowest brightness) Wire.beginTransmission(TCA62724_ADDR); Wire.write(0x81); // Blue register Wire.write(1); // Blue = 1 Wire.write(0x82); // Green register Wire.write(0); // Green = 0 Wire.write(0x83); // Red register Wire.write(1); // Red = 1 Wire.endTransmission(); } void loop() { // Nothing - LED stays purple }