How to Write your own Flight Controller Software — Part 8

A light weight Arduino implementation of the MultiWii Serial Protocol

David Such
13 min readApr 30, 2022

--

ReefwingMSP is a light weight Arduino implementation of the MultiWii Serial Protocol. It is available for download via the Arduino IDE Library Manager and the source code may be found on our GitHub Repository.

Let’s talk about serial communication for our drone. This is required for easy configuration, simulation, telemetry, black box recording and On Screen Display (OSD) for First Person View (FPV) goggles. You may not need all this functionality but it makes sense to design for the future.

Figure 1. The Reefwing Configurator (SBUS Tab)

The Reefwing Serial Protocol (NSP)

Initially we wrote our own serial protocol for communicating with the Reefwing Configurator (Figure 1). This allowed us to calibrate the IMU and ESC’s, tune the PID control loops and visualise the flight controller data.

Figure 2. Reefwing Serial Protocol

The Reefwing Serial Protocol (Figure 2) consisted of a single character header (start byte), ‘<’, a single character for the command, request and response, followed by the data separated by ‘/’. The end of message was identified by a ‘>’ (the stop byte).

This worked ok and was very light weight but as we added more functionality to the Reefwing Configurator, the single character used for command, request and response ID became convoluted. The Reefwing Serial Protocol also had no error checking and would only work with our configurator. Rather than continue to evolve the RSP, we decided to use a subset of the industry standard, open source, MultiWii Serial Protocol.

MultiWii Serial Protocol (MSP) — Version 1

The MultiWii Serial Protocol was originally created for use with the MultiWii Configurator (a Processing…

--

--

David Such

Reefwing Software · Embedded Systems Engineer · iOS & Android Development · Robotics · Drones · Arduino · Raspberry Pi · Flight Control