Skip to content

Remote Control over SBUS

Link to module repo: Remote Control over SBUS


Overview

This repository supports a FrSky Taranis Q X7 remote control. Over SBus the remote control delivers 16 channels in total. A configuration file defines for each channel what signal it carries and also allows for very flexible scaling.

Further, there is a RcActivityTracker, which signals whenever the remote control sends messages exceeding a certain limit. This helps to suppress minuscule signals or simply noise.\ block.drawio

Configuration

A configuration file is given as following

Click to expand
{
    "remoteControl": {
        "interface":"SBUS",
        "sbus_serialPort":"/dev/ttyS5",
        "sbus_timeOutSec":0.1,
        "setChannels": [ 
            {
                "channel": 1,
                "type": "analog",
                "singleOutPos": 0,
                "range": [ 172 , 1811 ],
                "zeroOffset": 20,
                "inverted": false,
                "group": [
                    {
                        "type":"throttle",
                        "value":""
                    }
                ]
            },
            {
                "channel": 0,
                "type": "analog",
                "singleOutPos": 1,
                "range": [ 172 , 992, 1811 ],
                "zeroOffset": 20,
                "inverted": true,
                "group": [
                    {
                        "type":"twist",
                        "value": "angZ"
                    }
                ]
            },
            {
                "channel": 2,
                "type": "analog",
                "singleOutPos": 2,
                "range": [ 172 , 992, 1811 ],
                "zeroOffset": 20,
                "inverted": false,
                "group": [
                    {
                        "type":"twist",
                        "value": "linX"
                    }
                ]
            },
            {
                "channel": 3,
                "type": "analog",
                "singleOutPos": 3,
                "range": [ 172 , 992, 1811 ],
                "zeroOffset": 20,
                "inverted": true,
                "group": [
                    {
                        "type":"twist",
                        "value": "linY"
                    }
                ]
            },
            {
                "channel": 4,
                "type": "analog",
                "singleOutPos": 4,
                "range": [ 172 , 1811 ],
                "zeroOffset": 20,
                "inverted": false
            },
            {
                "channel": 5,
                "type": "analog",
                "singleOutPos": 5,
                "range": [ 172 , 1811 ],
                "zeroOffset": 20,
                "inverted": false
            },

            {
                "channel": 8,
                "type": "digital",
                "singleOutPos": 0,
                "values": [ 172 , 992, 1811 ],
                "range":  [ 100  , 100 , 100 ],
                "group": [
                    "tcpStates" 
                ]
            },
            {
                "channel": 9,
                "type": "digital",
                "singleOutPos": 1,
                "values": [ 172 , 992, 1811 ],
                "range":  [ 100  , 100 , 100 ],
                "group": [
                    "modeStates" 
                ]
            },
            {
                "channel": 10,
                "type": "digital",
                "singleOutPos": 2,
                "values": [ 172 , 992, 1811 ],
                "range":  [ 100  , 100 , 100 ]
            },
            {
                "channel": 11,
                "type": "digital",
                "singleOutPos": 3,
                "values": [ 172 , 992, 1811 ],
                "range":  [ 100  , 100 , 100 ]
            },
            {
                "channel": 12,
                "type": "digital",
                "singleOutPos": 4,
                "values": [ 172 ,  1811 ],
                "range":  [ 100  ,  100 ]
            },
            {
                "channel": 13,
                "type": "digital",
                "singleOutPos": 5,
                "values": [ 172 ,  1811 ],
                "range":  [ 100  ,  100 ],
                "group": [
                    "driveStates" 
                ]
            }

        ]
    }
}

Important

Make sure to override the setting for the port of the serial bus in your rover settings.