Link Search Menu Expand Document

VOXL 2 IO Developer Guide

Table of contents

  1. Overview
    1. Hardware
    2. Software
      1. High Level Idea
      2. Rumning on VOXL2
      3. Rumning on VOXL2 IO




  • A battery powers VOXL2 (M0054) through a Power Module (M0041), and the battery also powers the ESCs/Motors
  • VOXL2 J19 connects to VOXL2 IO J4 to provide both power and communications using a UART
  • VOXL2 IO connects to an RC receiver (either J2 or J3, depending on user’s receiver type)
  • VOXL2 IO J1 connects to a PWM breakboard board (M0022) and ‘communicates’ to the ESCs using PWM, which in turn spin the motors



High Level Idea

VOXL2 runs PX4 and VOXL2 IO runs PX4IO. They share a register map and keep it synchronized. The VOXL2 IO has a control loop that includes mixing, and reacts to updates that are from VOXL2s px4io driver which populates the register map based updates to subscriptions.

Rumning on VOXL2

  • On VOXL2 (M0054), the px4io driver runs on the sDSP/SLPI proc
  • The px4io driver creates a bit of a hybrid device which has a few similarities as pwm_output device
  • The voxl-px4.config script starts the detection and configuration process, including loading a mixer, which actually runs on VOXL2 IO (M0065)
  • The px4io driver subscribes to various topics and updates the ‘registers’ on the VOXL2 IO board by sending commands over UART following a simple protocol

Rumning on VOXL2 IO

  • Upon bootup, VOXL2 (M0054) detects the VOXL2 IO (M0065) board, and configures the VOXL2 IO board including loading of a mixer
  • A control loop takes place, which involves checking various flags, updating status based upon updates from VOXL2, checking for inputs, handling outputs, etc