ArduPilot and UAVCAN 2019: The ALL-UC4H Copter

Hey Folks,

the UAVCAN for Hobbyists or UC4H project has reached a milestone:

It allows us now to build an ArduPilot-based multicopter/drone, which uses only CANbus as communication backbone, and UAVCAN messages. No SPI, no I2C, no PWM, no ADC, only CANbus, UAVCAN and UC4H components. Moreover, and probably more relevant, this ALL-UC4H copter also provides highly useful and unprecedented features and functions, not available otherwise.

Also, the UC4H project is getting 2 years old now, and it’s a good time to celebrate its 2nd anniversary.

So I’ve decided to present the ALL-UC4H copter and its components and many features in a series of video episodes. This in particular should also serve as a demonstration of what’s possible with ArduPilot and UAVCAN!

As usual, have fun, Olli


project web page:
project git repository:

Episode I: Intro

  • Welcome blabla
  • 2nd anniversary celebration
  • overview of concept and features&functions
  • presentation of my ALL-UC4H copter
  • flight demo

video is in the above

Episode II: Parts and Pieces

  • brief walk through the hardware pieces
  • comments on SLCAN adapter
  • comments on wires and wiring
  • discussion of availability of hardware pieces
  • required software and firmware

Episode III: Cube Carrier

Content Episode IIIa:

  • UC4H Cube Carrier ports and connectors
  • UC4H Cube Carrier power scheme
  • IMX6/Sololink variant

Content Episode IIIb:

  • power schemes more general
  • CAN bus usage scenarios
  • ArduPilot CAN bus parameters, configuration of the cube

Episode IV: GPS-Mag-Baro-LED Nodes

  • UC4H GPS Carrier Board, features and design aspects
  • discussion of UART Tunnel vs gnss.Fix message
  • configuration of the GPS-Mag-Baro-LED nodes
  • configuration of ArduPilot parameters

Episode V: PowerBrick

  • UC4H PowerBrick
  • discussion of high-precision current measurement, charge and energy counting
  • discussion of GenericBatteryInfo vs BatteryInfo messages
  • configuration of the PowerBrick node
  • configuration of ArduPilot BATT parameters
  • log example

Episode VI: ESCs and OreoLEDs

Content Episode VIa:

  • UC4H ESCs and KISS carrier
  • explaining RawCommand UAVCAN message
  • node configuration (manual method)
  • configuration of ArduPilot parameters

Content Episode VIb:

  • ESC telemetry
  • MAVLink, DataFlash, BattMonitor (type 84)
  • log examples
  • use cases

Content Episode VIc:

  • OreoLEDs
  • installation
  • node configuration
  • practical demonstration

Episode VII: Display and Notifiers

  • Display
  • IndicatorLED
  • Notify lights
  • configuration
  • practical demonstration

Episode VIII: RangeFinder

  • RangeFinder TFMini, VL53L1x
  • Tunnel vs Distance vs range_sensor.Measurement
  • configuration of Rangefinder node
  • configuration of ArduPilot RNGFND parameters
  • log example

Very cool. For a totally off the shelf solution you could probably use an off the shelf carrier with canbus connectors.

Well, the mRo 2.1 has a CAN plug, and we have the option of not populating the headers :slight_smile:

Not quite as cool as that UC4H carrier with the piggyback IMX6 :slight_smile:

as said in episode III, any flight controller with a CAN bus port would be a viable option. This includes all carriers and also the mRo2.1, which all, AFAIK, use the standard JST-GH plug.
The mRo2.1 has the “issue” that its CAN port is not compatible, i.e., the signals on it do not have the standard Gnd,CANL,CANH,Vcc sequence, but is Gnd,CANH,CANL,Vcc. So some tinkering is required with it, but not too bad.
Plenty of excellent options. :slight_smile: No reason not to go UAVCAN/UC4H :smiley:

Episode V: PowerBrick added
Episode VII: Display and Notifiers added

Just checked, and the latest variants, including the 777 have the correct pinout, just fyi :slight_smile:, but a little less tinkering

Episode VIII: RangeFinder added

1 Like

Episode VI: ESCs and OreoLEDs added.

this completes the series. All done.


1 Like