A couple of weeks ago I had a scare when I crashed my quad in a wooded area and took an hour to find it. So today I added a Matek BM3IN1 lost model alarm. This works off a standard servo channel (the CC3D does not have a buzzer output) and sets off the alarm when the servo output value makes a large step change.
Since I am using S-Bus from the receiver to the flight controller, I couldn’t simply hook the BM3IN1 up to the receiver output. Instead, I needed to generate a servo output from the flight controller that was mapped to the radio control AUX 1 channel. Then I could assign AUX 1 to a switch on my transmitter, and this would trigger the lost model alarm. (It would work equally well with AUX 2, but by default Futaba uses that for flight mode).
It took me a while to figure out how to do this in Cleanflight 10. Actually, it’s very simple, although poorly documented (hence this post). Cleanflight has a CHANNEL_FORWARDING feature that can be activated on the bottom right of the Configuration tab of the Cleanflight Configurator (see below).
When CHANNEL_FORWARDING is enabled, the flight controller motor outputs for a quadcopter, which are normally found on PWM outputs 1-4, get shifted to outputs 3-6. The order remains the same, so motor 1 is now controlled by PWM 3, motor 2 by PWM 4, motor 3 by PWM 5 and motor 4 by PWM 6. Note that the CC3D only has 6 PWM outputs, and I don’t know what the mapping would be on a controller with eight PWM outputs.
This frees up PWM outputs 1 and 2, and Cleanflight forwards the AUX 1 channel to PWM 1 and AUX 2 to PWM 2. As far as I can tell, there is no processing of the channel values – whatever value the transmitter sends appears on the appropriate flight controller PWM output. Of course this is not only useful for a lost model alarm. One could use it for any function that is servo or ESC controlled (provided the flight controller can supply sufficient power for the servo).
Postscript
It appears that enabling BLACKBOX in the configuration tab prevents CHANNEL_FORWARDING from working correctly (in Cleanflight 10). For this and other reasons I ended up simply adding the BM3IN1 to one of the motor servo lines. Then, once it has been armed and disarmed again, it will start beeping after a minute. However since the description of how to use CHANNEL_FORWARDING is still correct, I will leave the post up in case anyone finds it useful.