MicoAir
Docs directory
Table of contents

NxtPX4v2 User Manual

Product Overview

NxtPX4v2 is a compact, high-performance flight controller developed from the HKUST Aerial Robotics / Nxt hardware family. It features an STM32H743 MCU, dual BMI088 IMUs, an SPL06 barometer, and microSD storage, along with 7 UARTs, 8 PWM outputs, external I²C and SPI buses, and independent 5 V / 12 V BECs. The flight controller supports both ArduPilot and PX4 and is well suited to UAV projects that require substantial processing performance, redundant IMU sensing, and open hardware resources.

Project on GitHub

Hardware on GitHub

Front of the NxtPX4v2 flight controller

Back of the NxtPX4v2 flight controller

Key Features

ItemSpecification
Main MCUSTM32H743VIH6, 480 MHz, 2 MB Flash
IMUDual BMI088 IMUs
BarometerSPL06
Data loggingmicroSD card slot
Serial ports7 UARTs
Motor / servo outputs8 PWM outputs
Expansion buses1 external I²C, 1 external SPI, and 1 SWD interface
Analog sensing2 ADC channels for voltage and current monitoring
USBUSB Type-C
Regulated outputs5 V / 2.5 A and 12 V / 2.5 A
Firmware supportArduPilot and PX4
Mounting pattern20 × 20 mm, approximately 3 mm hole diameter
Overall dimensionsApproximately 27 × 32 × 8 mm
WeightApproximately 6.5 g

Purchase

MicoAir Tech Store

Hardware Specifications

Processor and Sensors

The STM32H743VIH6 provides a 480 MHz clock speed and 2 MB of Flash. Two BMI088 IMUs provide independent inertial measurements for sensor-consistency checks and redundancy. The SPL06 provides barometric altitude measurements.

NxtPX4v2 does not include an onboard magnetometer. When heading information is required, connect a GPS module with an integrated magnetometer or a standalone magnetometer through the external I²C bus.

Interfaces and Outputs

  • 7 UARTs for GPS, telemetry, digital video, receivers, ESC telemetry, and other devices.
  • 8 PWM outputs, each usable for a motor or servo.
  • 1 external I²C bus for magnetometers, airspeed sensors, and other devices.
  • 1 external SPI bus for advanced expansion.
  • 3 AUX GPIOs for custom functions.
  • 2 ADC channels for voltage and current sensing.
  • microSD for flight-log storage.
  • SWD for low-level debugging and recovery.

Power and Mechanical Specifications

The flight controller provides regulated 5 V / 2.5 A and 12 V / 2.5 A outputs. The power input supports 3–6S batteries.

Dimensions and Installation

NxtPX4v2 dimensions

Installation recommendations:

  1. Use 20 × 20 mm soft-rubber standoffs or another vibration-isolated mounting structure.
  2. Install the board according to its arrow. If the board is rotated, configure the correct orientation in the firmware.
  3. Keep GPS antennas, power cables, and digital video-transmitter antennas away from the IMU area.
  4. Leave enough service clearance for the USB Type-C connector and microSD card slot.
  5. Dual IMUs improve diagnostic capability but do not replace proper mechanical vibration isolation.

During the initial installation, take clear photos of the front and back of the flight controller and all wiring harnesses. These photos are useful later when checking connector orientation, wire order, or the hardware revision.

Interfaces and Power

Interface Definitions

NxtPX4v2 top-side connector pinout

NxtPX4v2 bottom-side connector pinout

Typical Wiring

NxtPX4v2 wiring diagram

Wiring principles:

  • Connect a peripheral's TX to the flight controller's RX, and its RX to the flight controller's TX.
  • Every serial peripheral must share a common ground with the flight controller.
  • Connect the primary GPS to UART1 and an external magnetometer to the external I²C bus.
  • Connect the DJI O3 to the dedicated UART3 interface, checking the 12 V pin and wire order before connection.
  • Connect an SBUS or CRSF receiver to UART5.

NxtPX4v2 does not enable peripheral power outputs when powered only through USB. If the ground station can connect to the flight controller but cannot detect an external magnetometer or other peripheral, connect the main battery first and then reconnect USB for diagnosis.

Serial-Port Mapping

ArduPilot ParameterHardware InterfaceDefault / Recommended Use
SERIAL0USBUSB virtual serial port
SERIAL1UART2TELEM1 / telemetry
SERIAL2UART4TELEM2 / telemetry
SERIAL3UART1GPS1
SERIAL4UART3DJI O3
SERIAL5UART7 RXESC telemetry
SERIAL6UART5RC input
SERIAL7UART8TELEM3 / other serial devices
PX4 Device NameHardware InterfaceDefault / Recommended Use
USBUSBUSB virtual serial port
GPS1UART1Primary GPS
TELEM1UART2Telemetry
GPS2UART3DJI O3 / secondary GPS, depending on airframe configuration
TELEM2UART4Telemetry
RCUART5SBUS / CRSF receiver
TELEM3UART7ESC telemetry or serial expansion
TELEM4 / SERIAL4UART8Telemetry or other serial devices

PWM Outputs

NxtPX4v2 provides 8 PWM outputs with the following hardware timer groups:

OutputMCU PinTimerGroup
M1PE9TIM1_CH1Group 1
M2PE11TIM1_CH2Group 1
M3PE13TIM1_CH3Group 1
M4PE14TIM1_CH4Group 1
M5PB10TIM2_CH3Group 2
M6PB11TIM2_CH4Group 2
M7PB0TIM3_CH3Group 3
M8PB1TIM3_CH4Group 3
  • M1–M8 support DShot.
  • All 8 outputs support bidirectional DShot under ArduPilot.
  • Channels in the same group should generally use compatible output protocols and frequencies.

Receiver

UART5 is the default RC interface and supports serial receivers using SBUS, CRSF, and similar protocols.

SBUS

  • Connect the signal wire to the UART5 RC input.
  • Use an appropriate power output from the flight controller and connect GND.
  • ArduPilot uses SERIAL6_PROTOCOL=23 by default.
  • PX4 can use RC_INPUT_PROTO=Auto for automatic detection.

CRSF / ELRS

CRSF / ELRS is a high-speed bidirectional protocol and requires both UART5 TX and RX.

If the receiver powers on but provides no channel data, first check the protocol, TX/RX direction, and serial-port mapping.

Battery Monitoring, Magnetometer, and I²C

Battery Monitoring

The ArduPilot firmware defaults are:

ParameterDefaultDescription
BATT_MONITOR4Analog voltage and current monitoring
BATT_VOLT_PIN4Voltage-sensing channel
BATT_CURR_PIN8Current-sensing channel
BATT_VOLT_MULT10.2Voltage-divider factor
BATT_AMP_PERVLT20.4Current-sensor conversion factor

Current-sensor scaling can vary between power modules. Calibrate with a multimeter and a known load rather than copying factors from another flight controller.

External Magnetometer

The flight controller does not include a magnetometer. Connect an external magnetometer to I²C4:

  • SCL → PD12
  • SDA → PD13

External sensors may not receive power when the board is powered only through USB. If the magnetometer is not detected, connect the main battery to enable peripheral power, then connect USB and the ground station.

Flight-Controller Firmware

ArduPilot

  • Official hardware target: NxtPX4v2
  • Included in the official hardware support list starting with ArduPilot 4.6.0.
  • Supports online firmware flashing through Mission Planner and MicoConfigurator.

Related links:

PX4

  • PX4 board target: hkust_nxt-dual
  • Bootloader target: hkust_nxt-dual_bootloader
  • MicoConfigurator can flash PX4 firmware online in DFU mode.

Official PX4 firmware build guide

Build the default firmware from the PX4 source:

make hkust_nxt-dual

Build the bootloader:

make hkust_nxt-dual_bootloader

Related links:

Troubleshooting

External Magnetometer Is Not Detected with USB Power Only

This is a common effect of the peripheral-power state. Connect the main battery first to enable the external 5 V / 12 V rails, then connect USB and the ground station and run detection again.

Appendix A: Pinout Table

FunctionMCU PinAlternate Function / Description
USB DMPA11OTG1 DM
USB DPPA12OTG1 DP
USB VBUS detectionPD0USB power detection
Red LEDPD15Status indicator
Green LEDPD11Status indicator
Blue LEDPB15Status indicator
GPS1 TXPA9USART1_TX
GPS1 RXPA10USART1_RX
TELEM1 TXPD5USART2_TX
TELEM1 RXPD6USART2_RX
DJI O3 TXPD8USART3_TX
DJI O3 RXPD9USART3_RX
TELEM2 TXPB9UART4_TX
TELEM2 RXPB8UART4_RX
RC TXPB13UART5_TX
RC RXPB12UART5_RX
SBUS inverter controlPD14SBUS_INV
ESC telemetry RXPE7UART7_RX
TELEM3 TXPE1UART8_TX
TELEM3 RXPE0UART8_RX
Internal I²C SCLPB6I²C1_SCL, onboard barometer
Internal I²C SDAPB7I²C1_SDA, onboard barometer
External I²C SCLPD12I²C4_SCL
External I²C SDAPD13I²C4_SDA
M1PE9TIM1_CH1
M2PE11TIM1_CH2
M3PE13TIM1_CH3
M4PE14TIM1_CH4
M5PB10TIM2_CH3
M6PB11TIM2_CH4
M7PB0TIM3_CH3
M8PB1TIM3_CH4
AUX1PA4GPIO 81
AUX2PC1GPIO 82
AUX3PC0GPIO 83
Voltage ADCPC4Battery-voltage sensing
Current ADCPC5Battery-current sensing
microSD CLKPC12SDMMC clock
microSD CMDPD2SDMMC command
microSD D0PC8SDMMC data
microSD D1PC9SDMMC data
microSD D2PC10SDMMC data
microSD D3PC11SDMMC data
IMU1 SPI SCKPA5SPI1_SCK
IMU1 SPI MISOPA6SPI1_MISO
IMU1 SPI MOSIPA7SPI1_MOSI
IMU1 gyro CSPA3BMI088 chip select
IMU1 accelerometer CSPA2BMI088 chip select
External SPI SCKPB3SPI3_SCK
External SPI MISOPB4SPI3_MISO
External SPI MOSIPB2SPI3_MOSI
IMU2 SPI SCKPE2SPI4_SCK
IMU2 SPI MISOPE5SPI4_MISO
IMU2 SPI MOSIPE6SPI4_MOSI
IMU2 gyro CSPC2BMI088 chip select
IMU2 accelerometer CSPC13BMI088 chip select
SWDIOPA13SWD debugging
SWCLKPA14SWD debugging