Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Kiwi-RM3100 CAN Compass

Overview

The Kiwi-RM3100 is an external compass module based on the PNI RM3100 magnetometer, designed as a DroneCAN peripheral for ArduPilot-powered flight controllers. Built on the STM32F103 MCU, it connects to any CAN-enabled flight controller and provides high-precision heading data via the DroneCAN protocol.

The RM3100 sensor offers superior magnetic resolution and noise performance compared to common QMC5883L or HMC5843 compasses, making it well-suited for applications where accurate heading is critical — long-range wings, survey drones, and missions in magnetically noisy environments.

Firmware


Technical Specifications

Processor

  • MCU: STM32F103xB (ARM Cortex-M0, 72 MHz)
  • Flash: 128 KB
  • Crystal: 8 MHz external oscillator

Compass Sensor

  • Sensor: PNI RM3100
  • Interface: SPI (1 MHz)
  • Mounting orientation: ROTATION_PITCH_180

Communication

  • CAN bus — primary interface, DroneCAN protocol
  • CAN silent pin on PB5 (active low)

Serial Ports

PortFunctionPins
USART1GPS / generalPA9, PA10
USART2General purposePA2, PA3
USART3TelemetryPB10, PB11

Additional Interfaces

  • SPI2 spare bus (PB13/PB14/PB15) — available for additional sensors
  • AUX analog input on PA0

Indicators

  • Status LED on PC13 (active low)

ArduPilot Configuration

The Kiwi-RM3100 runs ArduPilot AP_Periph firmware. Once connected to the CAN bus, the flight controller auto-detects the compass.

Flight Controller Parameters

Enable CAN on the flight controller:

CAN_P1_DRIVER = 1
CAN_D1_PROTOCOL = 1   (DroneCAN)

The compass should appear automatically. Verify with:

COMPASS_DEV_ID

Pinout

CAN Connector

PinFunction
1CAN_H
2CAN_L
3VCC
4GND