# 1. GNSS+Mag+Baro node

The node is designed for light unmanned aerial (UAV) and other vehicles.

It has 3 types of sensors:

  1. GNSS module: u-blox 8 (opens new window)
  2. Barometer: BMP280 (opens new window)
  3. Magnetometers: RM3100 (opens new window) and/or HMC5883L (opens new window)

The node supports 2 interfaces. Please refer the corresponded section for details:

# 1.1. Variations

There is different types of such GNSS MANETOMETER BAROMETER nodes. They are illustrated below.

NEO-M8N, NEO-M8P ZED-F9P MAGNETOMETER
gps_mag_baro drawing drawing
  1. L1/L2 RTK GNSS ZED-F9P is the top variant of GNSS module. Using this module you can get high accuracy of global coordinates and magnetic field data.
  2. L1 GNSS NEO-M8N is just common variant of GNSS module self powered with built-in DC-DC and communicates over CAN bus.
  3. L1 GNSS NEO-M8P with RTK is same but RTK also added.
  4. MAGNETOMETER RM3100 is just magnetometer variation of the same board.

# 1.2. Main function description

This node primary has 3 features: GPS, magnetometer, and barometer. You may enable or disable any of them using the following parameters gps_enable, mag_enable and baro_enable.

# 1.2.1. GNSS module

The node uses u-blox 8 (opens new window) GNSS module. The communication protocol is ublox (opens new window), the physical interface is UART. During ubx protocol mode, it parses only UbxNavPvt message because it has all necessary information to fill it into the output message. Turn off all other package.

If gps_frequency parameter is 0, the node will publish data every time when it receive something from the sensor. Alternatively, you may specify a fixed rate.

At this moment you need to manually set up the ublox module before usage. Below you can see the instruction how to setup it.

# How to setup U-Blox NEO-M8N-0 by UART

Desription of UXB protocol presented in UBX-13003221 (opens new window) document.

  1. Download (opens new window) and install u-center (not u-center 2).
  2. Connect to the module by UART at 9600 by default.
  3. Open View->Configuration view. Go to MSG (Messages), enable "01-07 NAV-PVT" at UART1, disable all other messages. Push "send" at hte bottom of the window to send command. Check that only NAV-PVT goes from the module by opening View->Messages View.
  4. Again go to Configuration view to PRT (Ports), change the Baudrate to 115200, "send" at the bottom.
  5. Reconnect to the device at the new baud rate.
  6. Go to Configuration view to RATE (Rates), set Measurement Period to 60 ms, "send" at the bottom.
  7. If everything ok, go to Configuration view to CFG (Configuration), select "Save current configuration", "send" at the bottom.

# Performance

The raw GNSS-module needs 8.7 ms to send a UbxNavPvt package via uart (the baud rate is 115200, a package length is 100 bytes).

This board as a wrapper under GNSS-module needs ~12 ms to get this package via UART, process it and send to CAN-bus.

It means that the time overhead compared to raw module is only ~4ms.

# 1.2.2. Barometer

The node uses BMP280 (opens new window) barometer. Communication with the sensor is carried out using I2C.

Control measurement settings:

  • pressure oversampling is 8: high resolution, 19 bit / 0.33 Pa
  • temperature oversampling is 8: 19 bit / 0.0006 °C
  • the data rate is up to 50 Hz if standby time is less then 0.5 ms
  • normal mode

# 1.2.3. Magnetometer

The node supports 2 types of magnetometers: RM3100 (opens new window) and HMC5883L (opens new window). You may choose the one you need at runtime using parameters.

Before the first measurement, this node performs initialization for the chosen magnetometer. Configuration settings are predefined in firmware and shown in the table below.

  1. HMC5883L (opens new window):
  • i2c bus,
  • Continuous-Measurement Mode with Normal measurement configuration,
  • the measurement rate is 30 Hz (15 Hz is the default),
  • adjustable publish rate up to 30 Hz using parameter,
  • number of samples is 2 (1 is the default),
  • the sensor field range is ± 1.3 Ga (by default), so digital resolution is 0.92 mG/LSb.
  1. RM3100 (opens new window)
  • SPI bus
  • Continuous Measurement Mode,
  • the measurement rate is 75 Hz (37 Hz is the default),
  • adjustable publish rate up to 75 Hz using parameter,
  • cycle count is 200 (by default), so the gain is 75 LSB/µT, sensitivity is 13 nT,
  • field Measurement Range is from -800 to +800 uT.

# 1.3. Auxiliary functions description

1.3.1. Led indication

This board has an internal led that may allow you to understand possible problems. It blinks from 1 to 10 times within 4 seconds. By counting the number of blinks you can define the code of current status.

Number of blinks Health Description
1 OK Everything is ok.
2 OK There is no RawCommand at least for the last 0.5 seconds, PWM state is reset to the default state.
3 WARNING This node can't see any other nodes in the CAN network, check your cables.
4 ERROR There is a problem with circuit voltage, look at the circuit status message to get details. It may happen when you power it from SWD, otherwise be careful with the power supply.
5 CRITICAL There is a problem with the periphery initialization level. Probably you load the wrong firmware.

# 1.4. Software update

The node doesn't support software uploading via CAN yet. Although the next generation of the device will be. We are going to use Kocherga bootloader (opens new window) in future. Right now the only way to upload the software is to use a programmer. Check programmer usage section (opens new window) for details.